I recently received an email from a reader asking me for advice about
improving his developer skills.
I am not sure there is any straight answer to this question but let me throw
a few random ideas.
- I have certainly found that reading (a lot of reading) is certainly a
great way to accelerate your skills and to force your brain to expand its
Reading Java books is one way of doing it but the most important thing to me
is to try and vary the books I read as much as possible.
- Studying other
languages is also a fantastic and fascinating way of learning new concepts
that change the way you think. Somebody once said "learn a new language every
year" and I can’t agree more. And just like natural languages, the more
languages you know, the easier it becomes to learn new ones.
Things can get really interesting when you start "cross-pollinating":
mixing concepts read in several books. For example, trying to apply
concepts that are particular to a language (e.g. closures) to a language that
doesn’t support them (e.g. Java).
Also, don’t be afraid of marginal or complex languages. I see this
practice similar to mathematics: it’s something that you study not
because it will be directly applicable to you, but for all the wonderful
benefits it will indirectly bring you. For example, the complexity of
C++ is daunting and you might not want to be involved in such a language as
long as you don’t really need it, but that would be a mistake. Pick a
book by one of the gurus and look at the amazing things they can do just by
tweaking the concept of templates (partial specialization, traits, etc…).
Similarly, more abstract languages such as Dylan or CAML are quite confusing
at first but they will reshape your way of thinking in interesting ways.
It is very rare to find "curious" colleagues. What I mean by
curious is simply what I just described: people who are not only good at
their job but who also like to explore other areas and discuss them. If
you happen to have somebody like that in your work environment, take every
opportunity you can to have lunch or coffee with them. There is nothing
more exciting than two curious spirits bouncing off ideas. Separately, you
and him will spark interesting ideas, but if you put both together, the total
knowledge will greatly exceed the sum of its individual parts.
Of course, all this would be useless if all you did is read and never practice.
At all my jobs, I have always saved some time every day to do something "on the
side", something that doesn’t pertain to my work directly. Working on side projects is definitely a way to sharpen your skills, especially
if you can be involved in a project for a long time, which will allow you to go
through all the cycles involved in the development process. If you can do
this, it’s worth it. Don’t forget to have a life and enjoy your hobbies,
though, this is a lot more important than it may seem. If you are not
balanced, you will quickly plateau at work, no matter how dedicated you are.
Finally, there are a lot of books I could recommend. I try to maintain a
list of books I read, feel free to take a
How do you guys "stay sharp"?