NOTE: The information after the question turned out almost like someone who is venting. That wasn't my original intention. If someone does want to take the time to give me an answer/advice, skimming it might help.
QUESTION: I'm looking for a better way to phrse "single box development". I'm trying to take a first stab at telling my boss (the co-owner of the company who sees every dollar spent as a dollar out of his pocket) that, while it got us this far (i.e. he can't see anything wrong with it yet!), the limit has been reached.
BACKGROUND: I'm only programmer at a 40 person company. I started an LOB from scratch 6 months ago (WinForms/MSSQL). So far it's a smashing success. People that used to work until 10pm now head for the door at 6 and thank me on their way out (I know, yay for me).
I'm battling an "if it ain't broke don't fix it" attitude from people who only see the external results. I sit close to the end users (18 of them) - if something doesn't work, they all tell. If it crashes, they don't care because they walk over (50 feet at most) to me, I press F5, they show me how to reproduce it and more often than now I go, "Oh, that's easy to fix - just didn't think of that case". Five minutes later I click "Deploy", and shout, "OK, get the new version!". ClickOnce deploy makes the line between web apps and desktop apps blur.
Knowing I'm only one person, I have taken every measure to keep the use cases non-dependant on eachother. If I write code that could do "damage" if it didn't work I've tended to putting preventative measures into database triggers, thinking "this limits my worst case" - but this feels "creative" to me, and usually that's an indicator that it's not a long term solution.
Now I have to add an ASP.NET solution added to my project. I've got two products on two different platforms with two different user bases, but all accessing the same data and for related business purposes.
I need to:
- Remain a one person software team.
- Have some kind of thing with the word "cycle" in it.
- Keep delivering features with the same pace and reliability.
For reasons I'm sure everyone already knows (and doesn't need to tell me) I can't keep adding features and meeting deadlines while maintaining the relatively low defect rate I've managed to date.
There's NO WAY I'm going to get the kind of monetary commitment required to start an in-house software company but I can't deny the benefits of having someone right there next to the stakeholders at all times observing how the business operates and ready to tweak things at a moments notice.
So my goal is to inch towards the way the rest of the world does it, and my current step is to get at least one more machine so I can have a formal integration environment.