|
The first company I worked at hired a fairly poor developer, who eventually turned into a quite talented programmer. When he joined his front-end knowledge was shocking, and he was entering a mainly .NET office with knowledge of PHP, so he spent most of his time on our smaller sites that run PHP. He struggled with many of the basics, and even though I was a good friend of his I was asked by the Managing Director if he was capable enough to stay with the company. I said yes, solely because I didn't want to see a friend sacked on the opinion of a dev with only a few years experience. As a bit of back-story, the dev process when I first joined was shocking. The "Technical Manager" would help with phone lines and was my direct boss. As he didn't trust me with files I had to give any files I wanted FTPed to a server to him. There was no source control, and we were running from free versions of the Microsoft dev tools. When other people needed Photoshop for basic designs the company abused the 30 day trial across different VM's. After the above conversation I had become Lead Developer after the Technical Manager left. With this new responsibility I had set up Continuous Integration, automated delivery to the servers, and had bought Visual Studio licenses for the devs. Amazingly, the Managing Director was fine with this, and had no idea that we didn't have the tools we needed. Now that the .NET side was sorted I had to move onto what we'd do with the PHP dev, who had basically spent six months modifying basic WordPress sites with forms. Since we were looking to move some of our smaller PHP sites to larger sites, I decided to try and steer the development of his projects towards tools that would make him a better developer, and would ultimately force him to adapt. Instead of WordPress for these soon-to-be complex sites I suggested he find a framework (he chose CakePHP after we looked through them). From there, I decided to integrate him more with the .NET developers so that he would have to look at how we do things and then think about how he'd implement things for his tool set. We introduced weekly code reviews for all devs, and I think that helped him out the most. It took a while, and carried on after I had left, but he moved from Windows to a Mac, managed to set up TeamCity for use with his PHP projects, moved some of the sites to PostgreSQL during the new build phases, and over time his code has improved significantly. It's been a number of years since we worked together now, but he's gone from someone that could barely work without WordPress to someone that writes good code and can deliver. Ultimately, it makes me believe that a bad developer is just a developer that needs direction. |