- 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.
- 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.
- 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.
- 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).
- 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.
- Beware of old ideas – New ideas are always better, fact.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
Feeling SOOO bad for the people who do not get the sarcasm here… Great post which is still relevant at the moment and, unfortunately, a lot of points made here are confirmed by my own working experience.
Point 8 applies to this blog post. Bullshit bingo.
Sorry! Didn’t get the sarcasm 🙂
The most strained jokes in the entire history of programming jokes.
Hmmm… no mention of standing desks? Experiments at the Mayo clinic show code produced while sitting was inferior and error-prone. Good programming starts with proper posture!
I posted my kata videos on youtube. Went viral and I no longer have to use IDEs or compilers. I just pay the cloud to to do it for me these days.
Be certain you retain your body hydrated – this might help forestall the physique from turning into dehydrated due to many episodes of utmost sweating. The reality is, sweating is definitely healthy for the body, as it makes use of perspiration as a way to expel toxins. The one perceived downside of sweating is what you assume people will consider you in the event that they discover you sweating profusely.
You post very interesting posts here. Your website deserves much more visitors.
It can go viral if you give it initial boost, i know very useful service that can help you,
just type in google: svetsern traffic tips
What does software engineering have to do with martial arts and eastern culture?
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.
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/
This piece of writing is genuinely a pleasant one it assists new
web users, who are wishing for blogging.
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)
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.
Great stuff!!. Just avoid above 13 points and you would be a good developer .
how can u say that . Is their any wrong with that ..
Great!!. Just avoid above 13 points and you are a g
Also a good software developer needs to update his skills with the new technologies. Sticking to one language may not help.
Pingback: Learning, Doing, Talking. Whats your balance? | Dirk's Page
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.
Very nice blog post. I absolutely love this site. Keep it up!
how to keep it up?
LOL, it took like 10 seconds until I realized this is not serious^^
Pingback: Reading Notes 2012-09-03 | Matricis
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?
Java is Dead? Ruby? Programming languages will never be dead. You are going to die, but not programming languages. Hahaaha
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.
then which language i can start first to become a best programmer
This is teh worst blog eva. I did everthing he says and I still can’t build enterprise applications using Dart. WTF?!
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.
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.
Ha ha you’re stupid. The blog is supposed to be funny. Continue your work codeshite!
Pingback: Adam gibi programcı olmak için: | Muhammed Tahiroğlu
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”
(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.
Just replace Java by C++ in the entirety of this post and it stlil holds.
#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.
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
Funniest blog post I’ve read in a while!
lol, the comments on this post are almost as good as the post itself. 😛
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.
This first-time-blogger’s post is recursively filled with irony. <– not an insult.
Nice article :).
OMG Java is so dead that twitter and Google plus uses it at their backend. (sarcarsm)
Pingback: Propose to code Shite two birds with one stone … « codeshite
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 🙂
Pingback: Links for 2011-09-08 | Business Developer Talk
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…
JavaScript is NOT Java
JavaScript’s syntax might be a lot like Java’s (and C++) but JavaScript is a functional language while Java is not.
and I understand that this posting is full of sarcasm but it doesn’t get the point right. especially points 2 and 10 are almost true. Java is a great language for backend stuff but if you develop frontend code compilation step and server reboot will kill your inspiration
wooosh
OMG toychicken!! Are you really a programmer???
I’m just going to hope ToyChicken is joking… If not, he most be a 60+ guys trying to keep up with the kids by writing calculator in JavaScript. Very sad…
Pingback: Ultimative Tipps: So wird man zu einem großartigen Softwareentwickler » t3n News
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.
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.
It’s such an interesting list to read during the morning coffee break session. Thanks for sharing. 🙂
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!
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.
It’s amazing how many people does not get the sarcasm and comment right away!
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.
😉
I like your style, it might have worked if I’d written it to become a better programmer.
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.
Anybody who doesn’t get this and programs probably ought to follow #4
Don’t read books written over 10 years back? U must be insane to preach something like this.
If it wasn’t sarcasm, it would certainly have been written by a Rails programmer. #trollface
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?
Very nice list!
A very closed minded view of very relevant points! Try not to deal in absolutes here and you will be a better software developer.
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,
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.
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”
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?
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.
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.
Pingback: Sarcasm « programmingtipoftheday
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?
I do Ruby. The answer is dependable. You can find a lot of topic in Ruby vs PHP. But for me, Ruby is better.
This post is really entertaining!
Pingback: How to become a great software developer (via codeshite) « Only Software matters
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!
“5.- Read only books written in the last 10 years”. Are you kidding me? The Art of Computer Programming – 1962.
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
Pingback: How to become a great software developer | HassanG
http://sieni.us/?id=38
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?
For sure, have fun.
Thanks, I’ll be sure to have a reference to this post – I mean we really ought to start a new manifesto right? .
“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
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 …
i was thinking the same;)
Totaly Agree!
Same here… I think this article brings nothing of value.
You’re absolutly sure? Living in US are we
Awesome Troll! Should post this into fiery programming forums and gain profits 🙂
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.
Um. Did you read past one before replying? If so, I think you need to read it again. You missed the secret message.
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.
Yeah, I scrolled down, thinking, Ha! Some people are not getting this. But as I went down I saw it was a huge majority…. 😦
No, it’s just a huge majority of people who got worked up enough to post responses that didn’t get it. People who *do* get it don’t post.
I am one of those who got the sarcastic tone and wasn’t going to comment. But I am commenting to let you know you’re right Tim.
You suggest learning Ruby? Really? That’s so 2009! If you want to be a software developer these days you definitely need node.js.
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
I was one of the n00b’s who agued against every point of yours in Joel Webber’s Google+ post till half way through it hit me :-))
Heh was the comment about Java serious or not, because I sure as hell believe Java is a dead language.
See footnote!
Java is Object-Oriented COBOL: http://www.artima.com/weblogs/viewpost.jsp?thread=42242
Besides, forget JavaScript on the server. It is all about C in the browser. Am I right?
I have met many new graduate developers, who understand the point of this blog post more so than many “seasoned” developers.
Those who don’t, and just agree with every blog they read are in the wrong industry.
It is the “less-gifted fellow bit afficionados” that should be ignored and discouraged, not codeshite for this satirical take on things.
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.
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?
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.
Java isn’t dead, you 15 year old tard.
I really really wish that HTML5 supported the sarcasm tag. Not enough tards (your term) in this world who don’t get it.
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!
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.
I agree with this completely. I love DubStep too!
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!
Um…. They are all humor James.
I’m really glad I read the comments since I’m new to programming and even though I definitely sensed that at best it was on the verge of the programming equivalent to the Tea Party I don’t know enough to know for a fact you weren’t just a lunatic without reading the comments.
Hahahaha. Talk about falling into the trap, James! Every single point in this post made me laugh.
Please tell me you were playing along.
Pingback: How to become a great software developer | The Personal Blog of Artem Koval, M.Sc.
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 😀
I dunno I hear Erlang is great for big programs. There was a movie about that.
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.
The Monopoly game you’re talking about didn’t use google maps but Open Street Map.
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.
It’s odd that you include a serious point (Java being a legacy programming language) in what is otherwise a parody.
I’ve found that knowing Java helps me re-educate Java programmers more effectively, though. Without knowing why some code is written the way it is–the mindset behind it–it’s more difficult to relate.