Many software developers are aware of this concept but few actually know it by name. It probably doesn’t help that there a variety of names it too. It’s called Developer Debt, Technical Debt, and so on. At the end of the day, Developer Debt means taking the quick and dirty way today knowing that tomorrow we’ll have to pay more to fix the issue because it will have evolved into a bigger problem, hence the idea of debt with interest.
Virtually all software development shops have to deal with the balance of developer debt on an ongoing basis. The problem is that it’s very easy, much like financial debt, to acquire it now and ignore the fact that we’ll have to pay for it later, with interest. It’s much easier to implement a quick fix today and ignore the longer term costs because we’re dealing with today, with this quarter, with this release, with now. Tomorrow may never come, and even if it does, it’s tomorrow and not today. Tomorrow we’ll have more resources. Maybe, but tomorrow the problem will also be much bigger because it will be embedded even more, other hacks will be included to work around the original hack we’ve just introduced, the code base will be larger (more places in the code will be affected), the original developers may be gone, the list goes on…
What will happen is that eventually the software will become such a mess that adding new features will be next to impossible. They will cost a fortune. They’ll be buggy. No one will really know how to do it. Every new fix will just be another hack (I’ve seen this on more projects than I wish to acknowledge). Things can quickly get out of hand. Just like credit cards, it’s very easy to keep spending to keep up with your neighbors and forget that one day you will have to pay the balance due.
In addition to this, as a little side note before continuing, there’s a concept called the Broken Window Syndrome that will come and take hold of your project. In essence (without explaining the original study which you can find here), what this means is that if you let a few small things fall apart, pretty soon other bigger things will also start to degrade. And before you realize it you can end up with a mess of a code base where you can no longer remain competitive.
Going back to developer debt, what often happens is that companies get hit with “major architectural releases”, “rewrites”, etc. Basically large parts of the code base need to be rewritten for the software to continue evolving. It comes to a point where nothing can done in any reasonable time or method. For companies that don’t learn, this process gets repeated very frequently as you can see from the following graph. (If any of you know who originated this graph please let me know as I can’t recall where I was introduced to it.)
As you can see from the graph, what’s happening is that you initially get a lot of activity. Software development is moving along at a very rapid pace. People are happy. Things are getting done. Features are being added. Things are going smooth.
Then slowly but surely features start taking longer to be added. More bugs are introduced. People start to add quick fixes, quick temporary solutions, hacks. “We don’t have time to fix it properly so we’ll just do this this one and only time and fix for the next version.” So at first the slowing of the graph is almost imperceptible. Then over time you start to hear the developers complain how hard it is to do anything. At first it’s a few faint whispers from the development team than it becomes the main water cooler talk for the whole company. Things start to take a very long time to get done. New people can’t get up to speed in any decent amount of time. Everyone needs to learn how “things are done here”.
At this point you start to realize that something is wrong. For many this is the time where they realize something drastic needs to be done. The code can’t just quickly be fixed anymore. Maybe the software needs to be “updated”. Maybe the architecture needs to be refactored. Maybe a rewrite (I strongly suggest you think hard before deciding to do a full rewrite). Whatever the case something needs to be done. If you’re one of the unlucky few, then this will continue to be delayed indefinitely until the company expires. The hacks will become more obvious leading to insanity for lack of better word. It will eventually collapse the company.
But if you’re one of the luckier few, the company will decide to invest in upgrading the quality of the code. This will take time. There is no magic bullet. At this point it’s where you get hit with developer debt. All those items you’ve been pushing off are now coming back to bite you, and bit you hard they will. What was once a simple little hack has now grown into a full blown framework that’s completely inadequate. Simple fixes have now escalated into large structural changes. Not only is the capital due, but it’s due with interest!
Of course this never happens at a good time. Is there ever a good time? Nonetheless this generally happens after a company has begun to pick up steam. After all it won’t happen in the initial stages, there’s nothing to hack at that point. It generally happens when a new company is starting to really get going, when they need to be running at full speed. Of course once they’ve got the ball rolling, it’s hard to take a step back to catch up. They need to keep going at full throttle to keep the ball rolling. Momentum at this stage is important.
As an analogy, imagine that it’s financial debt. You’re starting a business. You put money in. At first you don’t have any real debt but within a short time you start to use your credit card to pay for smaller items. Within a year you’ve got a balance but you’re business is growing so you decide to push off the debt repayment. After all you need all the capital you can to grow your business as fast as possible. Then another year or two go by and you’ve added more debt. Maybe you’ve also added a line of credit to your corporation. No matter what the medium is, suddenly you find yourself with more and more debt. Sure you’re making more money but the monthly payments on your debt are now starting to hold you back. You’re using all your cash flow to just make the monthly payments. What do you do? Get more debt? Possibly. But at some point you need to settle this debt otherwise its weight will suffocate you. This is where you start to imagine what it would be like without debt. Just imagine if we didn’t have to use 50% of our revenues to pay our debt. Our cash flow would be so much higher. We could invest in the future. We could really grow!
And unfortunately this is where a lot of companies stall or go bankrupt. Something has to be done to resolve the debt. It cannot keep going. You no longer have any free cash flow to grow. You need to bite the bullet and resolve your fiduciary issues. Yes you can get funding and use the money to resolve all your issues, but if you don’t learn your lesson you will be doomed to repeat it.
Are there alternatives? Is every software company doomed to repeat this cycle? Absolutely not! I’m a very strong proponent of the Agile development process, also known as RAPID development. It’s not a magic bullet, there is no magic bullet. Magic bullets don’t exist, hence why they’re called “magic” bullets. What Agile development does is allow you to smooth out the curves from the above graph. Rather than large growth periods followed by really slow growth periods, it smoothens it out. Rather than paying interest in large amounts at inconvenient times, it stops you from accumulating interest.
Unlike what most people think, Agile development is not easy. It requires a lot of dedication and commitment. It requires continually adherence to the concept that no hacks should be left within the system. No kludges. Everything should be continually “upgraded”. No ugly hacks should be introduced. No quick fixes should be added. Architectural changes shouldn’t be postponed. If something needs to be fixed, do it now. Don’t delay it. This is why I actually find it’s “harder” but well worth it.
You also have to remember that along with software development needs there are business needs. It’s easy for a developer to say we have to hold back a bit “to do it right”. But the business still has it’s financial needs. People need to get paid. The rent needs to be covered. Things have to move forward.
It’s the fine balance between over extending yourself versus paying everything cash. Most business like to deal with leverage (debt). Most people behave the same. Most people use credit cards to finance their current lifestyles, hence the impending credit crunch we’re now facing. Nevertheless, the Agile proponents favor cash deals. Everything is paid in cash now. You don’t acquire any debt, you pay for what you can now. Much like personal finances. Don’t buy what you can’t afford in cash today.
As simple as this model is, it is limited. I do believe that debt can be good as long as it’s properly managed. The problem is most people can’t properly manage debt. Especially when decisions on how much debt to acquire are made when you’re trying to go a million miles an hour to get your next release done. With the Agile development process, at least you slow this down significantly to a manageable level. And you limit the amount of debt you will acquire.
Although short term it may seem limiting, realize that within a few years you’ll be about even with the company that pushes out hacks in terms of feature count. Debt and it’s interest will start to drag them down, slowing them to snails pace. And within five or so years you will be further ahead and moving faster than them. You’re growth curve will never be straight, that’s too idealistic, but it will be significantly smoother and inclined. It will not taper off over time, you will continue your same momentum and overtake your competition within a short time as their curve starts to deteriorate. And once you’ve overtaken your competition they will never be able to catch up to you because you won’t have the ball and chain of debt slowing you down.
Recently Shannon contacted us for some pre-sales questions about LandlordMax to which we promptly replied as is part of our policy. She sent us the following glowing email about our customer service that I had to share in it’s entirety:
“Thank you for the user manual link.
The explanation helped a lot. I really like all the features and also I really like how many different reports I can run ( since I tend to micro-manage 🙂 ). Ive been playing around with the software quite a bit and I would say that I can navigate it really well now. Besides those minor issues I came across, the program is very easy to use.
I sincerely appreciate the time that you have spent helping me and also following up to make sure that the program is working for me. It is hard to find that level of customer service anywhere, especially when you are asking for support from a software company. ( Trust me, I have dealt with a lot of them with my normal 9-5 job). I will be buying the software and also referring my fellow investors to your site to see for themselves what a great program you have!!
Thank you Shannon for the great compliment! It came at a great time because the support ticket just before that I personally responded to was from someone complaining that we do not offer phone support, that they couldn’t understand why. We tried this but found it was not a viable option for us. Although we don’t offer phone support, it doesn’t mean that we aren’t willing to go the extra mile through our other means of online support (online web forms, email, etc.). We are. Thank you Shannon for letting us share your experience with us.
Although I thought it wouldn’t happen until at least the end of this month, the USD is now equal to the CDN. In reality it’s actually now worth a little bit less. although temporarily negligible I suspect it will significantly widen before it settles down.
As I look at it this very moment: $1.00 USD = $0.9984 CDN
As a Canadian I should be rooting for a stronger CDN dollar to increase my purchasing power, but as the founder and majority owner of LandlordMax I’m rooting for a stronger USD because 86% of our sales are to the US and hence in USD.
As many of you read from my article yesterday, and probably already know from following current events in the news, the USD and the CDN are almost equal now. Today it closed at $1 USD = $1.0138 CDN. Almost no difference. And based on the current trend it won’t be long before the CDN overtakes the USD for the first time in many many years, even decades if you will (since the 1970’s).
Based on this, we’re making yet another price change to adjust to moving exchange rate. We’re now making the USD and CDN prices of LandlordMax Property Management Software the same. We’re one of the first companies to do this, if not the very first. Others will have to follow soon. The price premium from the prior exchange rates can’t continue.
“This wouldn’t be so bad if the cost of living in Canada wasn’t higher than in the US (add in the fact that I live in the most expensive city in Canada). It would also be nice if businesses that import their stuff from the US start to lower their prices, but they don’t. The price differences on cars are now huge! For example, a new Porsche 911 Turbo cost $123,000 US ($127,000 CAD at today’s exchange). Walk into MCL Motorcars and they want $177,000 CAD for it. I told MCL I could save $50K by buying the car from the US and importing it to Canada. They said Porsche would not honor the warranty. I said $50K pays for a lot of repairs!”
Well at least now there’s one product that’s in line with the exchange rates!
As those of you who follow this blog know, I’m pretty transparent about what’s happening at LandlordMax. I’ve posted traffic growth charts, revenue charts, and many other interesting pieces of information. Today I’m going to share a little bit more information that I recently dug up and found interesting while preparing for a potential interview about LandlordMax for a major newspaper publication.
Over the last year our sales have been divided by country as:
Where the 5.8% sold to International countries is spread across the world to every single continent except Antarctica. Although not very likely, I’m still working on that one. As for the percentage of sales in Canada, remember that we’re a Canadian company. Most of those sales actually come from our home town of Ottawa, Ontario. I’m sure it also helps that I’ve also been part of several real estate and investments groups, clubs, etc. And I generally don’t hesitate to plug LandlordMax here locally when I can (local events, etc.).
Another interesting metric, which actually surprised me quite a bit, is the division between the Downloadable Only versus Shipped CD options. Over the last year 23.8% of all our customers have purchased the shipped CD option along with their purchases of LandlordMax. Although I should be on top of this, I had estimated the numbers at 5%. That’s quite a bit more off than I thought. I guess as we’re slowly automating more and more of this process it feels less and less time consuming. The cost is still the same it’s just that the time required to ship a CD has dropped.
All in all some very interesting sales metrics. What does it all mean? A lot. As I’m mentioned it here before, the dropping value of the US dollar to the CDN dollar is significantly affecting us. Now that the USD is almost on par with the CDN ($1.028 CDN = $1 USD), we’ll definitely have to make some price changes. We already knew this was coming regardless of the exchange rate, after all we haven’t increased the price of LandlordMax for over two full years now (it’s needs to be at least adjusted for inflation). However now we not only have to take into consideration inflation, but also the exchange rate. The lower the USD is to the CDN, the more of an impact it will have on that decision.
1 Year USD versus CDN
5 Years USD versus CDN
We’re of course not the company facing this exchange rate issue. Books are still nowhere near adjusted to the current exchange rates. Cars are insanely overpriced in Canada compared to the US when you take into consideration the exchange rate. It’s now a lot cheaper to go to the US, buy a new car, and import it to Canada. Even after paying taxes and losing the warranty on the new car! The economics no longer work. Many companies are dealing with this, the problem is that the drop in USD is happening very fast relatively (in half a year we’ve seen a drop of about 15% in the value of the USD). It’s no longer a matter of if, it’s a matter of when and by how much.
I recently had the very fortunate chance of reading Founder at Work: Stories of Startup’s Early Days by Jessica Livingston. What can I say, it’s a great book! I had problems putting it down. It’s filled with non-stop stories of how people started their software companies. Jessica was able to get interviews with so many great founders that it’s amazing the book wasn’t any longer (and too bad).
Each story was great on their own, but some always stick out more than others. For me personally, I really appreciated James Hong’s story of how Hot or Not was founded. I had heard of that site when the internet was a new thing, but I didn’t realize just everything that went into it. His parents even got involved in trying to filter out inappropriate images at some point. He explains to his dismay that he realized this, and then what he did to solve it. For that particular company, in the beginning they were really flying by the seat of your pants. Jessica’s writing is definitely able to convey their crazy roller coaster ride, you really feel what they went through.
Others that stuck out to me where Max Levchin’s Paypal story. Steve Perlman’s story of how they founded WebTv. Caterina Fake’s story of Flickr. The list just goes on. Every story is interesting. In reality there’s not a single founding story I can say I didn’t thoroughly enjoy. Jessica really has a talent for pulling the best out of the people she interviews.
The best news of all about this book is that according to her Channel 9 interview, she’s in the works to create a sequel to this already great book. I can’t wait for it to come out. I’ll definitely be one of the first to pickup a copy.