Each time I sit down to help someone relatively new to coding I find myself somewhat awe-struck at how much I've "forgotten". Just install nginx with gunicorn and django in a virtualenv. Package up your code with a setup.py using distribute. Run your unittests with Nose. Use sphinx and embedded doctests.
You tell someone that kind of thing and they come back with "what's a unit test?" or "how do I get to the server's GUI?" (hey, they use Windows, how quaint) and you realize that all this stuff is just sitting back there in the project hind-brain while a new developer has to learn every little thing.
Back when I actually studied Design, this was something I outlined as a behaviour that senior designers exhibited; basically they would find a very effective set of basic patterns and iterate on those patterns with each project. The risk is obvious, you may be stuck in a local minima, but the reward is that you don't need to worry about how to get the plumbing to the faucet.
We try to avoid ossifying. We play with new ideas in "safe" projects. We discuss and share ideas and experiences with others. But we don't really want to give up the "standard" approach when we just need to get a job done that is similar to those we've done before. Having those deeply understood well tested and well understood approaches means that we're pretty sure the whole thing won't get too badly messed up. But trying to communicate all of that accumulated knowledge is... challenging... without appearing like a hide-bound old coot.
And you kinda want to see what the new guy will come up with by themselves, just in case it's more interesting.
Pingbacks are closed.