6 ms·
> before we can become better programmers we have to pass through being mediocre programmers Sure it's true, but it leaves out a fundamental truth about progra
by yarg 6y ago
> before we can become better programmers we have to pass through being mediocre programmers
Sure it's true, but it leaves out a fundamental truth about programming (and technically complex disciplines in general): most people that attempt programming will never be a good programmer - indeed most never even cross through the gate of mediocrity.
There seems to me to be a superegalitarian notion that all people given the same opportunities will be capable of achieving, if not the same, then comparable results on a given task (or set of tasks of a given type).
That simply is not true - "fake it 'till you make it" is not universal.
- croissants 6y agoEh, mediocre is usually defined as something like "middling" or "middle-of-the-road" or "average". It's plausible to me that most reasonably intelligent people who try very hard can become "above average" programmers. "Good", I don't know.
- yarg 6y agoSure, but I don't think we're working with a single peak distribution here - and good luck coming up with a workable definition for "reasonably intelligent".
- shoo 6y agoOn another hand, many commercial programming tasks or programming roles are relatively mundane or lower-skill, and do not require exceptional levels of programming ability. If an exceptional programmer was dropped into one of these roles, they might quit out of boredom, or try to refashion the role into building tooling or systems to automate away some or all of the drudgery, but perhaps at the cost of not delivering enough immediate business value to justify their employment, or spending 100 hours building a beautifully elegant solution for a class of problem of which there will only ever be a single instance, which can be solved with 1 hour of bad scripting & manual data tweaking in a spreadsheet. Mediocre work performed in situations demanding mediocrity can be sufficient while producing economic value & providing for one's income.
- tartoran 6y agoI agree that an exceptional programmer would not only not be appreciated in a job like this but their work/code will also be misunderstood and create a huge libility for the company. Hence tgh industry dumbed everything down to the lowest denominator (not absolutely lowest but quite low) such that every role is replaceable (hint: it has to look like an ordinary cog in a system)
- orangeoxidation 6y ago> I agree that an exceptional programmer would not only not be appreciated in a job like this but their work/code will also be misunderstood and create a huge libility for the company. Writing complicated and unmaintainable code is not the hallmark of an exceptional programmer. Rather it is writing simple code to solve simple problems and writing understandable code to solve hard problems. Code other's cannot wrap their head around is not good code and even the clever author will have a harder time debugging, re-factoring or adapting it. Chances are it would be a liability even on a solo project.
- tharkun__ 6y agoBuilding something in 100 hours that satisfies a class of problems but will only see use once is definitely not smart. It's called taking advantage of your employer to satisfy your own curiosity. Do that in your free time of your job is not one where that solution will see millions of uses (meaning you are not working for - depending on decade we are talking - Bell Labs, IBM, Microsoft, Amazon etc.). If you are that good but work at a regular company, build an awesomely good script that is maintainable by even a mediocre programmer that comes after you and spend the other 55 minutes of that hour doing the next task. Then go home when everyone else goes for lunch without anyone noticing because you did the work of 2 people already anyway. If you have a good boss they won't care and give you awesome life work balance that you definitely would not get at Bell Lab, IBM, Microsoft or Amazon because they know how to exploit your drive and passion for their own good. No you don't make enough money to get that time of your life back.
- username90 6y ago
- baby 6y agoI feel like if you're reading this book, there are good chances you're already better than most and that you're a good programmer or on path to become one. The difference between mediocre and good is often that you're seeking to improve.
- gonzo41 6y agoI gotta ask, What do you consider good? There's plenty of working software that's good enough. Made by fair programmers who don't care about lisp or FP. Is your scale of good affected by what you see here on HN? Because I feel like the front page of this site has the same effect as Facebook for skewing views of reality.
- the_only_law 6y agoI’m not sure how to express it very well, but I interact a bit with people who I’d consider “good” programmers. I don’t think I’d correlate it with experience or effectiveness at a job, a good many of them haven’t even made it out of school yet. But they tend to be able to internalize programming/mathematics concepts that by many are considered difficult or complex. I know some will disagree with this, arguing that things related to experience like domain knowledge, ability to effectively work and lead in a team, understanding business needs, etc. and I don’t want to diminish the importance of these things in a professional context. However, I think there’s a good bit to programming that’s more purely technical and more related to raw intelligence (IQ or whatever you want). These people are able to easily understand things that I can’t seem to put together in my head very well.
- throwawayboise 6y agoI'm not sure how relevant it is today but one litmus test I found years ago was how naturally they grasped the concept of a pointer. If a programmer grokked pointers that was a good indicator that s/he was on the path to being a good programmer. It's probably just a proxy for being able to think at a level of indirection.
- deleted 6y ago[deleted]
- setpatchaddress 6y agoThis was one reason I thought programming the classic Mac was great training — the nature of the memory manager, where most data structures were double-indirected pointers and the inner pointer could move at will -— you had to understand pointers or you’d never be able to produce a stable program. Edit to add: and yeah, I’m also not sure it’s relevant outside OS-level programming, which most people never get near at this point.
- the_only_law 6y agoYeah I’m not sure. I’ve had a good bit of passion for programming through both my hobbyist and professional career (naturally more through the latter) and these days I find the things I get most excepted about or find most interesting I’m not really able to understand fully. I guess we all have our limits, but I’ve tried a few different things in recent years that I’ve effectively had to give up because things wouldn’t “click” no matter how much I read. Unfortunately it’s kinda killed off a good bit of that passion, and I’m not particularly interested in what options it’s leaves me.
- onethought 6y agoSimply not true? Given exactly the same opportunity you think they cannot get comparable result? So you are saying there is genetic (dis)advantage to technical things that cannot be overcome?
- yarg 6y agoAsk people with foxp2 mutations whether or not genetics can convey insurmountable obstacles.
- onethought 6y agoI was referring to more subtle gene mutations in terms of the “average healthy human” kind of range. But you knew that.
- yarg 6y agoDon't be disingenuous - you were attempting to overrule a reason based conversation with an emotional call to the notion of universal genetic equality. (So I dismissed you with a sarcastic quip.) That's not how evolution works, no matter how unfair you deem it to be. Life does not give a shit about fair - all that matters is what survives long enough to proliferate. Feelings be damned. The genes that convey contextually useful characteristics (although generally inclined to spread rapidly) are not at any point evenly distributed. In some context genes that were useful in ancestoral context loose their use, or even become a burden. Genes for intelligence may increase the ability to handle novel situations, but they also increase energy utilisation - which makes them a dietary burden.
- onethought 6y agoYou’ve attributed a lot more to what I said, than I actually said. Apologises for the trigger. Not my intent.
- yarg 6y ago
- mapgrep 6y agoThese statements are perfectly compatible with one another: “ most people that attempt programming will never be a good programmer” “ all people given the same opportunities will be capable of achieving, if not the same, then comparable results on a given task” Persistence is exceedingly rare. Falling short of your capabilities is exceedingly common.
- chillacy 6y agoYea this. "people given the same opportunities will be capable of achieving" leaves out the difference in time spent. On the one hand, I don't know anyone who has put in thousands of hours and not been a decent programmer. On the other, that mixes cause and effect a bit, since it takes a certain type of person to even want to throw a thousand hours into programming in the first place.
- smoldesu 6y agoIt seems like the author addresses that in the contents of the book. In the first chapter, they say that there is no way to close every gap of knowledge, and the only difference between a good and mediocre programmer is contentment.
- pm90 6y agoConsidering that there’s no consistent definition of what is meant by mediocre programmers vs “good”, “really good” etc, I get the feeling that this isn’t a very productive approach to measuring the skill of programming. As the responses to your comment demonstrate, it’s hard to get a common definition and thus I feel this discussion to be fairly pointless. I will say this though: there is nothing magic about programming, or really any technical skills like it. It’s all about practice and getting better with time. I do sincerely believe that anyone can be a productive programmer that delivers within the constraints that are demanded of them. If you’re talking about “prodigies” or “polymath” or people that have certain conditions that allow them to be more productive without the same amount of effort, yes, I do agree such people exist. And they exist in every field. I don’t think they should be what most programmers should try to emulate though.
- charlesu 6y ago> but it leaves out a fundamental truth about programming (and technically complex disciplines in general): most people that attempt programming will never be a good programmer - indeed most never even cross through the gate of mediocrity. Isn’t this true of almost everything? Most people who attempt [x] will never be at a good at [x]. Technical fields aren’t special in this regard. Replace [x] with running and it’s just as true despite the fact that just about everyone attempts to run at some point. And yet the vast majority of people aren’t proficient runners in any shape or form. But just about any activity could replace running and it’d be just as true. Attempts aren’t worth much. Intention and dedication are what make most people at least OK at their craft.
- scsilver 6y agoOTOH humans are some of the best long distance runners of any species, with the proper daily routine, most humans can endurance run better than most animals in the world. Depends on what yard stick you are using and in what context.
- cccc4all 6y agoNot only this, but very few people even ask the simple question, how do I become a better software engineer. The four quadrants of competence applies. Q1. Unconscious Incompetence. Q2. Conscious Incompetence. Q3. Conscious competence. Q4. Unconscious Competence. Most people never leave Q1 phase, just muddling through their career and stagnate or burn out. It takes lot of effort to jump from Q1 to Q2 and become aware how difficult things are in reality. Some take effort to become better and these types will usually succeed over time. Lot of senior level people end up in Q3 and it's comfortable zone to be in. But, it takes more significant effort to jump to Q4, where they can gain additional pull to be able to lead and make significant more money. It's significant journey and the timescale is not linear, it's logarithmic in some situations and extremely long in other situations.