59

I work at a large company where technical people fall roughly in one of these categories:

  1. A developer on a scrum team who develops for a single product and maybe works with other teams that are closely related to the product.
  2. An architect who is more of a consultant on multiple teams (5-6) and tries to recognize commonalities between team efforts that could be abstracted into libraries (architects do not write the library code, however). This architect also attends many meetings with management and attempts to set technical direction.

In my company the architect role is where most technical people move into as the next step in their career.

My questions are: Do most companies work such a way that their highest paid technical people are far removed from writing code? Is this a natural tendency for a developer's career? Can a developer have it all (code AND set direction?)

4 Answers 4

77

Do most companies work such a way that their highest paid technical people are far removed from writing code?

Most bad companies. There is a natural trend for more responsibility to involve less code writing and more focus on other aspects of software development. That said, it's very common for technical folks to lose touch with what is common/best/possible if they don't spend time actually coding. This has a disasterous effect on the company.

Is this a natural tendency for a developer's career?

Yes. In the end, a person can help the product a lot more by mentoring, coordinating, designing, knowing the problem domain and doing other software development tasks than they can by writing code. And in all honesty, having good leadership or design skills are far more rare (read: valuable) than code-writing skill.

Can a developer have it all (code AND set direction?)

Absolutely. Though you need to realise that the amount of coding will go down. You just can't do those other valuable things well if you spend 80% of the day heads down in an IDE.

The other option that happens is that of the 'principal engineer' for lack of a better term. Some developers are very specialized. I worked with someone for example who wrote gigabit ethernet drivers for Linux. We needed him to do that sort of work for us, and since only a handful of people could do that job well, he made piles of cash in addition to writing code as the majority of his day.

Most companies don't need that sort of specialization though. They're just plumbing data together or making yet another website/mobileapp.

6
  • 1
    This. However, in most hierarchies there are a few positions in between the average "code monkey" and an architect; Junior dev, dev, senior dev, team lead, even project manager are often underneath a software architect. Up to project manager, most of those positions are still primary coders, with incrementally increasing supervisory/advisory job functions, with a quantum leap when you move up to PM that pretty much relieves all coding duties in favor of resource and people management. Architects typically leapfrog PMs to stay closer to coding, but gain authority over multiple projects.
    – KeithS
    Nov 16, 2012 at 19:27
  • 1
    Great answer. And your comment regarding "having it all" is spot on. I recently made a conscious decision to alter my career path so I could get back to writing code. I was lucky enough to find a company that can use both my architectural and programming skills. They definitely can be hard to find.
    – user53019
    Nov 16, 2012 at 20:26
  • 3
    "Most bad companies." Accurate and concise. +1
    – orip
    Nov 20, 2012 at 7:45
  • Google / Find on twitter John Carmack (twitter.com/ID_AA_Carmack) He is founder / Technical director of ID Software, and yet he writes code ever day. Great example.
    – kodisha
    Nov 23, 2012 at 20:52
  • @kodisha counter example Linus Torvalds. He doesn't seem to code as much as he used to.
    – Autodidact
    Nov 24, 2012 at 7:44
8

This largely depends on the organization's culture. Many companies don't have real senior technical positions, although they may have some bogus ones.

Some companies do have these positions. One of the reasons that great engineers tend to gravitate to a few big companies (e.g Google) or to startups is that they can keep being developers and work on things they're excited about with high compensation and organizational status. In most companies if they wanted to stay developers they'd be at the low rungs of the ladder.

4

Personal experience is the more experienced I get at writing code the less time I can afford to write code.

I spend time trying to fix problems before they arise. To assist others when they are stuck. To plan out how things will sit together. Even just trying to get people to pull in the same direction.

It feels inevitable in my position. I prefer working with the code, but there are things I can do for our company which are that much more valuable.

Now this is personal experience but yes I think it would reflect most smallish companies. However I've made it clear to my own boss that I don't want to be removed from the code completely.

I think the best software architects are hands-on I saw a good article http://www.infoq.com/articles/brown-are-you-a-software-architect Look at part 4 Design, Development and testing.

Having said that, why shouldn't the day-to-day coding activities be a part of an architect's role? Most architects are experienced coders, so it makes sense to keep those skills up-to-date. In addition, the architect can experience the same pain as everybody else on the team, which in turn helps them better understand how their architecture is viewed from a development perspective.

0

It depends on what your responsibilities are. If you're responsible for technical matters, then you should remain in a coding position. Splitting up the 'idea' process from the 'implementation' process is a path down the wrong road. If you ever find your self in such a position, you must resist the urge to be that genius that just doesn't have the tim to implement his brilliant ideas.

On the other hand, if your responsibility lies in management, the I don't think you should be coding. A manager should manage fill time. Such a position includes facilitating communication between different coders, and between the team and the greater bureaucratic ecosystem. The worst managers in my experience where the ones who stayed heads down coding while the team fell apart due to conflict and mis-communication.

2

Not the answer you're looking for? Browse other questions tagged or ask your own question.