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.
Justin James is an OutSystems MVP, architect, and developer with expertise in SaaS applications and enterprise applications.