So, I’ve been thinking about this for some time now and discussing it on and off with various people and seeing blog posts about this framework, or that library being the ‘one to use’, and the next big thing etc and I keep thinking “well, this isn’t right… Developers are just Tradesmen… aren’t they?”
To give weight to my analogy, a developer is someone who produces / fixes / creates something – often from nothing – using a set of tools to complete their wares… and that’s where this comes from…. a “set of tools”. If you’re a builder, you trained to be a builder. You learnt how to build a wall, build a house, lay a path etc etc. You didn’t train in how to use a saw, or a hammer or a trowel – those are simply the tools you used to achieve your objective, and every tool you have in your box is more useful for one job than another – and the more tools you know how to use, the more problems you know how to solve efficiently (and that’s the key word here – efficiency).
Yes, you can probably get by with a limited tool set… you could maybe knock nails around with a spanner, or mix plaster with a hammer etc, but it’s not ideal. Ultimately, in order to do the best job possible, in the most efficient way, you need the right tools – and developing is no different.
Previously, you could make a great living (and probably still can in some areas) as a Zend Developer, or Symfony, or Laravel developer, or a Doctrine expert etc and that’s great work – if you can get it. But nowadays, there aren’t that many opportunities for someone who can “just hammer nails in” or “cut wood”. Developers need to approach their “craft” the same as tradesmen do, and that’s expand their toolbox.
Learn some different frameworks, get comfortable with certain ORM’s, look at new languages and complimentary technologies to PHP. Get a massive toolbox, some of which you’re incredibly proficient with (the hammer, the screwdriver, spirit level etc being Slim, Zf3, Laravel etc – your core tools) and some which have extra or niche use cases but you have in the box (like the socket tester, the extra long drill bit etc being Doctrine ORM, or Eloquent or OAuth2 Libs etc). You wont always need them, but sometimes if a job is bigger than you thought, or you turn up at the house and it has 2′ stone walls, you’re gonna need that extra long bit! You could do it with a hammer and chisel, maybe – but you’d make a hell of a mess, you’ll be there for hours and chances are you’ll either be out of pocket – or if you do get paid for all that time, the customer will never come back to you or recommend you.
Your tools shouldn’t define you as a developer, they should just be what you use to execute your trade. Get an arsenal of tools in your developers box and then when you’re approaching a job, you can turn up with your bum crack showing, assess the problem while whistling through your teeth, and pick the best tool for the job – comfortably being able to ask for “tea with 2 sugars please mate” and eating all the biscuits, knowing you’re going to do a great job, in the most efficient way possible.
THAT’s how you become a great developer