Let my story talk for me:
1989 : My father brought home a Commodore Amiga 500 computer => Countless hours of gaming!
1997 : My first summer after school graduation I heard the first rumors about something called “Internet”.
Internet came quite late in Greece.
1997 : My first contact with internet as a student.
2003 : Got my diploma in Electrical & Computer Engineering.
Fortunately, and under the encouragement of my professor in “Computer Networks”, I decided to build the simulator I needed for my research in Delphi 3.
2006 : Got my MSc in Electrical & Computer Engineering and I got my first job in I.T, as a system administrator.
From time to time I had to build some sites for my employer using a CMS or dig into the code of open source forums to fix bugs or make some custom extensions. Gradually, I started leaning more to software development than system administration.
2009 : My first contact with MVC frameworks.
It was the Yii framework. It was the first version of Yii and the code was not very welcoming for newcomers like me but the MVC concept was very intriguing.
2010 : My first real job as a web developer.
Started to become familiar with the 3-tier architecture of a web application.
2011 : Met CodeIgniter and loved it!
2013 : Doing my first steps in Agile Development through the ICONIX methodology.
I also switched from CodeIgniter to Laravel framework. Loved it!
2015 : Met PHPUnit. Loved it!
I started writing hundreds or thousands lines of testing code for my applications.
2016 : Met with Jenkins. Loved it!
Jenkins brought a better understanding of a production environment and a first contact with code metrics.
This was also the time that I got a better insight on many OOP principles and realized that…there is no spoon! A “framework” was just a DI container with a bunch of packages (routing, ORM, testing,…) and some extra code to wrap them all. If you know how a framework works, you can understand what offers you and what takes from you. You know when you should use one and when not.
2017 : My first contact with Microservices architecture, Scrum and Docker.
Alongside Scrum came a greater need for clean code and professional behavior. I also realised that Agile Development is just a set of new ideas. Some good, some not very good. Some that fit well in your case and some that don’t.