How to advance your career? Read the Passionate Programmer!
I just finished reading the The Passionate Programmer by Chad Fowler. It is about creating a remarkable career in software development. Developers out there, highly recommended reading!
In this post 15 things you can do, according to the book, to build that remarkable career:
1. go the other way
Compete on niche markets, if you go with the mass, you probably will compete against a low-wage countries.
2. know the business you are in.
Having worked in a hospital, at consultancy companies, in logistics and big tech companies, I can clearly see this.
Businesses operate very differently. It makes a difference if you understand their business models! At the end of the day we are assets in a company (or for a client) that runs a business, we are making money!
3. play with the best
When I played basketball long time ago, I was put in a team that played at a higher level. This was certainly difficult at first, but in the more stressful environment (important matches) I learned more than ever before.
The same thing applies in every field: the higher the skills of the people surrounding you (and expectations), the better you become.
Learn a new programming language each year. Why not? Try new stuff, the more you open up to new technologies, the more you widen your horizon, the better you become. Uncertain where Java will be in a few years? Learn clojure. Ruby or Python? Do some programming in both of them. Then you know which one fits best in a particular project. Now you do have a choice as you have enriched your toolkit!
5. fear, our worst enemy
I can just quote this one, brilliant: "Fear-driven career planning is more likely to land you in a cubicle farm for the rest of your life than on the path to greatness. Sure, it’s safe, but it’s no fun."
6. be all-round
You will only be a specialist if you grasp the wider scope of the area you are working in. Programming in php? Take some time to set up an apache server with php and mysql. Working a lot with jQuery? Try prototype. You get the idea.
7. just do it
Don't wait for others to teach you something, go out and learn it yourself!
8. find a master
Finding a master can narrow down the wide scope of learning in this all too broad field of technologies. The author tells us how he was directed (btw, the book is full of great stories of the author's personal life, he rolled into software development being a musician!): "dive into directory services, get comfortable with a UNIX variant, and master a scripting language"
And remember this Zen proverb: "To follow the path, look to the master, follow the master, walk with the master, see through the master, become the master."
9. be a mentor
Teaching is a great way to learn. Writing a blog post is very useful to understand a topic. It forces you to master the stuff yourself and to formulate things well (writing skills). As the book states: "To find out whether you really know something, try teaching it to someone else.".
10. practice, practice and practice (discipline)
You are only going to master something putting in a lot of practice (time). Read something, code a bit, fail at it, improve, read something, etc.
Watch out for procrastination. Usually just starting something is enough.
And with self imposed constraints this works even better. I mentioned in a post on productivity the law of Parkinson: if you set tight deadlines you can increase your productivity. Why not applying it to learning. Can we do exercise x in y time?
11. start small
Have an accomplishment to report every day. Keep a diary (blog?). Accept that you are not that capable after one week, just accept you are better than yesterday.
Start slowly to keep you motivated. See also zen habits for more advice on this.
12. enjoy the ride
Focus on the present, not the goal itself, enjoy small victories you would miss chasing future goals. Live in the present. I enjoy as much the coding as the end result.
13. don't get comfortable
The more successful you are, the more likely you are to make a fatal mistake. Never get too comfortable, especially knowing that what you know today can become obsolete tomorrow. In this sector your cannot really afford to rest on your laurels.
According to the book, the best thing you can do is making yourself 'generally' useful. Never rely on one technology or company. Some skills you master, even your job, can become obsolete tomorrow, always look for ways to improve / enhance / expand your skill set.
14. market yourself
Contribute to an existing project, write a blog, create and share source code, be useful to an existing community.
You'd do this out of passion, as a hobby, of course, but indirectly you are promoting your work / skills / brand.
15. watch the market
The book mentions "alpha geeks", the ones that are always ahead of new technologies. They will talk early on about things that might become big news in the tech sector. Identify and follow their tweets and blog posts.