I just read a pretty good article on CodeProject (http://www.codeproject.com/gen/work/standaloneprogrammer.asp) about how to be a successful programmer when you’re the only programmer at a company. The suggestions in the article are all good. I am in that situation as well. Not only am I the only experienced programmer in my company (there are other people there who write code, but on a very limited basis, and nothing very in-depth), but I am also the systems administrator.

All in all, it is a pretty daunting task. If the servers blow up while I am facing a deadline to write an application… well, get the coffee brewing because it’s going to be a long night. Our customers have the luxury of having dedicated IT people – here are the DBAs, over there are the programmers (sub-divided into Web dev folks, desktop application developers, specialized Excel/Access people, etc.), the sys admins are hidden in the data room, and so forth.

In some ways, I envy these companies. What I would not give to have to keep flipping between Windows 2003 Enterprise Edition troubleshooting, FreeBSD troubleshooting, database optimization (let’s not forget, I get to run MySQL, Microsoft SQL Server, and Oracle, to add to the confusion), and programming in a hundred different languages – half of which seem to be VB variants to keep me on my toes at all times.

The confusion can be pretty funny sometimes, especially when I am multitasking. I recently told a customer to try “telnet’ing to port 443 to check for connectivity” when I meant to tell her to “comment out the if/then block” because I was troubleshooting an SSL problem on my server while helping her troubleshoot our code over the phone. Another classic is when people ask for a piece of code advice, and I give them the right answer… in the wrong language. Too many times, I have crafted a great Perl-ish regex for someone to elegantly solve their problem in one statement, only to remember that they are using VBA (or worse, SQL).

The situation has its rewards, however. I get to build experience along parallell lines, for instance. I can honestly say that in one year at this job, I have “1 year Oracle, MySQL, and MSSQL DBA experience, 1 year VBA with Word, Excel and Access, 1 year Windows 2003 and FreeBSD systems administration, 1 year VB.Net, 1 year ASP.Net, 1 year blah blah blah…” If I was one of those specialised IT people, I would need to work for 20 years to get one year experience in so many technologies. Of course, I came into the job with plenty of experience in a lot of different things, otherwise I would not be qualified, but still, it’s great to get a wide variety of experiences all at once.

On that note, the work is rarely boring. I don’t get mentally stagnant, and there is always something to do. If I am not working on a project, there is always some systems administration that need to get done. If I don’t have any internal projects to get done, my help is always welcome on someone else’s project. Do I get bored? Sure I do. But I get bored a lot less often than I did when I was a pure programmer, or a pure systems administrator, or a pure whatever.

To all of the other lone wolves out there, my hat goes off to you.