At the start of a new year, whose name is in many a new product, it's a good moment for some small reflections before rushing on. My job over the years has been "with computers". To most people in my surroundings, including my wife, there is no big difference in setting up a network drive for sharing the family photos and web enabling a legacy planning app. Way back, when I started my job, you needed a broad knowledge to play your part. Over the years I have always tried to keep up with the many aspects of IT, which accumulated in running my own website and mail traffic. Which also helped me in better understanding the kind of environment my applications have to live in.
But some problems at the end of last year made me change my mind. It had been a very rich experience to set up a fully functional site but to keep it running day after day is a different ballgame. The worlds of IT management and Software development differ on a very crucial point. In the last year(s) we have learned how to develop software following the scientific method. Isolate the problem to a single statement and try to falsify that by a repeatable experiment. In TDD words: mock up the environment, write a test which (initially) fails and automate running the test. Having to do "some" IT management made me realize how incredibly important and satisfying it is to work in such a way.
My problem was that I started missing incoming mail. Something in the long chain between the sender and Outlook went wrong. But what ? I have been delving through firewall monitors, event logs, configuration files, registry settings and a lot more. Awful, the Visual Studio debugger is a paradise compared to what I've seen. My main problem was that all of this was passive, I can only observe the output of some tools. To understand which and how all parts work together I have to be an Exchange system architect. Which I'm not. Again and again I wished for a way to do some real experiments on the parts of the system. An experiment to test the firewall, an experiment to test mail acceptance or routing. I wished for all that the most when I found the real problem. My tests would have read green. The real problem were the master MX dns records which had gone stale; which slowly propagated over the web.
I dare to state that we as software developers have a fundamental better way of building systems and keeping them alive. While ranting, I even dare to say that the situation is worse because (in my experience) a major part of the IT staff is just bad, not really fit for their job. Over the years I've met many a guy who would rather be a "real" developer but had failed the opening exams and now spent his days typing setup scripts. I'm the more mad at them because XS4all, an internet provider which used to have a good name and advertises with "we're not cheap but we are good", employs these kind of trained monkeys as well. On my email problems I made a phone call to their support line as they are my provider and do my DNS registration. The question was loud and clear "Hey, I see a significant drop of incoming SMTP traffic". After 40 minutes he still did could not say anything more "You run your own mail server and we do not support that". Idiot ! End of rant. Yes I do know some good IT staff. To them I can only say, be proud of yourself, you are a rare breed. Make sure your boss understands your qualities.
The main lesson I've learned is that I am going to narrow my focus. With IT management I've had my fill, this is really the end of my private hosting. When it comes to software development I'm going to focus as well. Not on what's inside all these new api's. But on how to use them. On a testable reproducible way.
Happy new year !