Skip to main content

Author: markozivanovic

Coders Code, AI Codes Faster. Developers Still Matter.

It’s 2 a.m. I’m halfway through a beer, sitting across from my good friend. We’ve done this many times, arguing about tech, late into the night, each trying to convince the other they’re wrong. Sometimes it’s about programming languages, sometimes about remote work, sometimes about who should’ve never been promoted.

Tonight it’s AI (recently, it’s only AI). And it’s getting heated.

He’s at the edge of his seat, waving his hands like some sort of prophet of doom. “All software engineers are screwed,” he says. “AI is going to take over everything. You’ll see.”

I lean back, take a sip, and shake my head. “Not all of us,” I say. “Just the coders.”

That’s when things got interesting.

Coders vs Developers (Yeah, Again)

These words get thrown around like they mean the same thing. Coder, programmer, developer. It all kind of blends together, especially in job titles and HR speak.

But for the sake of this post, I’m going to draw a line.

  • Coders are people who only write code. They take a ticket, search Stack Overflow (or nowadays, paste it into ChatGPT), patch something together, and call it a day
  • Developers are people who build software. They think in systems. They understand design decisions, trade-offs, and long-term impact. They don’t just solve problems, but they figure out the right problems to solve.

Both write code. But only one knows what they’re doing beyond the code.

And AI is very good at replacing coders.

Why Coders Should Be Worried

Let’s be real. In the last few years, especially during the COVID hiring boom, the tech industry pulled in a ton of people who honestly weren’t ready.

Demand was high. Supply was low. Companies were desperate. So people with very little understanding of software engineering fundamentals got hired fast. Some learned the basics from bootcamps. Some jumped in from other industries. Some just happened to be in the right place at the right time.

Now, with AI tools improving and the hype settling down, a lot of those folks are being laid off.

But here’s the thing: AI isn’t causing the layoffs. The layoffs are happening because many of those roles never had much depth in the first place.

If your whole job was taking a vague ticket and gluing together some JavaScript you barely understood, then yeah, you’re replaceable. Sorry if I sound rough, but it’s true.

Developers Are Still Needed — More Than Ever

And here’s where I pushed back hard during our argument. Good developers are not going anywhere. In fact, they’re the ones making all this AI progress possible.

They’re building the tools, improving the workflows, designing the systems that scale. They understand trade-offs. They can lead teams through messy migrations. They know what needs to be done when the product, business, and tech all pull in different directions.

AI can autocomplete a function. It can’t design a resilient system that handles real-world chaos. It can suggest a fix. It can’t mentor a junior engineer or navigate a political roadmap meeting.

AI is fast, sure. But good developers are smart, adaptable, and connected to the bigger picture.

AI Is Just Another Tool

Every time a new tool comes around, people panic. We saw this with high-level languages, IDEs, cloud computing, no-code platforms. Now it’s AI.

You can argue it’s different, and its potential is unprecedented. Yes, but it’s still just a potential at this point. We’re still figuring out how to use it effectively and make it work for everyone. Most importantly, we’re figuring out if we can make it work for everyone.

But developers don’t panic. They adapt. They look at the tool, figure out how to use it, and make their work better. That’s what separates them from coders who just want to copy/paste their way through the day.

Wrapping Up

It’s almost 4 a.m. now. The bar’s closing soon (it’s late even for the hipsterish place in the middle of Berlin), and neither of us is totally convinced. But I can tell he’s thinking about it.

So here’s the takeaway:

Coders are in trouble. Developers are not. And the more you understand the whole system, the code, the business, the people, the safer you are.

Falsehoods Programmers Believe About the IT Industry

After a long time, I once again stumbled upon the very popular article “Falsehoods Programmers Believe About Names”.

I liked the format, and I’ve been thinking a lot about the state of our industry recently, so I scribbled a few falsehoods programmers believe about it! Here it goes…

Falsehoods Programmers Believe About the IT Industry

  1. Job titles accurately reflect a programmer’s experience and skill level.
  2. Technology is all that matters; soft skills are secondary.
  3. Big tech companies are the best places to work.
  4. Certifications are essential to prove skills.
  5. Salaries are a measurement of programmer’s skill.
  6. Programming languages and tools are the most important career decisions.

What falsehood(s) would you add to this list? Would you remove any?

Setting and Managing Expectations

Setting and managing expectations is key for any team, especially in software development. Things run smoothly when everyone knows their roles and what’s expected of them. This is even more important for small to medium-sized businesses (SMBs) where resources are tight and every team member’s contribution counts.

Without clear expectations, tasks can overlap, accountability can falter, and productivity can drop. It’s not just about defining roles but also about ensuring everyone knows what’s expected of them. When team members understand their goals, they take ownership of their work, deliver high-quality results, and drive the project’s success.

