A development environment is a pretty personal choice, but when youve got over twenty developers all working on the same codebase, you need to start deciding on some standards. You need to find the options that aid your productivity, rather than restrict you with unnecessary overhead. Plusnet has been running its business on PHP for over a decade now, and over that time weve used a mixture of home-grown tools and off-the-shelf solutions. Some of these have stuck, some have had teething troubles, and others just havent caught on at all. Well look at the choices weve made for the tools that support us throughout the development process, including version control, unit testing, debugging, quality metrics, bug tracking and, of course actually writing code. Alongside the obvious technical merits of choosing a particular tool there are other factors to consider such as licensing, community support, industry standards, performance, security and so on.
However, you cant just throw all these tools at your developers and hope that bullet-proof code comes out the other end. You need to look at how you can trial your new choice, prove that it works, and then integrate it into your development process and this needs to happen without just stopping your business at the same time. This might involve creating new processes to take advantage of the tools youve chosen, or alternatively you might be migrating from an existing tool to an improved option.
All of this is purely theory without someone to champion the cause, forcing a tool from the top-down is never as effective as having your developers wanting to adopt it themselves. You need some evangelists in your organisation who can play the role of salesman, mentor, and technical expert. Well use a few case studies to see the experiences our developers have been through in finding a tool they wanted to use, convincing the rest of us of its value, and then how they went about getting it adopted. Through this well pull together the theory and the practice to give you a solid plan for successfully incorporating a new tool into your development process.