Abstract: How can you become an excellent Java programmer? Is it an inherent trait or something you can learn? Can you learn Java if you are already over 30? Over 40? Over 60? In this newsletter I give some tips on how to become a Java programming expert. Hint: It's not as easy as it looks. But it's also not impossible.
Welcome to the 100th edition of The Java(tm) Specialists' Newsletter, sent to 102 countries around the earth. I get excited when new countries join the newsletter, and especially so if they are in Africa. I would therefore like to extend a special welcome to Josef Garvi from Niger, probably the only Java programmer in Niger ;-)
Today is the 4th anniversary of our newsletter. What started as a tiny newsletter four years ago to this day, put together for 80 friends and colleagues, has grown into a readership of approximately 10000, with 500 visitors to our website daily. Many people have asked me where the ideas for the newsletter come from. This is a difficult question to answer. I have tried to answer this in a webpage entitled: Who is Heinz, and where do all the ideas come from?. This webpage is my personal opinion, so please don't be offended by it, ok?
There are several reasons we are celebrating today. First off, ours is probably the only programming newsletter that is published internationally from Africa on a regular basis (please let me know if this is incorrect). Secondly, ours is one of very few Java publication that specifically caters for Java Specialists. Thirdly, 4 years is a long time, and 100 newsletters are a lot newsletters. Any excuse for a party is a good excuse, so let's party!!
What an interesting four years this has been! I believe that as Java geeks, we should spend more time sharing our knowledge freely. I have strongly resisted becoming "yet another" commercialised Java publication, and can say that I still do not derive any direct income from The Java(tm) Specialists' Newsletter. [My auditor scolds me every time he sees me. His standard question is: when will you start charging your readers? ;-]
NEW: Refactoring to Java 8 Lambdas and Streams Workshop
Are you currently using Java 6 or 7 and would like to see how
Java 8 can improve your code base? Are you tired of courses
that teach you a whole bunch of techniques that you cannot
apply in your world? Check out our one day intensive
Refactoring to Java 8 Lambdas and Streams Workshop.
I am frequently asked: How can I become a good Java programmer? I know that the majority of subscribers to The Java(tm) Specialists' Newsletter are already excellent Java programmers, but if you are asked this question, here is an answer you can pass along.
How can I become a good Java programmer? This is an interesting question, so let us picture for a moment, that a fan is asking David Beckham a similar question about soccer:
Fan: "Good morning Mr Beckham, my son would like to start a career playing soccer. What advice can you give him?"
Beckham: "Is he playing in the junior league?"
Fan: "Oh no, he does not play soccer. But he often watches it on television."
Beckham: "Oooooh. What other sports does he play?"
Fan: "He plays golf. On his computer. Other than that, we once played table tennis together."
Beckham: "Aha. How old is your son, by the way?"
Fan: "He is 35."
Beckham: "So, your son does not play soccer, he does not do any other sport, he is already 35 years old, but he wants to become a professional soccer player? What is the real reason? The real real reason?"
[and yes the answer is always the same]
Fan: "I heard that you can earn lots of money playing soccer."
[For those of you who DO want a career in soccer, I was speaking to my father-in-law Gregory Kytides the other day about this. Gregory was a professional soccer player in the 70s, and was voted "player of the year" in South Africa in 1971. He told me that unless you start playing soccer when you are a young child, you will never be good.]
Becoming a programmer starts early in life. You would have been at a great advantage if you were good in mathematics and physics. Here I am not looking for the tools that you learn doing maths, but rather the interest in "thinking" subjects.
Then the next step is to want to program for free. Yes, you heard me right. Remember the soccer example. Imagine if David Beckham had not wanted to play soccer in school because he wanted to wait until he got paid for it? Isn't that an absurd idea? Yet how many programmers want to get paid to do something which is, essentially, an extremely enjoyable experience?
When I embarked on my programming career, salaries for computer programmers were quite low. I certainly did not study computer science, in order to get a high-paying job. No, I studied computer science, because I have always loved programming.
I am a firm believer in getting a solid programming foundation. The minimum that you should have is a bachelor of science, majoring in Computer Science. In addition, being good at Mathematics helps.
Ok, so now you are programming for free, and you have a BSc in Computer Science, what do you need to do to become good?
I believe that being a programmer is not a job, it is a life. In order to learn it, you need to eat, breathe, sleep Java. There should be very few waking moments where you are not thinking about Java.
Let's say, for example, that your official work day starts at 8:30, and ends at 17:00. It is what happens after those hours, that will determine your future as a programmer. i.e. what are you doing between 6:00 and 8:00, before you set off for work? You could be programming in Java. And what about the time from 17:30 (when you get home) until 24:00? If we take into account a few responsibilities, you have an additional 1.5 hours in the morning, and 6 hours in the evening.
I am not making this up. If you want to be a good Java programmer, you need to have the dedication to further your own knowledge "after hours". Instead of christmas presents, buy books from Amazon.com on Java, Object orientation, Design Patterns, etc.
Imagine if at the age of 28, you had $600m. What would you spend your days doing? Mark Shuttleworth is probably South Africa's most successful (or in his own words, most "lucky") software developer. Mark started Thawte in his garage, and then sold it 4 years later to Verisign.
I have often discussed this question with friends. What would I be doing if I suddenly had $600m at my disposal, tax free? My feeling is that I would be doing exactly what I am doing right now. Writing newsletters, writing programs, and learning more about Java and object orientation.
A magazine asked Mark how many hours he spends behind a computer screen per week. His reply? 90 hours. Here is a guy, who has struck it extremely lucky, and who will not have to work for the rest of his life, yet he spends 90 hours a week behind his computer screen??? Is he mad?! Yet that is what I do, and I would be no different to him. The key is the drive behind what you do. If your motivation to be a Java programmer is just to do a job, and to thereby earn a salary, you will never be good.
Becoming an excellent Java programmer is not difficult, just follow these easy steps:
There are very very few people who have the potential to be good programmers. It is a tiny percentage, on the right of the bell curve, that can do it.
These are some thoughts on how to become an excellent Java programmer. They are tough jobs to do, and by no means complete, but are meant to get you thinking. The next newsletter will be more conventional again.
We deliver relevant courses, by top Java developers to produce more resourceful and efficient programmers within their organisations.
Nobody ever wants to call a Java performance consultant, but with first-hand experience repairing and improving commercial Java applications - JavaSpecialists are a good place to start...