Old school developer vs new school developer
Tags: php, growth, learning, agency
Published: 2020-02-02 10:24:16

Every language has its quirks. PHP has been know to be a language where it is very easy to do things badly. In reality it is not the languages fault but how we as developers treat it. Being a lead developer and seeing new employees (and candidates) in action has shown me that there are two types of PHP developers - new school and old school, each with their own issues.

*Old School Devleoper* is one that has been building functionality for a long time time (obviously). He/she started doing this before the advent of frameworks, most likely even before Composer was a thing. This is a person at whose CV you'll look and consider for a senior level position. But it is not always as great as it looks.

Some of the main risks of the old-school developer:

* old habits die hard - the longer you do something, the more you get used to it. It becomes hard to adapt to new techniques, new technologies and even new coding styles.
* if the person is not driven to keep improving the code will be functional but more costly. Features will be built from scratch instead of using a library loaded from composer. Templating will be built manually (and will likely include a risk for XSS vulnerability) instead of using an existing library like twig / blade. 
* harder adaptation to new frameworks and languages.
* ego - after doing something for a long time developer will get the confidence of the approach. Whilst not bad on its own, this can cause issues when task is misunderstood or the approach/code does not follow the company's overall guidelines. Also can struggle with having respect for co-workers.

Some of the strenghts of old-school:

* usually a strong understanding of tasks and how to build it.
* strong time estimation skills.
* understanding of vulnerabilities and how to avoid security issues.
* usually some dev-ops experience.
* good patterns for analysing and debugging. Doesn't go in circles but knows where to look for issues and how to find them.

*New School Developer* is one that has started web development in the "green days" of PHP. These developers will likely use one of the major frameworks/platforms (Laravel/Symfony/Wordpress/Magento etc.) and will be a powerful tool in your company's arsenal as long as they don't have to step of the comfort of their knowledge.

Some of the main risks of the new-school developer:

* Knowledge is usually tied to one framework/platform. Likes to avoid and often shows negative attitude to other tools available.
* With frameworks like Laravel handling large amount of sanitation (through templating & PDO) is likely to not know to deal with security risks as they are always handled by the framework.
* Usually has less experience and can lead to functionality not matching requirements perfectly or required time may be underestimated.

Some of the strengths of new-school developer:

* Knows a framework very well and prefers usage of external libraries to build functionality quicker.
* On overall can be quicker as doesn't need to build functionality from scratch, knows the tools and doesn't consider security on every step taken.
* Is more fond of the new techniques like Test Driven Development and package building.
* Can bring a new and fresh perspective into a company.

So with these two contrasting developer types which is the right one? That largely would depend what kind of developer you need/want to be. For what I've seen in my work there needs to be a mix of both. Old-school developers can achieve this by encouraging new technologies, "keeping the finger on the pulse" to ensure they don't settle into their ways too much. New-school developers need to encourage diversity of frameworks, learn not only about what they are skilled in but also branch out into other frameworks/platforms. 

*P.S. Where do I consider myself in this? I would probably call myself an old-school developer by heart. But to ensure I don't settle in too deep I spend a lot of time deep-diving into frameworks like Laravel and its underlying Symfony features. I build complex functionality like search filters and shopping baskets in vue.js. I try to ensure I keep learning and growing my skill-set.*