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.
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)
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...
It /is/ actually a critique. It isn't negative, but it is a critique.
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.
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.
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.
Probably not. They would emerge with a new web browser, not a working web frontend. That's my guess.
This is based on what? You really think that most people can't be taught the basics of "Hello World", or a function that multiplies two numbers?
Plenty of people write Excel formulas when faced with the need to. That's "beginning to program".
But not that many people write Excel formulas. Up to 50% of people in the West don't have basic numeracy skills enough to do what you describe.
In my mind, the recognition of repeated structures in a spreadsheet count as beginning of programming. This sort of thing: "if I create this pattern of cell references and then repeat it across the grid arbitrarily far, such and such a result/behavior will emerge". It is like recursion unfolded, and on the verge of being codified compactly.
For context the UK used to have CSE and O Level Exams at 16 the CSE ones where for the vocational track kids who would leave school at 16.
The curve is for people who HAVE programmed. It is irrelevant what the barrier is - the curve is only describing people who have crossed that barrier and written some code.
You wouldn't include dogs in a bell curve of human height - the thing being measured first has to be a member of the group that is being described.
Of course there is a /distribution/ and of course it is not shaped like a vertical line -- but it is very unlikely to be a normal distribution.
In general one would assume that a distribution of this type would be normal absent evidence to the contrary right? What is that evidence to the contrary?
For almost any boundary you choose, a majority of people will sneak in just over that boundary, leaving a long one-sided tail.
This skewed distribution would appear even if you cut a Normal distribution.
A Normal distribution occurs when everyone is expected to be at the same average level but could move up and down equally due to many random factors. When learning skills, people generally start at a 0 level and generally move up. That won't be Normal.
If you take a cohort of programmers with exactly the same experiences, that could plausibly follow a Normal distribution of skill. If you take e.g. all professional programmers, that won't.
Aha, yes that's an excellent point.
Where did you pull this assertion from? There are a wide range of skills and behaviors that go into programming, and I see those attributes in people from all walks of life. Programmers are just the ones who've sat in front of a computer long enough to apply them in the same context.
Second, the criticised idea that "everyone is either an amazing programmer or a worthless use of a seat" is probably true in capitalism. Either you have skill enough for an organisation to employ you profitably, or you don't.
That difference might be a hairline's breadth. But it acts as a significant tipping point. It doesn't necessarily indicate anything about the true distribution of programming skill. It's just a cut-off point.
"Annual income twenty pounds, annual expenditure nineteen pounds nineteen and six, result happiness. Annual income twenty pounds, annual expenditure twenty pounds nought and six, result misery."