I’m fascinated to learn from the comments what other people have seen.
Best practices in computer programming, especially for devops types of positions, consistently involve Test Driven Development, pair programming and continuous integration. While quite a bit of research has been done on the topic, most people seem to agree that an agile approach to devops yields better quality code, perhaps at the short term expense of some time, especially in the beginning. New things take time to learn. However if you factor into the TCO the time required to update, adapt, operate, troubleshoot and otherwise change a system of this nature then huge gains can be consistently proven if cultures can adapt to the new way of doing things. Modern systems have smaller risks with regard to both requirements and implementation with less management and business overhead.
Looking at TDD, unit testing builds a set of tests just before coding, acting like a vice around the functionality provided by your code. You Now have the freedom to made more radical changes with quick feedback to respond to environmental changes. You can improve your code with fear that it will break. The quick feedback of unit tests run quite often alleviates any apprehension that a system will somehow break mysteriously and require extensive debugging. After a test environment has been setup, tests can be added to legacy code gradually, providing confidence and assurance that things are working as intended now and especially as changes are made and new tests are added.
The more experienced I’ve had with computer systems in different ways, the more I believe that the people involved dictate what an environment is like much more than any one or group of technologies.
You wouldn’t visit a doctor who did not keep current with medical journals. You would not hire a tax attorney who did not keep current with the tax laws and precedents. Why should programmers work for companies that do not keep both keep current and provide an environment where their employees have lower stress, are more productive and stay around longer?
For a moment, let’s look at the opposite perspective for a moment. There are often good reasons for the status quo, good reasons for doing things the way they have been done before. Tried and true computer programming idioms and their exceptions might be well understood by programmers that developed the systems. However newcomers asked to make changes are unable to rely on the experience accumulated in developing these systems initially. Newcomers also lack the experience accumulated working with a system under different conditions and during previous changes and updates. Of course using the same code the experienced folks don’t have to learn new ways of doing things and can more easily jump back in should something go wrong for any reason. New coders may also come and go, leaving behind a mess either accidentally or intentionally, so keeping things the same is safer.
We meet at Bobby G’s Pizzeria on the second and fourth Sundays of each month from Noon to 3PM in Berkeley near the Downtown Berkeley BART station. Bobby G’s is on University Ave near Shattuck Ave. We hope you join us, join the discussion on our email list and/or join us in #berkeleylug on freenode.net by following the tabs at the top.