For the best part of the last decade I have been working as the only IT guy in tiny company. At it's peak this company employed about 8 staff. It's now down to 4, one of them part time. So the going is tough - but given its size it always has been. I enjoy working with the people there which is why I am still there and my employees have never blamed me for poor code or anything. They are entirely supportive of my work.
However I struggle intensely with the whole "do it properly" idea. For the first 6 years of working there I largely worked on our in-house web based CMS. This is from just before the times of Ruby On Rails setting the tone as an example of an efficient web application stack or Wordpress setting the blogging standard.
At the time we surveyed the available options and decided that nothing offered what we wanted with respect to standards, accessibility and usability (big mistake in hindsight, but such is life). So we (read I) set out developing our own CMS. The code I churned out is just awful, awful stuff. It got written in a haste as we were always playing catch-up with features or hastily meeting client deadlines. Our system became slower and unpredictable, changes difficult and so on. As you'd expect really.
I got more and more frustrated as I am aware of TDD, refactoring and so on, but there just never seemed to be the time. Also note that being the only IT guy also means maintaining the office network, providing desktop support, technical support in writing proposals and last but not least maintaining our servers and the 50-60 websites that run on them using our CMS.
I've rarely felt confident to even approach TDD as it IS a lot slower in the first instance. This has been constant source of real, and I really mean REAL, deep frustration. I know I am doing it the wrong way, but there appears to be no chance to do it the right way. Maybe I am just too weak, not a risk taker. I don't know.
But how have others coped in such a situation?
I am frequently at the point of throwing in the towel. Probably would have done if there weren't the tiny issue of having to support a family. Moving jobs would be difficult as it will likely mean moving countries (but that's by the by).
I sometimes wonder whether this whole TDD stuff is something which is almost the exception rather than the norm. We've recentlty jumped ship to Wordpress as we will never be able to get to that quality with just one IT guy. Having peaked into the code base, Wordpress doesn't look much clearer than what I coded up, and lets not talk about many of the plugins. But it doesn't seem to matter because Wordpress as a platform is rock solid, well documented and obviously has an outstannding QA procedure. And since moving to Wordpress most of my work appears to be around integrating plugins and coding up a few lines to hook it all together. Not much development at all really. Which leaves me with even less opportunity to do real satisfactory agile development.
I am particularly keen to hear from others in similar situation to me. Do you just write it off as part of the life of a developer in a tiny SME? I've really lost confidence in my ability to develop software as opposed to simply hack it all together. How do you go about doing best practice agile web development when you're the only guy on the team.
EDIT: good answers so far. I'd like to hear from others who are or have been in similar situations. ie working as the sole IT guy in a very small company. How do you cope with the constant demands for your time with no-one else to realistically help you out? Thanks.