How to become a great software developer

  1. Start with design patterns – Always start with a design pattern, then try to make your problem fit it.  Ideally start with the pattern you have most recently read about as this is most likely to be the best one.
  2. Do programming Katas – Repeatedly solving the same simple problem is the best way to improve your coding skills.  The faster you can do it, and the more you sense a feeling of ‘flow’ when solving this problem, the better a developer you are becoming. Ideally, video yourself performing the kata, so others can learn from your achievements.
  3. Mock everything – When testing, make sure you mock everything. The less you’re really testing the more likely your test will pass. Green lights in IDEs are the most important measure of the quality of your code.
  4. Follow practices strictly – Follow practices as laid out in books, or explained to you at conferences, and follow them to the letter.  It’s a lot easier to follow rules than to think, and thinking poses certain risks (see point 12).
  5. Read only books written in the last 10 years – As we are all aware, nobody knew how to program until the dot com boom, and books written before this historic moment are of no value.  Ideally make sure the books you read are signed off or endorsed by a big name in the Agile community, as this will ensure quality.
  6. Beware of old ideas – New ideas are always better, fact.
  7. Pair program, properly – Pair often, and when you do, remember that your job is to make the other person code what you know to be correct.  Pair programming is the only way to resolve communication issues and conflicts. Focus on the process of pair programming, not on the people involved.
  8. Recognise bullshit when you hear it – Be suspicious when you hear words and phrases like ‘problem solving’, ‘planning’, ‘programming’, ‘coding’, ‘testing’, ‘algorithm’, ‘design’, ‘prototyping’ etc. Such buzzwords are made up by people who don’t really understand software development, or how it relates to martial arts and eastern culture in general.
  9. Learn new terms – The field of computer programming and software development is lacking in jargon.  The best way to improve your knowledge is by learning new terminology for the same concepts. Real knowledge is about memorising terminology, not understanding principles.
  10. Java is dead* – Do not learn Java, and if you’re a Java programmer, you better start learning Ruby/Python/Scala/Clojure fast.  Java has been dead for many years and everyone knows this.  Ideally learn a language that allows you to write in 2 lines what would cost you 4 lines of Java.  Productivity and readability are about number of lines of code, fact.
  11. Be a craftsman and a professional, not an engineer – You’re not building a bridge, you’re carving a beautiful statue.  Remember you’re also just like a lawyer, or a doctor, you’re a professional.  Spend your time contemplating who you are, not what you’re doing.
  12. Never fall into the trap of thinking for yourself – Instead, read a book, post a question somewhere, follow a practice, phone uncle Bob, anything as long as it means you don’t have to think for yourself.  Thinking for yourself poses the risk that you will come up with the wrong answer. Books, forums, practices and consultants however, are always right.
  13. Read blogs, like this one – When you have a disagreement with somebody who doesn’t follow the above advice like you do, send it to them.  Blogs are the authority on matters of programming, fact.
* Replace “Java” with “Ruby” in the heading for same effect.  The point is not about the language itself, its about making sure you’re using the most recent language available to mankind.
About these ads

About codeshite

My goal is nothing less than to think of a better tag line
This entry was posted in programming. Bookmark the permalink.

