3 ms·
People spend far too much time ruminating about what makes an especially productive programmer. Essentially it comes down to making good choices most of the tim
by slackingoff2017 9y ago
People spend far too much time ruminating about what makes an especially productive programmer. Essentially it comes down to making good choices most of the time, so basically IQ.
Bad developers are bad because they do stupid things. Hallmarks are wheel reinvention, misuse or abuse of patterns, excessive abstraction or complexity, ignorance of security ramifications. You could go on forever but really it just boils down to someone making bad decisions from inadequate knowledge and lack of foresight.
Code written by good developers can be understood and read easily and often appears simple. The extreme complexity that many companies are proud of is just a sign that their developers lack the foresight to build an elegant system.
- FLUX-YOU 9y ago>You could go on forever but really it just boils down to someone making bad decisions from inadequate knowledge and lack of foresight. To what level should a developer be at before joining the workforce? How do we bring all potential developers up to this level so that we can have a smarter workforce? Can you create an education system that reliably produces developers at that level? That's what interviews attempt to do, but since those vary so widely between companies (with some being done terribly), you can't get a coherent picture of what to actually learn that will serve you among the greatest number of companies. This means that, if you can't answer all three questions above, the workforce at large MUST support bad developers writing bad production code at some point in their careers because that is simply how they learn what is and isn't important to know. If we can't create this system, then we're all complaining about nothing because there's no way to avoid writing bad production code at some point in your careers. (I specifically mention production code because conceivably, you could just have them learn and write code in a dev environment, then have that code reviewed, but never let them have much of a business impact. Most of us don't care much if someone is writing bad code in a dev environment because that's meant to break occasionally)
- twobyfour 9y ago>>You could go on forever but really it just boils down to someone making bad decisions from inadequate knowledge and lack of foresight. > To what level should a developer be at before joining the workforce? > How do we bring all potential developers up to this level so that we can have a smarter workforce? > Can you create an education system that reliably produces developers at that level? The solution is really to give junior developers a level of responsibility (and feedback) that matches their level of experience. Juniors shouldn't be making architectural level decisions or even major design decisions, nor should they be deciding _what_ to build. They should be receiving feedback on the small-scale design decisions they do make, and exposed to the senior devs' decision-making processes so they can develop that level of knowledge. And their responsibilities and exposure to business goals and impact metrics should be gradually increased as they gain the experience to be able to make larger and higher-level decisions.
- Mandatum 9y ago> exposed to the senior devs' decision-making processes so they can develop that level of knowledge This is really important I think. Asking newbies a lot of questions to try and coach a good solution out of them, on their own, is a really great way to get them to "learn to think". Also I recommend checking out the Blooms Taxonomy.
- drewman 9y ago> People spend far too much time ruminating about what makes an especially productive programmer. Essentially it comes down to making good choices most of the time, so basically IQ. Are making good decisions and IQ directly correlated?
- slackingoff2017 9y agoLargely, yes. People with high IQ live longer healthier lives, make more money, have greater life satisfaction etc... Even Google admits that IQ is the best predictor of job performance but they go on to say that the metric is discriminatory.
- j45 9y agoGood and great developers think about the lifecycle of the code and managing unnecessary complexity so the greatest number of developrs can grow or be competent care takers beyond themselves. Clear thinking and clever architecture that results in a simple but effective and flexible design will almost always trump any attempt by clever programmers (skilled or not) to build monuments to their cleverness. The key skill that made a big difference to me is being able to build discipline. Once I could buold discipline and apply it to learn anything (like improving focus), the effects multiply and compounded. Discipline strangely is freedom to maximize things. Discipline for me started with being open to the fact that things (lkke 10x dev's) may exist even if I can't fathom it. People have called me unusually productive, but compared to others I know I don't feel the way.
- rudyrigot 9y agoAuthor here. I can't really agree with the view that there is a static mindset to being a good/bad developer, and you're one of those and that is that. I think there is an entire spectrum of less-experienced/less-insightful developers to more-experienced/more-insightful developers, and that an individual can absolutely transition from the former to the latter group by building experience and with the right focus. You can view my article as merely an attempt to help less-experienced individuals get there faster with the focus that I believe will carry them further.