One programmer in the front line
I don’t know about you but in the company I am working there are many Unix system administrators like me but really few of us can really script.
Scripting is really convenient when working in big distributed environments like mine one. Is a life saver for data collection, implementation automation, error notification, etc.
But what to do when you are the only ex-programmer in your team and want to automate many activities while you need to work in daily activities like keeping the servers alive and updated?
Some practices and experiences I have learned if you are the only programmer in the front line are:
– Design and document like a pro: The fact that you don’t have to interact with other fellow programmers on the same code doesn’t mean that you shouldn’t document and design as much.
Most likely if you are the only coder means that you will likely have many of your creations wondering around in your environment. If you don’t follow best practices, eventually you will forget how certain scripts work and interact and you might even be scared of opening the source code ever again.
– Explain to other users about the options and limitations of your code: If you are the only coder, chances are that your colleagues do not quite understand the limitations of scripting and they expect that you (and your apps) can do everything they ever imagined not knowing the complexity of their request.
If you have been a programmer for a small-medium company, you probably already know this.
– Think before you start a new project: for every creation, you will be responsible of supporting, securing and upgrading your code.
If it is possible, try to centralize the multiple scripts in a single applications. A real example is that I created a script that executes other small segments of code stored in segments in a XML document, collects the output on a ore-defined and unified XML format and provides its own channel to send the information back to the collector server to be processed.
In this way I don’t have to worry anymore to open new channels of communication with my collector(s) server(s) or to worry about creating an special and different output for everyone of my scripts and I just have to maintain a single application.
NOTE: If you don’t get what does my application does, it is just like Nessus. An application that performs customized security checks by adding/removing Nessus rules. Nessus provides an unified engine to process all those rules and generates a single report from the output.
– Keep an uniform version control: In horizontal platforms it is very simple to forget which machine has each version of your script.
– Express programming is not an standard: The biggest temptation is that if you are the only coder, you head straight to the keyboard and start programming something.
Follow the best practices of a normal development environment. Just hitting the keyboard will lead you to have many bugs and unexpected changes wasting your scarce time.
Use express programming only if you are a seasoned programmer and/or if the script to be developed is very small and simple.
Comments and suggestions are welcome.
Victor.