During bookshelf cleanup I re-ordered books so that order represented my “curriculum vitae” at a glance. Very entertaining exercise indeed! I am cheating a bit, since I had to remove books that are completely unrelated and most of my library is electronic, but that’s not the point. Let’s look what I got:
You study at a university and learn cool, but obsolete things like Pascal; You learn industry fundamentals, such as operating systems. Ironically, you understand the importance of latter only years later and have to re-learn a lot.
You join IT company as a junior programmer and learn a couple of real-world programming languages.
Company motivates you by paying for certification. You think certification is important too.
You spend most of the time on untangling crappy legacy code, bug-fixing and implementing features for users you will never see.
You learn how to become better programmer. TPP says patterns and TDD are important. Let’s see WTF it is.
You become the “smartest guy in the team” and leave the company because it’s time to try something new. For the first time in your life you join product company. Surprise, you have to build a product from scratch and there are no managers that can cover your back. Neighbouring team’s lead points you to DDD. 3 months of mind-blowing reading and you see software development completely differently.
Books by 37 signals and other loud-mouths say that you’re so special and it’s time to run your own startup. You learn how to run startup. Survived entrepreneurs (0.0001%/100) say that you have to give it 100% of your time.
You leave the company. Given your attention to details, clean code and MongoDB hype, MVP development takes 5 months. You fail startup, because no one really needs your product (you still think startup failed because code was not good enough)☺
You hate rice, buckwheat and dumplings.
You continue “enterprise” career. As a side-effect of entrepreneurial life, you start valuing monthly salary as never before.
You work, play and fight hard. You become an architect (what a significant job title!). Your responsibilities grow — gradles, puppets and shmuppets.
You understand that technology is not the problem. You learn how to work with different kind of people and how to make “A-team” from people around you.
Company grows exponentially and inter-team communication is painful. Scrum doesn't help much and you learn about alternatives. Alternatives don't help too — company grows uncontrollably and changes propagate slowly. It’s unfair fight, but let’s keep trying.
They make you a manager. Time to learn how complex organisations work and how to reduce unjustified complexity.
You become pain in the ass and got fired (check out my blog post On Firing). You need some motivation before you go to consulting.
You go to IT consulting.
You find yourself returning to fundamental things that you (probably) have already heard at university. Umm, they look much more interesting now!
What’s wrong with our education? Why I don’t remember most of the things? Why I have to re-learn? Let’s see what experts say.
Learning how things work and how to make a world better place is important, but not as important as learning how to see the world. It all starts with a peace in mind. It makes you much more well-grounded — a better professional, colleague, consultant, friend, human being.
What’s on your bookshelf? ☺