Slashdot Mirror


Ask Slashdot: What Makes a Great Software Developer?

Nerval's Lobster writes: What does it take to become a great — or even just a good — software developer? According to developer Michael O. Church's posting on Quora (later posted on LifeHacker), it's a long list: great developers are unafraid to learn on the job, manage their careers aggressively, know the politics of software development (which he refers to as 'CS666'), avoid long days when feasible, and can tell fads from technologies that actually endure... and those are just a few of his points. Over at Salsita Software's corporate blog, meanwhile, CEO and founder Matthew Gertner boils it all down to a single point: experienced programmers and developers know when to slow down. What do you think separates the great developers from the not-so-fantastic ones?

15 of 214 comments (clear)

  1. Alternate Link by Anonymous Coward · · Score: 5, Insightful

    Here's an alternate link for the first article.

    Or better yet, skip it. Usual shitty dice.com summary article.

    The linked lifehacker article seems pretty good and I largely agree with it. Couldn't make it through the second one.

    Two things I would add from my personal arsenal:

    - Try to kick ass at least once a week. This sounds weird, but it's worked very well from me. In the perfect world we would kick ass every day, but I think realistically we (or at least I) would quickly burn out. So instead I try to just randomly pick a day where I come in with the mindset that I'm going to just fucking own whatever I'm working on. The day is random and sometimes I skip a week, but I usually manage, and while you would think inconsistent performance would stand out, I've found (at least where I work) that it doesn't, and people tend to remember the kick ass days rather than the average days.

    - Dive into the stuff that others avoid / are scared of / don't like doing for various reasons. I'm not saying take the shit jobs, but usually there are tasks programmers hate because they involve working with hardware, dealing with clients, travelling, or doing something out of their comfort zone. Become the <whatever> guy.

  2. Beer by MarcNicholas · · Score: 4, Insightful

    Beer makes everything better ;)

  3. It depends by Tablizer · · Score: 5, Insightful

    The best "lone wolf" developers probably use something like Lisp and a high amount of math-like abstraction to crank out vast amounts of features in a short time.

    However, a good team programmer knows how OTHER typical programmers think and read code, and writes code that is easy for them to navigate, digest, and change. Team programming is more like authoring a good technical manual, not clever gee-whiz tricks.

  4. Knowing you will make mistakes. by Bookwyrm · · Score: 3, Insightful

    It's not that great software developers never make mistakes, it's just that by knowing they can and will happen to anyone, they can try to catch them early.

    It's the people who think the code they write is flawless that tend to have the most problematic code.

  5. Great programmers are made not born by byteherder · · Score: 4, Insightful

    To be a great programmer (or even just a good one), you need to never stop learning. Always be learning something. Many times in my life I have learned something on my own, only to be able to apply is a totally different situation later in life.

    Great programmer are insanely curious. They want to know the how things work, why one solution is better than another, always improving. That is the key, always be improving your craft, and your knowledge.

  6. A great developer knows how shitty he is at coding by Anonymous Coward · · Score: 3, Insightful

    You WILL make mistakes and introduce bugs when coding. A great developer knows this.

    Ask anyone you think is a great developer, "What do you do to help prevent or detect the mistakes you make?"

  7. The most important prerequisite by Taco+Cowboy · · Score: 3, Insightful

    Whether or not it is called "Software Development" or "Software Engineering" or "Coding" or whatever the newest trendy iteration, they all boil down to identifying the need and/or problem and then SOLVE IT

    From the primitive but extra-ordinarily crucial computer systems that ran the Apollo space program to Lotus 1-2-3 to Linux, all they did was the same --- they identified what is needed and then providing solution to get the problems licked

    --
    Muchas Gracias, Señor Edward Snowden !
  8. Be a Good Listener by Khomar · · Score: 4, Insightful

    I think one of the most valuable abilities for a good programmer is to be a good listener. A big part of that is also being able to ask good questions. You need to be able to fully understand the problem to be able to develop the right solution -- remember, the solution that customer actually needs is not always the one they think they want. Also, being able to listen also means you will be better able to learn new skills.

    --

    I believe in de-evolution. God made the world perfect, man fell, and its been going downhill ever since!

  9. My opinion by dskoll · · Score: 4, Insightful

    I started a software company back in 1999; we're still around and up to 10 employees, so I have had some moderate success in the software business.

    I think the LifeHacker link makes a lot of good points. I especially agree with limiting overtime. I *never* ask my developers to work overtime. Just never. Because I don't set release dates. When someone asks when the next release will be, I say "when it's ready" and I mean it. It's far more important to get it right than to get it out "on time", whatever that is.

    I would add that to be a great software developer, you need a lot of discipline. You need to write your unit and regression tests even if you don't feel like it and even if you'd rather be moving on to the next cool feature. You need to write your documentation clearly and comprehensively. You need to have your code reviewed; even the best programmer can benefit from suggestions that improve code clarity.

    You need to listen to your customers. You can write the greatest software in the world, but if it doesn't do what your clients want, that's not much use. But you also need to have enough judgement to know when your customers are asking for something ridiculous and you need to have the communication skills necessary to explain to them why what they think they want isn't what they really want.

    You also have to be passionate. If you went into computer science because you thought you'd get a secure job, but never particularly liked computers and didn't do programming on your own time, forget it... you won't be a great software developer.

  10. Re:Levels by phantomfive · · Score: 4, Insightful

    I think you need to be a team player in order to write readable code. By definition, writing readable code means you are thinking about how other people will understand it.

    --
    "First they came for the slanderers and i said nothing."
  11. Re:Difficult to answer by beelsebob · · Score: 4, Insightful

    Hint - if you think that you're the best coder in the world, and that everyone around you is only outputting a bunch of shitty buggy crap, it's probably time for you to do a bunch of introspection.

    It's a well known phenomenon that experts will tend to play down how good they are (because they realise what they don't know), while non-experts will tend to play up how good they are. The fact that you're claiming to be god's gift to man kind, and that everyone else seems to be doing something different is a good indication that you may well be in the latter category.

    Don't get me wrong - you may actually be god's gift to man kind, and/or you may be amongst a bunch of incompetent monkeys, but that's not the likely scenario.

  12. Re:A great developer knows how shitty he is at cod by beelsebob · · Score: 3, Insightful

    Yep, I've never met a really good programmer who didn't use every tool he could exploit to find his bugs. Every one of them that I ever met had a strong leaning towards strongly typed languages, because they could exploit the type checker to find their bugs. They had a strong leaning towards testing, because they could exploit it to find their bugs. They had a strong leaning towards running profiling tools for memory, leaks, performance etc because they could exploit them to show were their code was really bad.

    As far as I'm concerned - lesson 1 is to use every tool you possibly can to prop yourself up - get the computer to make you into a good programmer.

  13. Re:Levels by pak9rabid · · Score: 3, Insightful

    Or you yourself having to read it years later when you have zero memory of writing it ;)

  14. Re:From my perspective... by Anonymous Coward · · Score: 2, Insightful

    Average salary? A Great programmer should expect great money.

    What you've described is a chump who throws away his talents and time so that other people can make the good money. Screw that.

  15. Re:From my perspective... by Anonymous Coward · · Score: 4, Insightful

    I really hope this is sarcasm. You just described everything that causes projects to fail, take on lots of technical debt, cause burnout, and generally make people leave the industry. After working in many countries, I've also noticed that this is especially an American thing, like a badge of honor. You are a programmer, not a Marine.