Jakub is a Java EE developer since 2005 and occasionally a project manager, working currently with Iterate AS. He's highly interested in developer productivity (and tools like Maven and AOP/AspectJ), web frameworks, Java portals, testing and performance and works a lot with IBM technologies. A native to Czech Republic, he lives now in Oslo, Norway. Jakub is a DZone MVB and is not an employee of DZone and has posted 156 posts at DZone. You can read more from them at their website. View Full User Profile

Knowing I’m Bad Programmer Makes Me Good Programmer

  • submit to reddit

I know that I’m not a good programmer and this knowledge makes me actually a very good one. As Kent Beck says: “I’m not an excellent programmer, I’m just a good one with excellent habits.” [1] I know I’m a bad (read “a little above average”, if you plan to hire me ;-) ) programmer and therefore my code will contain bugs. So I like to write unit tests even before the code itself, and I prefer having the test fail first for thus I’m sure that it works (well, at least in a basic way). Being a bad programmer I also know that my design isn’t perfect and no matter how hard I try it’s very likely that it will need to be changed in the future. I therefore don’t try to account for all possible future changes and to make it so flexible that it could deal with all of them because I know I’d be wrong in this. Instead, I prefer simple designs and well isolated parts of code so that it will be easy to reorganize and refactor them as needed. Last but not least, knowing my weaknesses I appreciate very much when somebody else reviews my design and code and I’m very receptive of different points of view and ideas. For the same reason I do not hesitate to ask my collegues for an opinion or an advice when I’m unsure. (Kent Beck yeasterday twittered: “amazing how fast you can finish if you care more about feedback than avoiding criticism”.)

The net result is that I create a simple, well-tested code open to changes (i.e. easy to change in a safe manner), which is easy to read an understand (for I know that somebody will need to modify it many times, often the somebody being an older myself). And because I’m not afraid to ask, I’ve better and more suitable designs than I could create just by myself. Thus I produce a good, clean code as a good programmer would write.

[1] M. Fowler – Refactoring, page 73 in the Czech translation
[2] R.C. Martin (ed.) – Clean Code: A Handbook of Agile Software Craftsmanship


From http://theholyjava.wordpress.com/2010/11/17/knowing-im-bad-programmer-makes-me-good-programmer/

Published at DZone with permission of Jakub Holý, author and DZone MVB.

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)



Nikolay Rychkov replied on Thu, 2010/11/18 - 6:19am

Worst is me. I make one site for a year! :)

Andrew McVeigh replied on Thu, 2010/11/18 - 10:06am

As Kent Beck says: “I’m not an excellent programmer, I’m just a good one with excellent habits.”

Such a good quote. I see good programmers ruined by lack of discipline/excellent habits.  Then again, good habits are not enough either if the quality of implementation and design is not there.

Bruce Wallace replied on Thu, 2010/11/18 - 12:08pm

I have been advocating that we Programmers learn Western Philosophy for a number of reasons. [PhilosophicalProgramming.com][ExistentialProgramming.com]

This topic falls into that category because we would have learned of Socrates, the father of western philosophy, who unlike others, believes he is not wise.

This Humility Theory of Knowledge.[per Stanford Encyclopedia of Philosophy]

As his student Plato wrote... Socrates and his friend Chaerephon, visit the oracle at Delphi. As the story goes, Chaerephon asks the oracle whether anyone is wiser than Socrates. The oracle answers “No, Socrates is the wisest person.” Socrates reports that he is puzzled by this answer since so many other people in the community are well known for their extensive knowledge and wisdom, but Socrates claims that he lacks extensive knowledge and wisdom. Socrates does an investigation to get to the bottom of this puzzle. He interrogates a series of politicians, poets, and craftsmen. As one would expect, the Socratic grilling reveals that those who claim to know either did not really know any of the things they claimed to know, or else they knew far less than they proclaimed to know. The most knowledgeable of the bunch, the craftsmen, knew quite a bit about their craft, but they claimed to know things far beyond the scope of their expertise. Socrates, so we are told, neither suffers the vice of claiming to know when he does not know nor of claiming to have wisdom when he does not have wisdom.

Jakub Holý replied on Fri, 2010/11/19 - 5:37am in response to: Bruce Wallace

Hi Bruce, thanks for the interesting comment and the link to your blog! 
I've gone through some philosophical education so it's very inspiring to see 
that it could be applied in the technical job I do for living :-)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.