6 ms·
There are 2 types of “good” programmers, who both think the other type is useless. The first is the “rockstar” developer type who is great at prototyping, hitt
by StephenMelon 9y ago
There are 2 types of “good” programmers, who both think the other type is useless.
The first is the “rockstar” developer type who is great at prototyping, hitting deadlines no matter what and delivering functionality, albeit full of bugs. They will write 80% of the code and will drive the support team up the wall by breaking the build, causing customer issues in production, security holes and basically seriously degrading the code base. But their boss will love them because they deliver the shiny when required.
The second type are the ones who can sort out the mess created by the first type without making things even worse. They tend to be less visible, less well paid and less in demand but every company needs them.
The whizz kids and the grown-ups basically. Companies who only have the first will burn bright but not be able to scale. Companies who have only the second type tend to move too slowly to get to market or pivot.
So ideally there is a symbiotic relationship between the two types and someone who is a combination of the two is very rare indeed, because the first either needs an ability to place limitations on awareness of the big picture (and it’s very difficult to create a blind spot on demand once you have experience) or they need to be incredible at both analysis and full stack execution. Those people are few and far between so a process that gets the best out of the two types is, in my experience, the way that most companies work.
- shubhamjain 9y agoThat sounds arrogant and condescending. I don't think that you should have a ship-at-all-cost attitude, notably when it comes with creating an unmaintainable kludge, but the second type, the meticulous kind, can also be ones who over-think every aspect of the output without taking the first step, which benefits no one.
- chiph 9y agoThere's actually a lot of truth in what he said. You need both types - the mix depends on where the company is in it's life. Early on, you need more of the "rockstar" types because shipping is life. Later you need a blend with more of the latter type, because existing customers will only put up with bugs for so long, and expect to see new features they asked for.
- mercer 9y agoI've been the latter type in the early stage of a startup, and even though I strongly believe in my more cautious approach to programming, in general, in hindsight I feel that I should've abandoned that caution or that they would've been better of with another programmer. Thankfully I'm pretty sure the startup would've failed no matter what, so I don't feel too guilty about it. But it taught me a valuable lesson.
- StephenMelon 9y agoArrogant and condescending to whom? I said that both types were necessary to succeed exactly because I know the “over-thinking” types can be just as destructive to a software business as hackers who only think short term. My point is that you either identify and hire only unicorn-perfect developers, which you will probably never be able to find enough of, or you build a process that balances the strengths and weaknesses of your varied team members against each other, so that you get a workable happy medium between “move fast and break stuff” and “move slower than the market requires and don’t break stuff” in leiu of being able to hire one infallible genius after another.
- shubhamjain 9y agoSorry, it seems I didn't read your comment carefully. I raced past the part where you mentioned both are necessary. Now, it makes a lot of sense.
- deleted 9y ago[deleted]
- Johnny_Brahms 9y agoI don't know if I agree. I have friends that can smash out amazing code in very little time. Looking through some repositories of programs I like, some of them were prototyped in very little time, but with a surprisingly excellent first revision. I had the pleasure to work with Zed Shaw quite some time ago, and even though his code might not be perfect, he writes a lot better code than the vast majority, in a lot less time.
- DC-3 9y agoThis is interesting to hear. I thought Zed's book on C programming was reasonably good but I lost an awful lot of respect for him with his strange and nearly incomprehensible tirades against Python 3.
- celticninja 9y agoIt seems like he is over his python 3 hate now.
- zedshaw 9y agoLOL. An account with these as the only comments and no submissions? Man this place is so weird. It's like you're at a party, and then some guy can scream at you from across the room while wearing a Richard Nixon mask and everyone goes "Oh yeah that is true." Never questioning why the guy is wearing a mask at a party. Anyway, I think you need to look up the words "tirade" and "incomprehensible"
- Zenbit_UX 9y agoLooks like you got some haters... The only reason to make a throw away in order to bash you - deservedly or not I don't know - is because you know this person and they don't want to remove their Nixon mask and risk a real life confrontation. tldr: Welcome to the Internet
- DC-3 9y agoI did not create this account as a throwaway. I just don't have the inclination to comment on HN much and was lurking for a long time until recently. As proof I point you to my Reddit account of the same name which has a great deal of activity and which is reasonably well recognised and regarded in certain communities. I say this to demonstrate that I am not creating burner personas for the sole purpose of starting flame wars - but I did think it was worth stating in this discussion that Zed has succeeded in discrediting himself in some programming circles.
- bbarn 9y agoI don't buy this. Lots of us are good at being excited, moving fast, when something grabs our focus. Some of us are just as excited at the quality of our "how" as we are the size and shape of the finished "what".
- gregmac 9y agoFull of bugs (non working) functionality that constantly causes customer issues is not considered "rockstar". It might appear that way up front, but the lasting reputation will be from the success (or not) of the final product, including whatever post-deadline work is done.
- matrixtransform 9y agoPerhaps he meant "rockstar" in the Ozzy Osbourne sense of the phrase? Flawed, temperamental but still capable of dazzling in the right context :)
- BoiledCabbage 9y agoWhile I appreciate you sharing, I have to say that I believe this is extremely non-representative of the industry. I've work on a lot of teams across the years and have seems different people with each of those individual qualities, but have never seen any common split of people into those two combinations. I feel this may be too specific to your personal experience / work history.
- ultimateedition 9y agoI second this, it's a nice story that programmers belong to one of these two categories, but I haven't seen it so black and white in practice.
- deleted 9y ago[deleted]
- fragmede 9y agoSounds like you've worked with quite a lot of wannabe rockstar programmers. Look, you're not wrong - there are certainly mediocre programmers out there who have decided that quantity is its own quality, and can bang out lots of buggy code really quickly. However, just like there are a lot of middling to good musicians out there, but only a few truly great ones, there's something that separates the good from the great, and the same goes for programmers. Unfortunately for us mere mortals, programming is not quite a performance art (despite the existence of /r/watchpeoplecode), so there's not anything to point at globally as this is what a great programmer looks like. Moreover, a company's culture is the culture - if they put up with assholes who can program a little bit, they'll also put up with assholes in be other positions for different reason. Personally I'd choose somewhere else to work.
- amelius 9y ago> But their boss will love them because they deliver the shiny when required. It seems the boss is really the problem then :)
- whatever_dude 9y agoI think that's just of the many axis of how a developer can be. It's not as black-and-white and it's certainly not the only axis.
- dasil003 9y agoIn practice you might have tension on a team between those who favor speed vs stability, but I resent the characterization that it is an inherent trait of the programmer. If you want to be a great startup engineer you have to exercise judgement; knowing when to do something quick and dirty, what to polish, what code is likely to live a long time, when and how to address various aspects of scalability, etc. Someone who just has one mode of operation and does not consider the context is always a liability unless their role is very rigidly defined and management knows what they're doing.
- mercer 9y agoI agree. The most important quality I try to cultivate is what I guess many would call 'good judgment', and others 'intuition'. I've worked as a freelancer, lead front-end developer, and contractor, and ranging from 'stuck in the nineties' to 'use whatever HN talks about for the front-end' companies. One of the most important lessons I learned is to use the right tool for the right job. Also to not let 'purity' or 'elegance' get in the way of getting it done (which is difficult for me). But also to never confuse 'getting things done' with laziness.
- StephenMelon 9y agoIn my experience everyone has a natural mode of working and the conundrum for management is do you try to get people to change (to become all-rounders) or do you develop people in the direction they are already headed and therefore encourage specialisation? In my experience it’s sometimes better to let people be the best “them” they can be, than to try and require them to change and lose their uniqueness. I think most developers naturally become more cautious with experience (the bitter experience of debugging long into the night usually), while some never grok maintainability or documentation but can still be highly productive net contributors if you have a great testing team between their code and your customers
- computerex 9y agoLet me guess, you are one of the "grown-ups" fixing the mess created by whizz kids?
- Animats 9y agoAll the founders of Autodesk were of the second type. Most were mainframe OS maintenance programmers who fixed kernel bugs in assembler. A big issue for AutoCAD was "don't lose the user's work". Customers were not forgiving of that. New features were less important. Autodesk is still around, market cap around $26 billion. They're still selling expensive software that works, and have been profitable for over 30 years.
- animal531 9y agoJust a small comment on AutoCAD. Any software product that's successful for 34 years is pretty impressive in my book. 3d apps especially seem to suffer from bloat, which then leads to competitors getting the leg up and the original dying off; then repeat for the competitors.
- noir_lord 9y agoI'm type 2, I like fixing things though I just inherited a system that is so bad I'm struggling to figure out where to even start, might be the first time in my career where a rewrite might make sense.
- pc86 9y agoLet me guess, you feel you're in the second category? You know it's possible to draw distinctions between different methodologies without disparaging the one you feel is different than you.