123 Responses to How to become a great software developer

  1. Anonymous says:

    What does software engineering have to do with martial arts and eastern culture?

  2. Someone says:

    Java is “so” dead that it is the second most demanding programming language in Europe at least. Obviously, this post was written by a newbie.

  3. Your point is good you write some but most impotent point , this point is needed if you are really make good developer.
    thank for sharing.

    http://codal.com/

  4. This piece of writing is genuinely a pleasant one it assists new
    web users, who are wishing for blogging.

  5. Anonymous says:

    I think he wanted his site to be visited by many.And what he did,He critisized Java, the most huge developer community(the java community)

  6. Jerem Mayo says:

    To become a good software developer one should be self reliant, should try to solve queries by their own instead of asking for help. More problems solved by you will make you more powerful and you can become good software developer.

  7. Hussain says:

    Great stuff!!. Just avoid above 13 points and you would be a good developer .

  8. Anonymous says:

    Great!!. Just avoid above 13 points and you are a g

  9. Also a good software developer needs to update his skills with the new technologies. Sticking to one language may not help.

  10. Pingback: Learning, Doing, Talking. Whats your balance? | Dirk's Page

  11. Satyaanveshi says:

    I love humour the best when it hides itself so well that you have to nudge it out.
    It’s like in the Coen Brothers’ movies.

  12. Very nice blog post. I absolutely love this site. Keep it up!

  13. lastzero says:

    LOL, it took like 10 seconds until I realized this is not serious^^

  14. Pingback: Reading Notes 2012-09-03 | Matricis

  15. hassan says:

    ROFL , JAVA is dead, funny ,
    how about tons of live projects maintain and develop by apache?
    Do not read book older than 10 years , LMAO
    do not care about old ideas ???? how about re invent wheel agian? does that make you feel powerful?
    how old are you 20 or something?

  16. eeegernaut says:

    Java is Dead? Ruby? Programming languages will never be dead. You are going to die, but not programming languages. Hahaaha

  17. porfaborjan says:

    Java is Dead ?? such a nonsense!!!!!!!!!!!!! All the Banks and Big enterprise applications and Distributed apps are built using Java. only small applications and websites are built using PHP and others. Java is difficult so illiterate people like you can not learn it.

  18. dolsonagile says:

    This is teh worst blog eva. I did everthing he says and I still can’t build enterprise applications using Dart. WTF?!

  19. The Juggernaut says:

    U ar the worst fool i have ever seen. Im not sure if you are even qualified formally in any computer related field. Shame on you for leading astray all these people.

  20. lunatic says:

    this shithead blogger obviously knows very little about programming and programming languages java is the second most used programming language after php. I am not saying this a survey by dataquest says it.

  21. Pingback: Adam gibi programcı olmak için: | Muhammed Tahiroğlu

  22. Cap Table says:

    Nice article but its not all mentioned in the post that’s necessary to become a software developer. For becoming a successful software developer you need to have a great logical and analytical skills. You might be able to make things simple and easy to use for the user.

    My boss has written one interesting line at the door of the software developers teams cabin: “Any fool can write code for machine only a good developer write code for Humans”

  23. AdamW says:

    (not sarcasm…) It’s a skill to recognize sarcasm. Even moreso to recognize sarcastic responses to sarcasm. It’s unfortunate this skill is hard to find in the software industry.

    Great post. Great comments. All those who didn’t get it should slap themselves across the face and go become IBM employees or something.

  24. Just replace Java by C++ in the entirety of this post and it stlil holds.

  25. csmfy says:

    #14 Move on to new languages. If you feel that you are moving beyond learning a language’s syntax and standard library, and are beginning to grasp deeper programming and design principles, it is time to learn another language. After all, it’s better to be able to write “Hello world!” in three dozen languages than to have the skill to write a complex, multi-threaded million line program in a single language.

    • lunatic says:

      if you can write hello world in three dozen languages nobody gives shit
      because any retard like you can read first chapter of a book on any language and write hello world. Its the complex programs that are running this world.
      If you cant write them, all you can do is take your dick and put it in your ass.
      My advice learn to program complex things in different programming paradigms no matter what the language

  26. lol says:

    Funniest blog post I’ve read in a while!

  27. alpha123 says:

    lol, the comments on this post are almost as good as the post itself. :P

  28. harrisonbrockBuster says:

    C++ and Java are not dead…

    Try telling a game company that C++ is dead/

    Try telling a company like Lock Heed, or Google that C++ and Java are dead.

  29. This first-time-blogger’s post is recursively filled with irony. <– not an insult.

    Nice article :).

  30. Skatox says:

    OMG Java is so dead that twitter and Google plus uses it at their backend. (sarcarsm)

  31. Pingback: Propose to code Shite two birds with one stone … « codeshite

  32. Funny thing is that the people who took the points in this comment serious, never replied to the obvious “Dude.. this is a joke”-reply. It also implies as the author suggested, that they’re all Americans! (No offense.. or wait, a bit anyway).

    Funny article :)

  33. Pingback: Links for 2011-09-08 | Business Developer Talk

  34. toychicken says:

    Think Java is dead? It’s not! I love JavaScript. It’s basically Java, only without all that annoying compilation stuff. I have read nearly 600 blogs on how to optimise my JavaScript, in last 2 years, and I would say there’s just more and more, so it’s definitely not dead. I’ve forgotten all that C / Basic / Lingo stuff now (all > 10 yrs old), and only use JavaScript, which is much newer. alert(‘Yay JS!’); is the best way to debug shit too…

  35. Pingback: Ultimative Tipps: So wird man zu einem großartigen Softwareentwickler » t3n News

  36. Thank you for an interesting post.

    I admit that Java is no more the best programming language to write application programs as it was several years ago. There are newer and better languages today at least if the only criterion for goodness of programming language is how much code you should write.

    As a professional Java programmer, I think that we should definitely learn programming languages other than Java.

    But I don’t personally believe that Java is really dead. It is by far the most popular languages in the world today, especially in the commercial field. Also there are so many open source projects supported by large community.

    If Java is really dead, why most of the major PaaS vendors such as Amazon, VMware, Salesforce support it?
    Also it is the standard language for developing Google’s android applications.

    Last but not least, the Java platform now has enormous ecosystem build up from tools and frameworks.

  37. I would disagree with you on point #10. Java is not dead. All programming languages are dead. You need to forget about them and start learning HTML5. *THIS* is the future of everything.

  38. oreh69 says:

    It’s such an interesting list to read during the morning coffee break session. Thanks for sharing. :)

  39. Anonymous says:

    Compilers are stupid. Make your code as fast and efficient as possible by out-smarting the compiler. Speed over readability and maintainability is the key! Remove pesky white space, it only slows things down!

  40. Anonymous says:

    Because code is hard to read and understand, you should learn how to read only one code format convention and then reformat all the code to your standard. Keep the propagation going as you change jobs, and the whole world will soon be better programmers too. Remember, it is the format, not the content that matters.

  41. Eduardo says:

    It’s amazing how many people does not get the sarcasm and comment right away!

  42. Ilja Preuß says:

    You missed

    – write blogs like this. Sarcasm and making fun of others shows your superiority, without having to waste time to come up with helpful advice, or risking the vulnerability of making falsifiable statements.
    ;)

  43. suresh says:

    Are you a great software developer?
    I don’t think you are….great software developer do not discriminate the languages, they choose the best one that solves the problem.

  44. Anonymous says:

    Anybody who doesn’t get this and programs probably ought to follow #4

  45. krishna says:

    Don’t read books written over 10 years back? U must be insane to preach something like this.

  46. Felipe Ribeiro says:

    If it wasn’t sarcasm, it would certainly have been written by a Rails programmer. #trollface

  47. pavithra says:

    I don’t agree with the 10th point, java is not dead and it cannot be replaced… if it’s dead how come java7 has been released lately?

  48. Anonymous says:

    A very closed minded view of very relevant points! Try not to deal in absolutes here and you will be a better software developer.

  49. Anonymous says:

    If you dont like Java, pl dont tell others not to learn java, there are many devices which use java, there is no replacement for java,

  50. Point 10. Why is JAVA dead? Could some1 tell me why? All I know is that
    1. I haven’t been coding JAVA after college era
    2. I’ve doing .NET coding and web coding
    3. The Java Standard Edition 7 was released back in July 2011.

    • Kim says:

      Of course it’s not dead. He was only beeing sarcastic. It’s basically a variant of the “X is dead because someone I like recommended Y and I switched to it”

  51. Anonymous says:

    Seriously, I follow my own practice strictly. (point 4 FYI)

    It’s not about keeping a safe distance between codes and myself. Your point is right, especially when those practices are useful, though as much as it’s from the books.

    Anyway, rules are meant to be broken, isn’t it?

  52. Bout that says:

    Well the general performance loss as we go up the language chain I would suggest going back to C or even better yet Assembly Language.

  53. Great list! “Thinking for yourself poses the risk that you will come up with the wrong answer.” or the “risk” that you might “waste” time and re-invent the wheel.

  54. Pingback: Sarcasm « programmingtipoftheday

  55. Amri says:

    Sorry, just seeking for another options for Java. And here we are, we have Ruby. Is it really that good of it’s just another option for PHP?

  56. Dolmat says:

    This post is really entertaining!

  57. Pingback: How to become a great software developer (via codeshite) « Only Software matters

  58. Anonymous says:

    For me the worst part in this article is the #4. WTF?

    To be a good programmer you can’t think, just copy something from somebody else an you should be fine!

  59. José Luis says:

    “5.- Read only books written in the last 10 years”. Are you kidding me? The Art of Computer Programming – 1962.

  60. I am not a great Software Developer.
    I recently learned Erlang and now reading up on Haskell.
    I feel guilty all the time for not finding enough time to code something up in Lisp.
    I read/worked on SICP last year.
    I think a lot.
    I prefer understanding principles instead of putting a fancy name to what I just learned

  61. Pingback: How to become a great software developer | HassanG

  62. Brilliant stuff, I preach this at most conferences (@diabolicaldev) – would it be OK to borrow a few of these points to freshen up my talk?

  63. Himanshu says:

    “Recognise the bullshit when you here it” … I mean the keywords you have mentioned is the basic terms that every developer has to be familiar with. Without these you are nothing.
    I do not know which type of programmers are you talking about. LOL

  64. justadude says:

    well, mr. codeshite if this is sarcasm well done otherwise you have most probably no real experience with programming.

    From the 1st point to the last everything you wrote is absolute nonsense, for example :

    “Start with design patterns – Always start with a design pattern, then try to make your problem fit it. Ideally start with the pattern you have most recently read about as this is most likely to be the best one.”

    HAHA … is that supposed to mean something?

    “Java is dead* – ”
    Java is dead, yeah for sure look at android, spring, processing, the play! framework etc … your IDE is probably written in Java too unless you use visual studio or vim,

    if your goal is to safe lost programmers (geez, do you think your some god or something?) you should start with yourself …

  65. Kiki Ahmadi says:

    Awesome Troll! Should post this into fiery programming forums and gain profits :)

  66. Wow. I’d so have to disagree with #1.

    I’m currently undoing a codebase that has a dozen “separate implementation from interface” design patterns and “use a factory to make them” patterns.

    Choosing the wrong pattern, or making a problem fit an ill-suited pattern is … an anti-pattern.

  67. Hatim says:

    should I be sad that there are lots of people who actually don’t get this article. But hey there are lots of real life social situations where I am a total n00b.

  68. Stilgar says:

    You suggest learning Ruby? Really? That’s so 2009! If you want to be a software developer these days you definitely need node.js.

  69. Excellent list. I particularly loved the snort about Agile gurus :)

    Comments like the one of Michael DuPuy (and to lesser extent the others that seemed to know better than the blog poster…) do make me consider the side-effects this type of blogpost can have.

    A seasoned programmer knows this is a parody from the first sentence (or stops reading because he knows this post can contain only other nonsense). New programmers however, will not easily pick up on the sarcasm. Since many of the points are things actually said by some less-gifted fellow bit afficionados, it can quite certainly take them reading the comments to figure it out.

    A simple indication of the fact that it’s sarcasm on the bottom of the post could help tremendously. And yes… I too like reading the comments of those that don’t get it, but I know how tough it can be as a new programmer, trying to figure out best practices and getting tips on something other than how to (not) use pointers in C.

    So kudos for a nice post and forgive me the morality tale

  70. Shouldn’t “become a ‘rockstar’ or ‘ninja’ in a very specific set of skills in whatever is the newest, shiniest computer language out there”? I think our brethren trying to reach the singularity using Node.js and jQuery need a shout out.

  71. Anonymous says:

    This is deeply wrong in so many ways:

    1. You don’t use software patterns because you can, you use them as they become necessary. However, it is useful to learn how they are implemented, which problems they solve and which problem they create if they’re mistakenly applied.

    5. UML distilled was written in 1997, over 10 years ago. Same with Effective C++ and other classics, just to name a few.

    6. Many new ideas lack of real world validation. Someone posts something in a blog, someone shared it via Reddit or Twitter, people liked it… but that doesn’t make it better.

    7. Pair program with the right people, people with real world achievements.

    9. Why new jargon? There are plenty of terms out there.

    10. Java is not dead, C++ is not dead, etc. They have their uses which are in most cases, more wide in range than Python, Scala, etc.

    11. You design and create reusable components, not beautiful statues.

    12. Yeah, don’t think by yourself, just get a 10+ years old books.

    13. Blogs are shit, you better read books.

    • (cue Futurama picture)

      Not sure if he didn’t understand this was tongue in cheek…

      Or doing the rare ‘double sarcasm’ comeback?

      • Anonymous says:

        I believe that true double sarcasm would require a heartfelt rebuttal of each and every point, including 2,3,4 and 8. The lack of thoroughness implies strong emotion in the mind of the comment author.

    • There was a weather goddess who could not read the atmosphere. She had a very hard life because of that. After some years, the villagers were so annoyed by her that they carved a big stone for her. She thought the stone was a gift for her, but when she sat on it, a monk placed protective charms on the stone, making her unable to move. A stone was moved far from the village, but even now, at night you could hear a faint scream nearby.

      She is bound to the stone for more than 500 years now. There is a legend, that some reckless people died stroken by lightning after touching the stone.

      Sad is the life of a goddess, truly.

  72. Berlin Brown says:

    Java isn’t dead, you 15 year old tard.

    • test says:

      I really really wish that HTML5 supported the sarcasm tag. Not enough tards (your term) in this world who don’t get it.

      • Justin says:

        Good news…

        1) HTML is a rolling standard now. So it probably will support it someday.

        2) HTML5 is really all about JavaScript. With JavaScript you can just add that tag yourself. It will even work in IE6!

    • Nuck says:

      Java itself is dead. Variants and offshoots of Java, however, remain strong. Java has been forced out of th browser for taking forever to initialize and slow in interactions. Java has been forced from desktop applications because damn, it sucks awfully; need I say more than “swing?” The only places Java remains strong are (1) Minecraft (2) colleges (3) servers, via Scala (4) Android

      Everywhere else, Java is dead.

    • But sarcasm is, you apparently-older tard.

  73. Geptor says:

    I agree with this completely. I love DubStep too!

  74. James says:

    This article is pretty good but I have a couple of comments on some of your points.

    In reference to number 1 “Start with a design pattern”. This is great advice and will save you a lot of time in the long run but also make sure you fully understand how your problem is being solved by the pattern you choose. Try to approach the problem from different points of view and see if the same pattern still applies. This will deepen your understanding of design patterns over time.

    Follow practices strictly is another great piece of advice but you must understand why it is a practice. Don’t just blindly follow like a sheep, take the time to understand why it is a practice!

    Number 6 “Be aware of old ideas”, like styles old ideas will come back into fashion and they can be great building blocks to solve modern problems!

    I don’t mean to sound rude but is number 12 a joke? Never fall into the trap of thinking for yourself?! I would totally disagree with this statement. I think when you first start out as a developer this is sound advice. But you will learn best early on from failure. So take the time to think for yourself, question everything and fail often. You will be better off in the long run! When you do fail try to understand why you failed!

  75. Pingback: How to become a great software developer | The Personal Blog of Artem Koval, M.Sc.

  76. Great article, I’ve had a nice laugh. :)

    But the point about Java I’d reconsider a bit. Not because Java is old, but because it has some principles that are not useful when hacking or trying to express ideas, especially when there is only one person involved. Of course in an environment that spans many developers (and statistically most of them are not good), Java is a blessing.

    And the 9 is my favourite. Developers just love to put fancy names on everything. After some while it’s just like reading TVTropes.

    • …Or anything related to banking is going to need COBOL :D

    • Nuck says:

      I dunno I hear Erlang is great for big programs. There was a movie about that.

      • Me says:

        I used erlang for a bot to that google maps Monopoly game a few years back. Worked great. Got me banned after 3 days due to me basically taking over the world. lol

        Erlang was an interesting language. I don’t do the type of work to use it often, but great for the occasional weekend project.

    • Laas Toom says:

      Now being a rubyist for almost a decade, I have had to use more than a handful of different languages at some point in time, from Perl, through Java and PHP to Objective-C, I strongly agree to the point that not always one needs TheLatestHype.js.

      But I’d still argue against that “anything of any complexity in enterprise programming is going to need Java or .Net”. I tend to think that enterprise systems are over-configured and programming in Java is actually too much writing XML. As such I think Rails’ “convention over configuration” would work deep in enterprise just as well with much less the effort.

      But of course enterprise systems are just as old as Java itself and turning them around is hard work (if not impossible), so knowing Java well would guarantee a paying job for a lifetime.

  77. Arentyouglad Youaskedforaname says:

    It’s odd that you include a serious point (Java being a legacy programming language) in what is otherwise a parody.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s