On being a better developer

September 1st, 2013

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:

  1. Essential PHP Security by Chris Shiflett
  2. Design Patterns: Elements of Reusable Object-Oriented Software by the Gang of Four
  3. Patterns of enterprise application architecture by Martin Fowler
  4. Test driven development: By Example by Kent Beck
  5. Growing Object-Oriented Software by Steve Freeman
  6. Clean code by Robert C. Martin DONE
  7. The clean coder by Robert C. Martin DONE
  8. Agile Software Development, Principles, Patterns, and Practices by Robert C. Martin
  9. PHP 5 Objects, Patterns, and Practice by Matt Zandstra
  10. Implementation Patterns by Kent Beck

Tools to learn:

  1. Redis
  2. Puppet
  3. Vagrant DONE
  4. Capistrano
  5. Doctrine DONE
  6. nginx

Frameworks to work with :

  1. Laravel DONE
  2. Symfony DONE

Actions:

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.

 

14 Comments to “On being a better developer”

  1. I know exactly the feeling. I was in a similar place a few months ago and I decided to shake things a bit so I moved to another company. Also having a weekend project is an awesome way to enhance your knowledge. You are definitely making the right choice and viewing it from the right perspective.

    If you are interested in a introductory course to unit testing I would recommend you to check out this Coursera course by the university of Toronto https://www.coursera.org/course/programming2

  2. This is a great attitude to have. Always keep yourself challenged and learning. I went through the same phase a few years ago, and the more I learn about “good” code, the better I feel with each completed project.

    Here are a few books I really enjoyed.

    The Pragmatic Programmer : (A Must Read)
    http://www.amazon.com/The-Pragmatic-Programmer-Journeyman-Master/dp/020161622X

    Relational Database Design (Will help with object-orientation design as well)
    http://www.amazon.com/Server-Relational-Database-Implementation-Experts/dp/143020866X/

    The Clean Coder : (Being a ‘professional’ programmer)
    http://www.amazon.com/The-Clean-Coder-Professional-Programmers/dp/0137081073/

    • Andrei Boar says:

      Thank you Garrett! It’s nice to know that somebody else was in your same situation and got over it. I hope I will too.

      Thank you for the book recommendations. I just finished Clean Code. I hope The Clean Coder is also good. If I’ll have the time I will read the other two books :)

  3. George says:

    Hey, I’m at a company close by (at Tg-Mures) :)

    My book recommendations:

    1. Clean Code -> should be your nr. 1 on the list
    2. Code Complete 2nd ed. by Steve McConnell -> lot’s of info, very very good book.

    Also, learn a lot about architecture design, use case programming (if you want to sane).

    About technologies, you should add Composer to your list.

    As for contributing to an open source project, you should contribute to Kohana (PHP framework). The devs. are the most brightest people I came across with, you will learn a lot of new stuff.

    Best of luck of being a better dev.

    • Andrei Boar says:

      Yesterday I finished Clean Code. It was indeed my first book :) I already worked with Composer, that’s why is not on my list. Thanks for all your advice :)

  4. eric says:

    Gym sucks. Do this instead. before work, before morning shower. It rocks. and it works. http://mobile.nytimes.com/blogs/well/2013/05/09/the-scientific-7-minute-workout/

    • Andrei Boar says:

      I’ve read about this type of workout on Hacker Newsletter. Here’s a nice app for it http://www.7-min.com/ . But for how long have you tried it? I didn’t tried it so I’m curios if you had some results using this type of workout.

  5. Radu says:

    Nice post, Andrei! Keep up the good work. Maybe you should also add on your resolution list a new programming language – just to give you some new insights, maybe ?

    • Andrei Boar says:

      Thanks. I played around with Scala, Python and Javascript so far. Learning a new language can give you some insights as you said it, but right now I feel I should stick to the tools I listed above.

  6. Danish says:

    Hi Andrie,
    I was surfing net for searching answer to my question and I came across your post. The most important thing is to realize the current situation and need of improved. And you have done it successfully. I believe the rest of the steps would be much easy for you. I have little query. I worked a lot on .net but never specialized any particular product. now I am in a process of making choice between two things either should I work learn Xcode (iphone development) or I take magento as a product to be specialized. What you suggest me. Do you think megento is good to learn for making good money?
    I will appreciate if you suggest me using your experience.

    Danish

    • Andrei Boar says:

      I haven’t worked with Xcode so I can’t make a difference between Magento and Xcode. I think Magento is “good for money” because e-commerce projects ar usually medium or big.

      However, while money is to some extent a good factor for taking a decision, I think is not the primary one. Choose what you are passionate about, not what gets the most money. For example, here in Romania a java developer is better paid than a php developer but that didn’t made me to choose java instead of php.

      Even if you choose php as your primary language don’t get stucked on Magento. There are plenty of frameworks and cms to work with. Good luck!

  7. […] of my goals stated here was to work with Laravel Framework. So I did. Currently, I’m working on a week-end project […]

  8. […] of my objectives from being a better developer is learning Laravel framework. And I think the best way to learn a framework is by creating a […]

Leave a comment