NDepend

Improve your .NET code quality with NDepend

Mentoring_Software_Developers_as_an_Architect

Mentoring Software Developers as an Architect

A while back we discussed the unique career path architects have to travel. We wrote that article for developers who want to advance their careers and aren’t sure which way to go. Let’s revisit that path and talk about how you, as a manager or architect, can help developers along the way.

What Is an Architect?

I used to work with a guy that answered questions like this with “How long is a piece of string?” Eventually, he tired of hearing me answer with “About that long!” and stopped. But that’s another story.

As we discussed here, the title “architect” means many things to different people. The roles they fill in different organizations vary. So, depending on who you are and where you work, it’s the best job in the world or the last place you want to be.

Let’s start with Wikipedia’s definition of a software architect.

A software architect is a software expert who makes high-level design choices and dictates technical standards, including software coding standards, tools, and platforms. The leading expert is referred to as the chief architect. (Wikipedia, The Free Encyclopedia, s.v. “Software architect”, https://en.wikipedia.org/wiki/Software_architect

If you’re like me, you bristle at “dictates,” but the sad fact is that’s the role they fill in some companies. But the fascinating bit here is the word “expert.” Expert has as many different meanings as segments of string have lengths.

How can you mentor someone to be an expert in a vaguely defined role? If you’re only interested in creating an architect that fits into your organization, that’s easy. Look at your org chart and develop an employee with the skills needed to fill it. But, what if you’re trying to be more altruistic and help your employee or coworker, too? Well, then you need to try to build a well-rounded software professional.

Developer Skills

Recently, we asked the question “Should Architects Write Code?” (Spoiler alert: yes.) When you think of architects that dictate technical standards, you probably think of the architect that doesn’t write code. You think of the guy who spends his days in Word and Confluence.

Does an architect need to be the best developer in the room? Will the best developer always make the best architect? In my experience, the answer to both of those questions is no. The developer wants to continue getting better at writing code. It’s what she loves doing; that why she’s the best! There’s also a good chance that she doesn’t have the skills and patience for sitting in meetings. She’s not interested in explaining technology to people that don’t love it.

Maintaining Skills

A good architect needs to understand software and how it’s created. But the best architect probably wasn’t the best or happiest developer. She understands coding when she makes a move from developer to architect, but, as Sylvia explained in her post, she might lose touch with the development process and tools when PowerPoint and the calendar take over. Enterprise architects often spend their days in meetings and writing policies. How can you mentor a software developer to stay sharp in advance?

One approach is to help the candidate “rehearse” for being in the position of engaging in a project without being a developer. Have her take part in the design and then move on to another project. As the project progresses she’ll continue in an architecture role, but still can’t write any code.

How does she stay engaged? What kind of feedback can she offer? How frustrated is she with not being able to get her hands dirty? This is what being an architect might feel like. Some people excel at it. Others may decide it’s not their thing. Better she learns that now, and not after making a career change.

Application and Software Design Skills

Some organizations have a different definition of the architect’s role. They’re members of the software development team. They work closely with developers to maintain software quality, reusability, and efficiency. Folks often call this role “application architect.”

Architects that are fortunate enough to land this role don’t have to worry about their skills getting stale. Instead, they need to develop another set of skills. Here again, the fastest or best developer is not a shoo-in for the architect position. An application architect needs to understand how to evaluate and manage a code base.

NDepend’s tools are designed to help an application architect. An aspiring application architect needs to understand code metrics and how to visualize a code base. Rather than writing about standards and best practices, this style of an architect is very hands on. She needs to have the ability to help check code, put best practices into action, and work with developers to improve their software. This means understanding development and, just as important, understanding people too.

If this role exists in your organization, the facilities for mentoring are already there. Developers can take part in code evaluations and in defining solutions. They can learn how to use the tools and play a role in working with other developers in an architect role.

Enterprise Design Skills

An application architect, as we’ve defined it, handles a codebase, or a set of codebases. An enterprise architect’s area of responsibility is higher up the stack. In our earlier article, we discussed solutions and enterprise architects as separate areas. I’m grouping them here.

These architects focus on solving departmental or enterprise problems. Rather than focusing on coding and development tools, this role is more involved in business problems. The architect will spend as much time, if not more, with stakeholders defining requirements and discovering new ones.

Preparation for this role requires a great deal of focus on organizational and people skills. There’s a lot of overlap with project managers and product owners. So, having your developer spend time shadowing them might be a good idea. And even though many developers hate to focus on business processes, it’s useful to spend time learning how to manage and appreciate a project.

At the same time, an enterprise architect needs to acquire and maintain an understanding of technology trends and their practical application. It’s critical that she learns to retain that knowledge.

Start A Program

There’s no set career path for software architects, and that’s both a good and a bad thing. It’s good in that many developers can choose their path as they go and adapt to new trends and opportunities. But, since there is no set path, it’s easy to never get started.

As a leader, you own the responsibility to help your people grow and reach their full potential.

Contributing Author

Eric Goebelbecker has worked in the financial markets in New York City for 25 years, developing infrastructure for market data and financial information exchange (FIX) protocol networks. He loves to talk about what makes teams effective (or not so effective!)

Comments:

  1. Hi, thanks for this post. I liked that you identified different kinds of architects, because, indeed, it’s very often a catch-all title. I’ve got a question regarding the Application Architect role you discribe. Have you got best practices to manage to split your time between coding and architect activities?

  2. Hi Phillippe. Thanks for asking.

    I don’t know if there’s a specific number that could be called a best practice.

    It’s going to have to enough to keep them engaged with the codebase and the project, so coding needs to be a regular activity. Not only to keep skills fresh but to understand why the codebase is changing, too. So I’d say this isn’t a part-time coding position, just not a full-time one.

Leave a Reply

Your email address will not be published. Required fields are marked *