One common mistake is limiting team members by overly defining their responsibilities. Instead of guiding them, this approach boxes them in, restricting their communication and operation. A better way is to clearly define expectations and responsibilities, allowing for more communication and operation freedom. This helps everyone access the best information to make intelligent decisions without needing extra processes to guide communication or set constraints.

Setting clear expectations starts with open communication. Regular check-ins and team meetings help ensure everyone is on the same page. These conversations should cover what’s expected, current progress, and any adjustments needed. It’s also important to provide feedback regularly so team members know how they’re doing and what they can improve.

Managing expectations isn’t a one-time task. It’s an ongoing process that involves continuously communicating and adjusting goals as needed. This means being flexible and willing to change plans based on feedback and new information. Doing this keeps the team aligned and focused on the project’s objectives.

Regularly reviewing and updating expectations keeps everyone aligned with the company’s goals. It’s not enough to set expectations at the start of a project and forget about them. They need to be revisited and adjusted as the project evolves. This helps to address any issues early and keeps the project on track.

To ensure you’re setting and managing expectations effectively, here are some heuristic questions to ask:

  • Do team members understand their roles and what’s expected of them?
  • Are goals and expectations communicated clearly and regularly?
  • Is there a process for providing feedback and making adjustments?
  • Are expectations aligned with the company’s goals and project objectives?
  • Is there flexibility to adjust expectations based on feedback and new information?
  • Are regular check-ins and reviews part of the routine?

You can keep your team aligned, motivated, and productive by asking these questions. Clear and well-managed expectations lead to a more organized and efficient work environment, helping your software development projects run smoothly.

Effective communication is vital to setting and managing expectations. Keep lines of communication open, provide regular feedback, and be flexible with your plans. This will help ensure your team knows what’s expected and can deliver their best work.

Effective Communication Strategies

Effective communication is the backbone of any successful team, and software development is no exception. For small to medium-sized businesses (SMBs), clear and efficient communication keeps projects on track, aligns team members, and ensures goals are met. Unlike larger organizations with more resources and structured processes, SMBs need to be extra careful to avoid miscommunication that can lead to inefficiencies and conflicts.

Clear communication helps everyone understand their tasks, goals, and the overall vision of the project, reducing confusion and aligning the team’s efforts. Open lines of communication foster collaboration, allowing team members to share ideas, provide feedback, and support each other.

This collaborative environment is key to innovative and effective problem-solving. Efficient communication streamlines workflows and minimizes delays. When information flows smoothly, teams can work more efficiently and avoid bottlenecks. When team members feel heard and understood, it’s easier to address issues and find mutually agreeable solutions.

Implementing Effective Communication Strategies

Regular Team Meetings

Schedule regular team meetings to keep everyone updated on project progress, discuss any issues, and plan the next steps. These meetings should be structured but also allow time for open discussion. Weekly or bi-weekly meetings are a good frequency to start with.

Action Steps:

  1. Set a clear agenda before each meeting.
  2. Encourage every team member to contribute.
  3. Summarize key points and action items at the end.

Daily Standups

Daily standup meetings are short, focused meetings where team members share what they accomplished yesterday, what they plan to do today, and any blockers they are facing. This keeps everyone aligned and aware of each other’s work.

Action Steps:

  1. Limit standups to 15 minutes.
  2. Keep the focus on immediate tasks and issues.
  3. Follow up on blockers immediately after the meeting.

Clear and Concise Messaging

Encourage team members to communicate clearly and concisely. Avoid jargon and overly complex explanations. Ensure that messages are straightforward and to the point.

Action Steps:

  1. Promote the use of plain language.
  2. Encourage brief and direct communication.
  3. Provide examples of effective communication.

Leveraging Communication Tools

Use communication tools such as Slack, Microsoft Teams, or other collaboration platforms to facilitate real-time communication. These tools help keep conversations organized and accessible to all team members.

Action Steps:

  1. Set up channels for different projects and topics.
  2. Use status updates and notifications wisely.
  3. Encourage the transparent use of IM tools (avoid using private channels and messages).

Maintaining Documentation

Maintain clear and up-to-date documentation for processes, guidelines, and project details. This ensures that everyone has access to the necessary information and can refer back to it as needed.

Action Steps:

  1. Use shared platforms like Confluence, Notion, or Google Docs.
  2. Regularly update the documentation with the latest information.
  3. Assign a team member to review and maintain documentation (plan and block time for it).

Regular Feedback Mechanisms

Implement regular feedback mechanisms, both formal and informal. Encourage team members to provide constructive feedback and create an environment where they feel comfortable doing so.

Action Steps:

  1. Schedule regular one-on-one feedback sessions.
  2. Use anonymous surveys for more candid feedback.
  3. Act on the feedback received to show its value.

Promoting Active Listening

