5 ms·
Once upon a time, I inherited some code from a colleague who left for another gig. This particular fellow was well seasoned, had been in the industry for 20 ye
by marktangotango 11y ago
Once upon a time, I inherited some code from a colleague who left for another gig. This particular fellow was well seasoned, had been in the industry for 20 years. The purpose of this particular code was something similar to parsing json (not really, but close). This particular json always came from the same source and almost always had the same format. My prdecessor, not having an understanding of recursive descent parsing, wrote the parsing impl by counting parentheses at the ends of lines, which worked for the fixed input we typically recieved.
As time went on, we started to receive the same input from other sources, who of course had different layouts for the their json. Of course the code broke horribly. Myself being well practiced in recursive descent parsing, rewrote his parsing code in a few days, the original had taken him many months. I was perceived to be a miracle worker, because my implementation fixed the problems, and worked mostly error free from then on.
Was my predecessor a mediocre developer? Not at all, he was actually quiet accomplished in his area of interest, he simply wasn't proficient with this one area (parsing).
I'd like to see these discussions of 'rock stars' and '10x' evolve to recognize that perceived talent is really just experience in certain areas, wether that experience comes from personal interest, or job function is immaterial.
- kabouseng 11y agoI understand the point you are making, but would like to add one more discussion point (which detracts a bit from your point but I think is still valid). Sometimes a developer implements the bare necessary required solution to the problem, i.e. not an over engineered expensive solution. We'll then state that his solution was poorly engineered and he wasn't a good developer, but it's not fair to look at his solution in hindsight and judge it by the amount of scope creep it could handle(which it obviously had to handle in hindsight). Your succesor might write here in some time that your solution, while being appropriate for json, didn't use x technique and so couldn't handle XML input, and had you only known about x... (This isn't critique of your comment, which I found insightful and positive, just one more factor to consider)
- peterfirefly 11y ago> (This isn't critique of your comment, which I found insightful and positive, just one more factor to consider) It /is/ actually a critique. It isn't negative, but it is a critique.
- kabouseng 11y agoCorrect, but I do agree with the point the OP made as well.
- tjr 11y agoI inherited some Python scripts that pulled data from various sources and assembled web pages to present a coherent view of all of the data. These scripts were very brittle, and slightly malformed data could cause them to fail entirely. After about a year of maintaining these old scripts, one of the data sources got replaced with a shiny new database system, requiring a major rewrite to the scripts. So I just started over from scratch. Having seen the problems running and maintaining the old ones, I made numerous better design decisions, resulting in far more robust scripts, which are (I think) much more easily maintained. But indeed, my predecessor was no fool. His scripts likely grew and grew and grew until they were a pile of hard to maintain code. I doubt that he himself would have advocated their design, but he just didn't find time / value toward rewriting them. I only rewrote them because I was forced to. And I'm sure that my future successor could improve upon what I've done. For that matter, I myself could improve upon what I've done, but hey, it works well enough, and I'd be better off spending time on other things...
- zamalek 11y ago> job function Be careful with that one. It think it's precisely that type of programmer who has given rise to the 10x myth. The guy who heard that "software development is a good salary," parroted his way through university and does the job without showing any interest in it is all to common. I've found that if anything is going to make a person barely competent at development (beyond trivial Excel and Hello World stuff) it's interest. If someone becomes a 10x hire it's because they put time into pet projects, reading papers and reading blog posts. You can never be a good developer if you don't care about development. If you don't take pride in your work it's possible to fly under the radar and get away with doing as little [good] work as possible. This applies to any industry, you can be a master craftsman if you commit no energy into becoming a master craftsman. If the 10x hire doesn't exist than the 1/10x hire most certainly does.
- topkai22 11y agoI've got a sadder story. A client who I worked with has a great programmer (10x if you want.) He is so efficient that for years it just made sense to hand him a problem and let him solve it with code. The problem is that now, a few years later they have all these custom coded solutions for the things as standard as a DNS server and the rockstar programmer is unable to balance his responsibilities to maintain everything. It's a complete mess and inhibiting the client from getting anything done. Other parts of the organization had more mediocre programmers, but they tended to adopt standard, 3rd party supported solutions because of that. At this point, they are in better shape then where the 10x programmer has been working. The moral of the story is that being a great programmer isn't enough (or even that important) a large amount of the time. The secondary moral is that context is important. The 10x programmer in this story probably should have been in a faster moving sector than central IT for a large institution.
- marktangotango 11y ago>> The problem is that now, a few years later they have all these custom coded solutions for the things as standard as a DNS server and the rockstar programmer is unable to balance his responsibilities to maintain everything. The implicit error here is that the perception of this guy being great was flawed from the start. Anyone implementing one offs instead of adopting standard solutions is incompetent, pure and simple. He was't 10x, he was -100x.
- topkai22 11y agoWhich I think was a different view on the same point as the article- you can have a successful career and make major contributions to our field even if you are a "mediocre" programmer. This is the converse- being a rockstar programmer isn't enough to be a great contributor.
- snowwrestler 11y agoThis just illustrates how arbitrary the concept of a "10x programmer" is. Is a programmer 10x because they are individually extremely good at programming? Or are they 10x because they always couch their decisions properly in a sustainable corporate strategy?
- xorcist 11y agoThank you. I'd also like to image if Torvalds or Bellard or whoever your house god is would be thrown in a front end web project, would they still be a "10x"? Probably not. They would emerge with a new web browser, not a working web frontend. That's my guess.