Last week I was ready to quit my job. Working solely on Magento for almost 2 years I felt that my career was stagnating. Yes, I earned good experience on Magento, financially I was stable and my team-mates were awesome.
But after 2 years I find myself in this situation:
- I know only a couple of design patterns.
- I know too little about security.
- My code style could need some improvements.
- I didn’t work on Symfony or Zend Framework 2.
- I know little about unit testing.
- I didn’t worked with tools like: Capistrano, Puppet, Doctrine etc.
- I know nothing about caching.
While talking with my manager he asked me: “What do you want do to in your future?”
I didn’t knew what to answer. I knew what was bothering me, but I didn’t had a plan to solve it and quitting was not the solution. I mumbled something to look confident about my future but the fact is I had nothing.
So I decided to stay for now. But at the same time I promise myself I would come up with a plan for my career. A real plan, with SMART objectives.
It’s not only about my career. It’s about being an experienced and confident programmer, about people relying on my experience and on me being a craftsman and not a laborer delivering quality. This is what I want.
So, inspired by a post from reddit I came up with these steps in order to be closer to the developer I want to be:
Books to read:
- Essential PHP Security by Chris Shiflett DONE
- Design Patterns: Elements of Reusable Object-Oriented Software by the Gang of Four
- Patterns of enterprise application architecture by Martin Fowler
- Test driven development: By Example by Kent Beck
- Growing Object-Oriented Software by Steve Freeman
- Clean code by Robert C. Martin DONE
- The clean coder by Robert C. Martin DONE
- Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin
- PHP 5 Objects, Patterns, and Practice by Matt Zandstra
- Implementation Patterns by Kent Beck
Tools to learn:
Frameworks to work with :
1 . Start going to work at 8. I found that going early to work increases my productivity. This will allow me to deliver good code and I can get out earlier so I can work on the list above at home.
2. Quit Facebook. DONE A simple measure to eliminate distractions at work.
3. Go to gym. DONE I found that when I’m exercising I’m in better shape both physically and mentally. This will avoid the burn-out.
4. Create a weekend project using Symfony/Laravel. DONE I will try to build a week-end project using Symfony/Laravel so I can say I worked with these frameworks.
5. Contribute to a project on github. I’m sure there are a lot of people from whom I can learn. And Github is the place to be when searching for this kind of people.
I plan to do these resolutions within a year. I know this list isn’t perfect. If you have suggestions of new items for my list or any advices I would be glad to hear them. This is my Linkedin profile to help you have an idea about my current experience. If you have some projects where I can contribute on Github I’ll be glad to check them out. I’ll keep you posted with my progress.
later edit: WOW. I didn’t think this post will be so popular. In just 2 days almost 2000 people read this post. Thank you all for the e-mails, comments and advices. You can see the discussions raised on reddit here. I will keep this post updated with my progress and maybe I’ll come up with other posts about the things I learned.