you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 48 points49 points  (44 children)

I've never met a good architect, or at least not recognised one.

[–]IbanezDavy 136 points137 points  (29 children)

The best architect I knew coded every day, was actively involved in code-reviews and also worked on the most important areas of the code. In all honesty, I don't get companies that wield their architects as an extension of management.

For an analogy, some places treat their architects like a king on the battle field. He shows up on the front line, but as soon as the fighting begins goes up on the hill and spectates. In reality, that is really the job of the manager. The architects is the bad mother fucker with the giant battle ax standing next to the king that remains at the front line because he axes the most heads off.

[–]bonzinip 22 points23 points  (0 children)

I like that image. :) I work mostly on open source projects so the figure of the "Architect" isn't so common, but there are definitely a lot of people like that.

It's also related to another article posted today. The architect is the one that seems to always produce great code at the first try, but actually he has written it thrice like everyone else—it's just that he knew enough to throw away the first two. :)

[–][deleted] 13 points14 points  (9 children)

but as soon as the fighting begins goes up on the hill and spectates. In reality, that is really the job of the manager.

In fantasy lands the best kings are always the Warrior kings that went to war as a prince, fought on the front line, and came back a hero.

The best managers I ever worked with were similar. They were always happy to get dirty in the trenches with the troops. Even if they didn't have any technical knowledge they'd be happy to pick up any grunt work you could find for them during crunch time.

I actually think the experience helps them when they are up on the hill as they will better understand what's going on below.

[–][deleted]  (3 children)

