HACKER Q&A
📣 focodev

What Makes a Great Developer?


A little context. I'm currently a junior in a middle of the road state university studying for a degree in software engineering. I have been doing a lot of reading - whether it be comments on Reddit, articles, etc - and it appears that there is an abundance of junior developers looking to enter the job market, but very few "good developers".

My question is, what is it that sets someone apart as a good developer? I know this question is very vague but it's also very vague whenever I see it used.

Thank you for your time.


  👤 onion2k Accepted Answer ✓
Based on roughly 20 years of mentoring junior developers at various points during my career, the ones I look back on and think "that was a good one" have been the ones who want to do the whole job of writing good software. They wanted to write great code of course, but they also got involved speccing out what the software is, in writing tests and documentation, doing QA, seeing their code working for the users, to maintain it, to fix it, and not to just build something that worked today and then forget about it. They were the ones who looked at a bug report and thought "Damn, how did I miss that users would do that?" rather than "The user is doing it wrong".

(Note: This is based almost entirely from working in small software agencies and startups. It might be very different in bigger companies/teams where you get less ownership of a whole problem domain.)


👤 karmakaze
Being deeply interested in each problem at hand would top my list. That provides the motivation for developing skills that lead to getting better faster.

Other than that, I would say specializing and getting great at one or two things at a time (e.g. "C" and 3D graphics). Finally also seeking out exposure to other programming environments: languages (functional, lisp, etc), frameworks, frontend, backend, realtime/embedded/IoT, shrinkwrap, verticals.

It all comes down to experience. The closest thing to a shortcut is forcing yourself to do things outside of your comfort zone. Surround yourself with people who you can learn from and do so without ego getting in the way. Pair programming to pick up little tips all the time that you may never see written anywhere.


👤 CyberFonic
The definition of "good developer" depends greatly on the context and environment.

Based on my experiences in many different teams, I would suggest two critical attributes:

1. Strong knowledge of all core principles: computer architectures, operating systems, networking, etc.

2. Solid domain knowledge, e.g. supply chain, accounting, insurance, industrial control, etc.

Naturally a "good developer" is also conversant with several programming languages, frameworks, libraries, etc. But technical skills without domain knowledge limits opportunities.