There are many ways to set up a development environment when creating software. With a development environment I mean all the tools that the developers use to create the software, including the physical machines, operating systems, IDEs, build scripts, issue trackers, version control systems etc. Being a contractor I get to see a lot of different setups. If you're a new developer on a project that has been active for a while, it shouldn't take more than an hour from when you sit down in the chair on your first day to the moment when you have a working environment and can edit and run code. Unfortunately many projects underestimate how important this is. I've been in projects where weeks have gone by before some developers had the complete setup. Sometimes the hindrance is a slow authorization process by some remote IT support department which won't let you access parts of the system. Sometimes setting up the system requires deep knowledge of how the system works, and as a new developer it's cumbersome to troubleshoot a complex architecture with several interdependent components (GUI client, client-side logic layer, app server, web server, database, you name it). Sometimes it takes days to learn just how to build the damn thing.
There is a lot of time wasted on these things in software projects. The best thing to do to avoid such a situation is to have as a rule, from the very beginning of the project, that it should be possible to create a working development environment from scratch in one simple step. Typically the single step is to write a single command, whereby the build system will set up the environment properly, download the code from the version control system and create a complete working system. After editing code it should be just as easy to make and run a new build, but that goes without saying. Having a short edit/run cycle is essential and a one-step build process is a requirement for implementing automated continuous integration.
It is important to have the "one simple step" rule in mind from the outset of the project. It may take a little time to create an environment that supports it and with some esoteric development kits it may actually be a bit difficult. Still, it is an investment that pays off in saved time and frustration, and it is much more difficult to create a good development environment for a moderately complex project that has been going on for a while (not to mention projects that have been around for a few years). I wouldn't recommend creating the mother of all development environments from the outset. You can begin with a simple build system and add functionality to it as it is needed. Just keep the "one simple step" rule in mind.blog comments powered by Disqus