Promote active listening within the team. This means truly paying attention to what others are saying, asking clarifying questions, and responding thoughtfully. Active listening helps ensure that everyone feels heard and understood.

Action Steps:

  1. Train team members on active listening techniques.
  2. Practice active listening in meetings and one-on-ones.
  3. Provide feedback on listening skills during performance reviews.

Heuristic Questions for Effective Communication

To ensure you are using effective communication strategies, consider these heuristic questions:

  • Are our team meetings structured and purposeful?
  • Do daily standups keep everyone aligned and aware of each other’s work?
  • Is our messaging clear, concise, and free of unnecessary jargon?
  • Are we effectively using communication tools to facilitate real-time collaboration?
  • Is our documentation comprehensive, up-to-date, and accessible?
  • Do we have regular feedback mechanisms in place?
  • Are we promoting and practicing active listening within the team?

Managing High Performers

High-performing developers are your most valuable asset, and you should treat them as such. They drive innovation, set the standard for excellence, and often lead by example. However, managing high performers requires a strategic approach to ensure they remain motivated, engaged, and continuously challenged. A common mistake organizations make is not managing their highest performers. The thinking is always the same: Why fix something that’s not broken?

While high performers don’t need the detail and attention of lower performers or their junior colleagues, ensuring there’s a managing plan in place for them can make or break your company.

This article provides actionable steps for managing and retaining high-performing developers, ensuring they continue contributing to your organization’s success.

Understanding High Performers

Before diving into the strategies, we must define the characteristics of high performers:

  1. Consistently Exceeding Expectations: High performers consistently deliver exceptional results, often exceeding their defined roles.
  2. Proactive and Innovative: They take initiative, suggest new ideas, and find creative solutions to complex problems.
  3. Continuous Learners: High performers always seek opportunities to learn and grow their skills.
  4. Natural Leaders: They often mentor others and lead by example, even if they don’t hold formal leadership positions.

Actionable Strategies for Managing High Performers

I broke down managing high performers into six categories: regular and constructive feedback, setting challenging goals, offering growth opportunities, recognizing and rewarding contributions, fostering autonomy and trust, and finally, providing a clear vision and purpose.

The sections below break down each category into specific actions you can implement in your organization’s management workflow.

Provide Regular and Constructive Feedback

  • Frequent Check-ins: Schedule regular one-on-one meetings to provide feedback and discuss progress. This should be more frequent than the standard performance review cycle.
  • Specific Praise: Recognize and praise particular achievements. Highlight the impact of their work on the team and the organization.
  • Constructive Criticism: Offer constructive feedback to help them improve. High performers value feedback that helps them grow.
  • Implementation Tip: Use tools like Slack for quick, informal feedback and platforms like 15Five for more structured, weekly check-ins.

Set Challenging Goals

  • Stretch Assignments: Assign projects that push their boundaries and require them to develop new skills.
  • Personal Development Goals: Work with them to set personal and professional development goals. Ensure these goals are ambitious yet achievable.
  • Implementation Tip: Use SMART criteria (Specific, Measurable, Achievable, Relevant, Time-bound) for setting goals. Platforms like Asana or Trello can help track these goals.

Offer Opportunities for Growth

  • Professional Development: Provide access to courses, conferences, and workshops. Allocate a budget for continuous learning.
  • Mentorship Programs: Encourage them to mentor junior developers. This helps the mentees and reinforces the high performer’s leadership skills.
  • Career Pathing: Discuss and plan their career path within the organization. Show them the potential for advancement and new responsibilities.
  • Implementation Tip: Create a professional development plan for each high performer and review it regularly during one-on-ones.

Recognize and Reward Contributions

  • Public Recognition: Acknowledge their achievements in team meetings, company newsletters, or internal communication platforms.
  • Monetary Rewards: Consider bonuses, salary increases, or stock options as tangible rewards for their contributions.
  • Non-Monetary Rewards: Offer perks like extra vacation days, flexible working hours, or a choice of projects.
  • Implementation Tip: Implement an employee recognition program using platforms like Bonusly to make recognition a regular part of your company culture.

Foster Autonomy and Trust

  • Delegate Responsibility: Give them autonomy over their projects. Trust them to make decisions and manage their tasks.
  • Encourage Innovation: Create an environment where they feel safe to experiment and take calculated risks.
  • Implementation Tip: Use project management tools like Jira or Monday.com to delegate tasks and track progress without micromanaging.

Provide a Clear Vision and Purpose

  • Communicate the Vision: Regularly communicate the company’s vision and how their work contributes to the larger goals.
  • Involve Them in Decision-Making: Involve high performers in strategic decisions and solicit their input on important matters.
  • Implementation Tip: Hold quarterly meetings to discuss the company’s vision and strategy and their role in achieving these objectives.