September 26th, 2008

What Makes a Good Developer

 

A developer doesn’t becomes a good developer simply by using a particular programming language.

The rapid development environments made this industry evolve faster than anything other I know today. This has positive and negative outcomes. Today’s developers can choose from a rich variety of programming languages, development tools and platforms, but it’s a lot harder to set up a secure, scalable environment. Hardware and software are getting more complex every day, it’s much harder to learn about new technologies today then it was yesterday.

In my personal opinion we shouldn’t  associate a good developer with the programming language he / she uses. To be a good developer means you can optimize a code to the max within the limitations of the programming language. A sane developer won’t start building a 3D first person shooter action game in Basic, instead he should choose C. But a bad programmer could write even worse code in C. It’s all about the experience and knowledge of the developer that results in clean, optimized code.

This is the case with web applications too. A good developer could write the same good code in Ruby, PHP or Java. The programming language is just a tool to help programmers achieve what they settled to do.

If you enjoyed this article then help spread the word and please follow us on Twitter or subscribe to our RSS feed.

Subscribe to our RSS feed

11 Comments

  1. Andrei
    on Friday 26, 2008

    You talk a lot about optimized code. Is the speed is more important than a clean and maintainable architecture ?

    Reply
  2. Gyorgy Fekete
    on Friday 26, 2008

    By optimized I’m not referring just how fast a code is, but by the best possible code that a developer could come up with for the given scenario.

    For example if you use PHP 5 and to choose between mysql and mysqli drivers for communicating with MySQL, the best option would be to choose mysqli, because it’s faster and object oriented code.

    Reply
  3. raveman
    on Friday 26, 2008

    There is good framework for developing game in Java (JMoneyEngine). You dont need to switch language to low level one just because you write a game. I think its a bad idea to switch language to the one you dont know at all just because you feel you should. To write WebApp in Java you need to know a lot of technologies and i think most rookies would be very bad at it when there is not architecture.

    Reply
  4. Gyorgy Fekete
    on Friday 26, 2008

    Yes, but regarding performance a code runs better in C. Every major game developer company uses C to write games in.

    In this case, in my opinion, Java is not optimal for large game developments.

    Reply
  5. Wayne Conrad
    on Friday 26, 2008

    Some rambling…

    A good developer optimizes code. The better developer optimizes people. Code is just a means to that end. “Optimize to the max” is a sign of a developer who is applying a local optimization–”make the code as fast as possible!”, and not yet applying more global optimizations–”make the people within the business, and thereby the business itself, as successful as possible.”

    Often, the slower code that is “fast enough” is better. Half a day to develop slower code vs. a full day to developer faster code means I can move on to a more important project that’s worth more money to the business. I don’t make these decisions on my own. When I started working here, I asked the business owners frequently how fast was fast enough. Now, after years working here, I’ve gotten to know how they value time vs. money and make the small decisions on my own, and only ask them the larger decisions. But the key point is that “how much to optimize” is never properly the programmer’s decision alone. To do it “just because” is spending the business’s money on things that will not return value to the business. Nothing makes a businessman happier than to realize that a programmer understands that “good enough is good enough.” The flip side of this is that when the business tells you to optimize (“this will have to be faster to handle the traffic we expect in the next six months. If you can get it twice as fast in a week, that’s money well spent.”) you’ve got a clear conscience. You’ve just been paid to play. Have fun!

    As you say, you shouldn’t decide whether or not a developer is skilled by the language the developer is using. However, to pick some extreme cases, you might have good reason to question a developer who coded a web server in assembly. There is such a thing as an impedance mismatch, and even the most skilled developer might be hard pressed to overcome a bad mismatch between the tool and the job at hand. While Chuck Yeager’s saying, “It’s the man, not the machine” holds true for languages that are fairly close together in power, there does come a point where the tool’s deficiencies cannot be overcome by any amount of skill: No amount of training and skill will allow a sword yielding Samurai to defeat a man in a tank.

    Reply
  6. Gyorgy Fekete
    on Friday 26, 2008

    Nice. :)

    Reply
  7. Caligula
    on Friday 26, 2008

    > A developer doesn’t becomes a good developer simply by using a particular programming language.

    That said, some languages tend to produce more effective developers even if they spend their time developing in a different language.

    For example, my day job is Java (more or less). But most people we interview that only know Java are, at best, mediocre programmers, whereas those that know a more capable language tend to be both better developers, and better *Java* developers.

    Reply
  8. Gyorgy Fekete
    on Friday 26, 2008

    I still consider that a developer is not defined by the programming language.

    After all if a developer doesn’t know basic techniques like recursion, closures or OOP techniques it won’t be a good developer even if he’s programming in Java, PHP or C#…

    Reply
  9. woozyking
    on Friday 26, 2008

    I totally agree with your opinion. That’s why they put a hell lot of money and time teaching students in college/university about how to write good programs from basic algorithm analysis and fundamentals learning. The more the students get from the class, the higher chance they can be a good programmer by making less mistakes and spending less time on gaining experience that would have been told in classes already.

    Reply
  10. PaulC
    on Friday 26, 2008

    @Wayne Conrad hit the nail on the head.
    “good enough” is almost always good enough. :)

    I can’t tell you how many times I have had the “I want to do a complete rewrite!” conversation with developers. If you are the single, BEST coder that the world has ever seen, and I have to have the rewrite conversation with you, then you probably aren’t a good developer. I say “probably” because sometimes (rarely) a rewrite is the answer. But I am just using “rewrite” to make my point, which is to support the notion that a good developer needs common sense too. A good CODER on the other hand…

    Reply