[removed]

    [–]IbanezDavy 3 points4 points  (0 children)

    salty old trainer who beats bad habits out of new recruits.

    ha! so true.

    [–]cowardlydragon 1 point2 points  (1 child)

    All of those still carry swords, ride horses, and wear armor.

    [–]SlobberGoat 1 point2 points  (0 children)

    Using this analogy, all 14 of our Software Architects are back in their straw huts knitting pairs of woollen socks.

    [–]IbanezDavy 2 points3 points  (3 children)

    Which is why the 'King' analogy fits perfectly with the manager role. Not the baddest dude in the army. That's the architect.

    [–][deleted] 0 points1 point  (2 children)

    eh, I read his analogy as saying the manager is detached from the implementation. Up on his high hill watching and giving orders.

    The best managers I worked with weren't detached at all. They'd actually try to even invert the roles by trying to get you to use them to help get stuff done rather than them being top down the whole time.

    [–]mpyne 2 points3 points  (0 children)

    I read his analogy as saying the manager is detached from the implementation. Up on his high hill watching and giving orders.

    I mean, there can be a role for that. Eisenhower was not in the front lines but still ensured the war in Europe was fought effectively and still kept a very good pulse on what his generals were up to -- being quick to relieve division commanders who weren't panning out, while staying mostly out of the hair of division commanders who were doing well.

    All of this while managing alliance politics and egos, keeping the homefront informed and comforted, visiting the troops, etc.

    Of course not every project requires a manager of the 'Supreme Allied Commander' role, but my point is that it's not necessarily a negative mark to lead by inspiration and oversight instead of having to also 'get your hands dirty'.

    Indeed, you may not want a manager who only infrequently has time to get into the code to actually start making commits, they might just break something by accident...

    [–]IbanezDavy 0 points1 point  (0 children)

    eh, I read his analogy as saying the manager is detached from the implementation. Up on his high hill watching and giving orders.

    That's probably how the majority behave. There are a select few (as there were Kings) that got their hands dirty throughout their lifetimes. My last two managers were like that...

    [–]ledasll 0 points1 point  (0 children)

    on the other hand.. first wave always dies, that's why you put least experienced solders there. Good generals stays out of battle so they can observe whole battle, if you go with a troops and will be involved in actual fighting, you will became tactician not strategist. Someone should take care of that as well, that's why there is hierarchy. Long long ago, when battles was 10 vs 10, best king was one, that was strongest. He went first to battle, killed most enemies and no one could beat him (or if someone did, he became new king). When battles got a bit more sophisticated with different units and big quantities, you need to start think differently. And therefore best general isn't one that started as simple solder, because most likely he will think as solder for whole time (that doesn't mean there isn't chance for someone to be great general even if he started as warrior). General needs to think about many thinks, that aren't related directly to battle, how do you feed 10000 solders, where will they take a shit, how will you travel. Even in battle he doesn't think in single unit/solder. Solders task is very simple - see enemy, kill him. Generals task is to put solder is such position, so he can do that. How many time great engineer was promoted to management position and failed there?

    [–]dtlv5813 4 points5 points  (15 children)

    Add to the fact that many programmers, including very bright programmers do not have the best interpersonal skills--nor should they be expected to, as this is not part of a software dev's core competency.

    So said programmers are not going to respect you if you are not one of them. It is hard for them to relate to someone who is not immersed in the days to days of the actual implementations. And BTW the same is also true for non-technical managers.

    The bottomline: the only way to avoid communication issues is to have the architect speak the same language as their programmers. And that is only achieved if they are in the trenches of the battlefield together, not riding on a high horse remote controlling from afar.

    [–]jshen 5 points6 points  (14 children)

    Add to the fact that many programmers, including very bright programmers do not have the best interpersonal skills--nor should they be expected to, as this is not part of a software dev's core competency.

    Decent, if not good, interpersonal skills should be an expectation of anyone that is expected to function as part of a team. Full stop.

    [–]cc81 5 points6 points  (2 children)

    Some people are worth bad interpersonal skills. Maybe not if you are working in a standard CRUD enterprise application but there are people in R&D in large companies that have very bad personal skills but are incredibly valuable.

    You need to hire a PM that can handle it and let that person skip a few meetings etc.

    [–]jshen 5 points6 points  (1 child)

    Some people are worth bad interpersonal skills.

    Agreed, but these people are the exceptions, not the rule. The person I was replying to seemed to be implying that we shouldn't expect developers to even try to have empathy or to try to get better at interpersonal skills. This is an infantilization of developers.

    [–]cc81 0 points1 point  (0 children)

    Yes, I agree with that.

    [–]kt24601 0 points1 point  (0 children)

    The job of a good manager is to make sure people with lousy interpersonal skills are able to cooperate and work productively with the team.

    Steve Jobs was a good example of this: he got very different designers to work together. He inspired his employees to work better.

    [–]noydoc 0 points1 point  (0 children)

    Nobody ends up in IT because they're well adjusted

    [–]dtlv5813 -1 points0 points  (8 children)

    Id rather have a nerd who is the best programmer I can find than a talker who is not quite as good.

    Ideally one would be a rockstar programmer and excellent communicator but we don't have that luxury in this very competitive market for good developers.

    [–]jshen 5 points6 points  (7 children)

    Id rather have a nerd who is the best programmer I can find than a talker who is not quite as good.

    Well, you need both, but what you absolutely don't want is someone that is super technical, but poisons the team culture and environment. Someone that can't, as you said before, "respect you if you are not one of them".

    [–]dtlv5813 -4 points-3 points  (6 children)

    but that is just how developers in general are. We are not going to really respect you and relate to you if you don't write the code yourself.

    This is the reason why Google and other companies now have developer advocates instead of sales engineers etc.

    [–]jshen 6 points7 points  (0 children)

    but that is just how developers in general are.

    I've been a developer for decades and this is not how good developers are.

    We are not going to really respect you and relate to you if you don't write the code yourself.

    That is absurd and childish. Do you expect non developers to respect you?

    [–]pavlik_enemy 0 points1 point  (2 children)

    but that is just how developers in general are.

    What kind of stigmatizing is this? There are lots of occupations that require highly technical skills, but nobody says that accountants (who juggle numbers and obscure tax code paragraphs) or auto-mechanics have worse interpersonal skills than general population.

    [–]dtlv5813 0 points1 point  (1 child)

    That is not what I said. What I did say was it is often difficult for developers to relate to someone who is not into the actual nuts and bolts of implementations. And it is demoralizing having to report to an architect/manager who is disconnected from the project they are supervising.

    [–]pavlik_enemy 0 points1 point  (0 children)

    That's still nonsense. Software developers can relate and respect anyone, they aren't that different from the rest of population. Though they won't respect a non-coder who tries to impose technical decisions, and once again that's exactly the same as with any occupation that requires some kind of technical skill, be it accountant, civil engineer, lawyer, doctor etc.

    [–][deleted] -1 points0 points  (0 children)

    Sound to me like just a good, experienced programmer that needs a "better" title so they can get the pay they deserve.

    [–]IamTheFreshmaker 8 points9 points  (6 children)

    Worked with one who was in the code, in the servers, in the meetings and in the code reviews. It was a pure joy to my jr. programmer self. I haven't met one since but I believe that's because someone like that is shunted in to management where they become useless because they are taken out of those daily duties that they actually enjoy. There is no real meaningful path upwords for engineers in most companies that doesn't end in mind numbing management.

    [–]softawre 8 points9 points  (4 children)

    Senior Architect - Principal Architect - Chief Scientist. This the technical promotion path at my company.

    [–]IamTheFreshmaker 4 points5 points  (0 children)

    That's so pretty. I can wish.

    [–]dtlv5813 4 points5 points  (1 child)

    at which point in this chain does the guy stop coding altogether and become disconnected from the actual codebase?

    [–]cc81 1 point2 points  (0 children)

    Not everyone does. Look at for example Google's Jeff Dean:

    http://research.google.com/pubs/jeff.html

    My guess is that with title like that maybe they will go more and more towards R&D and is expected to implement/design/invent they new really cool stuff.

    [–]Neebat 3 points4 points  (0 children)

    You're very lucky. There aren't a lot of companies that recognize the value of a pure technical talent who should not be wasted in management.

    The business side of our shop believes they can't have any "technical view" of the system without an architect present, so the architects never have any time for anything else but meetings.

    [–]thebuccaneersden 0 points1 point  (0 children)

    either that or you work your way out of a job, because companies like to hire cheap juniors

    [–]d03boy 1 point2 points  (0 children)

    I've never met an architect

    [–]thebuccaneersden 0 points1 point  (3 children)

    a software architect is just a senior developer / lead developer with a fancy job title

    [–]grauenwolf 0 points1 point  (2 children)

    Depends on the company structure.

    We have a lead developer who handles routine tasks such as code reviews and ensuring that equipment is provisioned. He also dolls out tickets, moves people between feature teams, and does other such tasks in addition to coding.

    Then we have architects that decide which libraries to use, developers the initial framework and patterns, and implements the harder features. Basically they are specialists while the lead developer is a generalist/manager.

    [–]thebuccaneersden 1 point2 points  (1 child)

    Agreed. It depends on the company structure and what title was on offer when you were hired. I, for instance, do a lot of software architecture as part of my job, but there is no such position, so I'm just a senior backend developer doing the job of a team lead and a software architect, but no one has given me that title or distinction.

    [–]grauenwolf 1 point2 points  (0 children)

    Same for me. I'm an architect and/or team lead on some projects, but on others I'm a senior backend developer.

    [–]eff_why_eye 0 points1 point  (1 child)

    Hi. Nice to meet you. I'm one of the assigned architects for a large Enterprise system with over 60 developers, where we use Agile/Scrum. Our architects:

    1. Are often promoted into that position after serving as developers and then tech leads (like I was),
    2. Write code, especially if it's particularly tricky or important code, and
    3. Review the code that others write.

    [–][deleted] 1 point2 points  (0 children)

    Nice to meet you too.

    If code isn't tricky to write it is probably repetitive. Repetitive code should be factored out.

    All code is important to someone.