Can one person do it all?
I just read this comic and found it hilariously funny. While this comic depicts a database administrator, this could very well be any single part of the IT chain. Programmers can say they haven't done a module, architects can say they haven't designed a spec, even the computer techs can say they don't have enough resources to fix a computer for any given reason, depending on their mood.
Anyway, the thing with this comic strip was the fact that I remembered the fact that where I work, I'm the only developer. That actually means that I'm the only programmer, the only architect, the only database administrator, the only tester - the only everything. Even the only server administrator here (not too many people apparently know Linux at a server level here in Puerto Rico) And it's tough, believe me. I'm expected to be able to analyze a module in the programming, create the database schema, code it and test it all by myself. While I'm mostly not too pressed for time, sometimes I'm expected to assume all these roles and do it fast.
At one of my favorite blogs around, Joel On Software, Joel wrote an article about something he calls The Joel Test, which are 12 small steps to program better. I'll list them out, along with how that currently applies to me:
- Do you use source control? - Yes, but only because I took the initiative to do it behind my boss' back, due to him not wanting me to "waste time on that".
- Can you make a build in one step? - This really doesn't apply to me, since we're only using PHP at the moment.
- Do you make daily builds? - Same comment as above.
- Do you have a bug database? - Yes, because I implemented it along with the source control system, thanks to the very excellent Trac software.
- Do you fix bugs before writing new code? - It depends. Sometimes I'm expected to implement a new feature ASAP before actually fixing something that could affect that new feature directly.
- Do you have an up-to-date schedule? - Nope. I never will have one. One of the major gripes about my current job is the fact that schedules never last more than a week. They change virtually every time my boss comes up with a new idea.
- Do you have a spec? - No, unless you count specs as informal conversations, which I have all the time.
- Do programmers have quiet working conditions? - No, and I can't seem to stress this to my boss enough. I work exactly in front of his desk, meaning I have to listen to him yap on the phone, or scold other employees during the day.
- Do you use the best tools money can buy? - Not really, but that's because I'm a conformist. As long as my work can be done, I'm happy with what I have. Of course, I'd have to answer 'no' on this too, because if I ask for a Macbook because it'll help me work faster, I most likely won't have it.
- Do you have testers? - Yes, but only if I can count myself.
- Do new candidates write code during their interview? - I wasn't required to code, nor provide samples of my work when I arrived here. And I've only had one additional programmer come work here, because the company thinks one programmer is enough, and she didn't need to code at the interview either.
- Do you do hallway usability testing? - HA! Sorry, I had to laugh. If I told my boss I had to write some tests to verify the code, even if it'll save tons of time in the long haul, I'll probably be at the unemployment line.
Out of twelve, I only have a score of two. Ouch. I don't like bashing my company, as I think it's been a wonderful place and my employers have given me this opportunity fresh out of college. But to have such a low score, it's just sad. I would like to implement a lot of steps here, such as having specs for every program, and the usability testing as well (I've been spoiled by Ruby). But I don't think I'll be able to work on that, plus do my normal duties by myself.
Seeing that I haven't worked elsewhere, as far as programming goes, I wonder if there are still places where this exists. I think smaller shops can't actually employ every single one of these, but I think they're at least out-sourced or something similar. While I strive to have this sort of pressure on me, it really becomes a burden most of the time. And what that leads to is just complete burn-out. It's happened to me before, but thanks to a nice week of vacation I took at the most beautiful beach here in Puerto Rico, it didn't affect me much. But now I'm possibly taking the same route again. Hopefully I'll be re-energized again. I'm showing signs of it now, due to me trying out new things while completing my job (for example, I'm taking the time to learn AJAX while implementing those features in my current program). So if it continues, I'll be happy. But I'll still be wondering if I'm the only one like this out there.