In response to what I read on, “I’m in code debt” I figure I’d describe my situation here as taking out a programming mortgage. First of all, the situation I face daily requires you take out additional code loans to get by. I asked the question recently, “Should you code for management?” I’ve been constantly coding for management for the past couple years and fooling myself into believing I was doing something positive for our project. Truth be told I didn’t know then what I’ve come to understand. You can’t write code for both management and for your project. More specifically the code you write for management will never suffice for your project and the code you write for your project will never be approved by management. That’s where I made my big mistake and ended up with a programming mortgage. I’ve been asking about on Javaranch recently how to pay off my mortgage. (To be honest the mortgage belongs to the entire team, but that stretches the analogy a little far so we’ll pretend the debt is all mine.) I got recommendations for several interesting sounding books which I intend to look into.
Enough babbling about where I am or who do I run to. (“Who can I run to?” …is a song by an R&B group called Xscape which has little if any significance to the preceding or remaining text of this here post. I only bring it up because it happens to be a favorite song of mine that now will not quit playing through the innards of my grey matter and like I said in other posts I tend to type as I think. That think typing leads to my posts getting completely off topic and less than amusing and…) Enough! What I want to discuss now is my plan to pay off my mortgage. My programming mortgage that is because I’m not making any additional money in any of this even as much as I’d like to live without the extra $1K coming out of my pocket monthly. I was told by another developer (a couple other developers actually) that little refactorings pay off over time and I almost bought into the “make just the minimal payment” plan of attack. As I see things, when you have a mortgage it takes years to pay off the debt all the while you suffer with huge debt on your shoulders. Considering the life expectancy of technology years is way too long to maintain a debt, especially a debt as big as my mortgage. Something has to be done immediately so that we
- no longer borrow against the equity taking out second and third mortgages
- pay off the debt in a timely fashion, prior to my kids going off to college
We’re still talking about programming right? Anyway here’s what I’m doing about it.
I start by taking control of the organization of our project. What we have is a traditional business application that has been historically developed and viewed as a Java command line app even as it uses EJB. It includes a Swing interface that is heavily coupled to not only the RMI remoting technology but also to the database. In other words everything is generally made available via on big ol’ CLASSPATH that includes all dependencies without regard to code responsibility, client or server. I set us up to deploy in an EAR archive a while back but still the history of the big CLASSPATH remains throughout development. The next big step I’m taking is where I split the project into several coarse grained sub projects or modules. I referr to these modules as components because I plan to develop each module to be useable outside of the context of the application whichwill lend to different combinations of modules and the possiblity to assemble a componentized system from the modules. Each component is a project managed by Maven2 which compiles and deploys the individual piece to our shared in office repository. These pieces in theory will be used in assembly-like maven projects to build complete solutions. The hope is that we would be able to build out new alternative UIs for our core business logic and deploy the entire solution stack under different scenarios.
It is a mighty big feat for such a simple minded person as myself but I feel I can at least give it a shot. One of the major parts I’ve started already is defining the initial sub projects or components of the system. I got somewhat discouraged because I am no expert at architecture, only finding my way using random web articles. However, I feel whatever I come up with has got to be an improvement on what we have. It’s natural for a developer to feel pessimistic about anything he/she works on and I am taking my pessimism to another level. But when you’re faced with what is one big brick constituting a computer program and you constantly need to nail on another modification you have little recourse but to resort to drastic measures. After all nailing things onto the brick tends to split the brick leaving little brick crumbs on the ground that you can never quite get back into their original place. I feel fortunate enough to have a loyal team of developers working along with me that share my vision and have been institutional in other major refactorings all of which add to the overall value of our software. I wonder how many of my three loyal readers have lived through a similar experience. (Well I know two of them, my wife and myself, don’t really qualify for the question but let’s just pretend two other loyal people actually give a hoot about what shows up here every day.) Anyway, as always, holla at the man and tell me what’s up…
(The “man” in question referrs to the author of the preceding text. The desire is not for you to raise your voice in an unpleasant manner (hollering) describing what exists overhead. Instead the idea is for you to leave a comment reflecting your experiences, feelings, emotions, and/or child hood fears.)