In my previous professional life, I was a software developer. In fact, it was the actual software development part of my work that I truly loved. I enjoyed designing software, figuring out what the customers and stakeholders wanted, thinking about how to make that a reality, and then actually doing it. At various times, I worked on projects by myself and on projects with larger teams. Even today, I still do some programming in my spare time, as I simply enjoy it.
One of the things you figure out pretty quickly as a software developer is that you need some sort of smart methodology for taking on a large project, and the larger the project, the more important a sensible methodology becomes. How are you going to move from the relatively vague ideas produced by the people who want your software to a finished object that’s ready for use and able to be maintained in the future? A software development methodology gives you a pathway for doing that.
Not surprisingly, there are a lot of different ideas and models for how to develop software, and over the years, I’ve tried many of them.
What I’ve learned is that almost all of them work well and are a big step up from blindly stumbling in the dark through a software project. I’ve also learned that different software development concepts click really well with certain people, and not everyone clicks with the same idea.
Even more than that, I’ve come to realize that there are a lot of good ideas in software development that apply really well to everyday life.
Software development itself taught me how to organize my thoughts, come up with a detailed plan, and push it forward, and those are skills that are valuable in many different avenues of life. Various software development methods taught me how to do those things even better.
Below are three examples of exactly what I’m talking about – specific software development concepts and methodologies, how they work in broad terms, and then how to apply those concepts to your financial state as you move forward toward your goals, whatever they might be.
A Few Caveats…
If you are not a software developer, please note that I am doing my best to avoid software development jargon and I’m intentionally simplifying as many specific elements of software development as I can in the descriptions while still conveying the core of the ideas behind it. It’s worth noting that when you use that approach to examine software development, you can see how the concepts apply to many areas of life – personal finance, for instance.
If you are a software developer, please note that in many cases I am simplifying descriptions of the specifics of these software development concepts. It’s far more important to get the general idea across to non-software developers than to get lost in nuance. In a few cases, I may lack accuracy for the sake of simplicity and clarity, so just bear with that.
Let’s get started with the first of the three models, scrum.
The Scrum Model
Scrum is a software development methodology that inherently recognizes that the requirements of a project are going to change as the project moves along. To me, this mirrors real life – our needs and wants are constantly changing and that affects the choices we make each day and how we plan for the future.
How Scrum Works
In my experience, there are six key elements of the scrum model that really make it work. These are the backbone of the scrum model.
The project owner is the person who makes sure that the customer and the other stakeholders get what they want. This person is the person responsible for managing the overall goal of the project and communicating any changes in the goal to the rest of the team.
The scrum master is the person who handles problems as they pop up. If there’s a crisis of any kind, it goes to the scrum master, and the scrum master figures out how to deal with it. The scrum master gives overall direction of the team as they move toward the goal.
The development team is the set of people that actually makes it happen, beginning from a starting point of virtually nothing and culminating in completion of the project.
The sprint is the basic unit of progress in a large scrum-oriented software project. It is usually centered around a fairly short fixed period of time – often two weeks – and is centered around a shorter-term goal that functions as a milestone toward the overall project.
The daily scrum is a fairly short daily meeting where the next immediate steps on what everyone is doing is addressed and any larger group problems are resolved. This ensures that the sprint does not fall apart along the way.
The sprint review takes a look back at the most recent sprint and figures out what went well, what went wrong, and what (if anything) could be done better. This usually provides at least some of the base material for the next sprint.
Using Scrum to Improve Your Finances
So, how can you use this sprint methodology for your own finances.
Become the project owner sometimes. In other words, you need to set an overall goal for your finances and, on occasion, sit down, evaluate that goal, and ask yourself whether it has changed. Does it really reflect where you want to go? I do this myself every few months with a thinking session about every major aspect of my life, as I described in my classic “life pyramid” post.
Become the scrum master sometimes. In other words, take time fairly regularly to make sure that there aren’t any problems creeping up in your financial progress. Review your spending and look at your credit card statements. Look at your investments and see if they’re doing well. Check your credit report. Make sure you’re actually heading toward your goal and think about all of the things you’re doing every day are taking you there.
Be the development team always. In other words, you should always be thinking about the things you need to do to achieve your financial goals – and you should be executing them almost all of the time. Achieving financial goals means actually doing a lot of day-to-day things that sometimes don’t feel like the easiest thing in the world.
Design sprints for yourself and execute them. Come up with short projects – one week to one month mini-goals – that will force you to take on significant tasks or forcibly expose you to new ways of doing things in order to build skills. Commit to preparing all of your own food for a month – no eating out. Commit to emptying out that junk closet and selling 75% of the stuff on Craigslist. Commit to coming up with a debt repayment plan. Commit to researching and obtaining term life insurance, or planning out and setting up a will. Commit to spending no money on hobby or entertainment for two weeks and enjoying the entertainment options you already have.
Have a daily honest review of how things are going. At the end of each day, take a few minutes to consider how your sprint is going. Is it hard? Why? Is there something simple you can do to make it easier? Is it helping you to build a useful money-saving skill? Is it really saving you money?
Have a detailed review at the end of each sprint. After a sprint is over, spend some time asking yourself what you learned from that sprint and what kind of forward progress it produced. Did you learn anything useful along the way? Did it really help your finances? How much? Did it require a time investment? Did it contribute to your peace of mind? Does it point toward an idea for your next sprint?
The Lean Model
Lean software development is a set of concepts borrowed heavily from the car manufacturer Toyota and their production system which helped them grow rather quickly from a tiny player in the car market to a large one. It basically translates many of the ideas that Toyota uses in an industrial factory setting to software development. Yep, the same concepts that welders and other workers use to build cars in a giant factory applies to people building software on laptops and in cubicles.
The Core Principles of Lean
There are many principles of lean development. These seven really lead the pack.
Eliminate waste. Do everything you can to eliminate wasted resources, whether it’s time, energy, focus, lines of code, or anything else. If those resources are being wasted and end up not being used (or not helping you to move forward), then the reason for that waste needs to be evaluated and fixed.
Amplify learning. You should always be striving to understand yourself, the goal, and the steps you’re taking toward that goal as clearly as possible. It’s well worth some additional time to fully understand what is happening and why so that you can make things move along as efficiently as possible.
Decide as late as possible. Avoid making critical decisions that are difficult to reverse until the last possible moment. During the early stages, focus on “under the hood” things that will be useful no matter how your goal changes. Save the specifics for the end of the project.
Deliver as fast as possible. You’re better off delivering a scaled down solution without major defects as quickly as possible and then doing another iteration rather than making a huge goal the initial target. The sooner you can show off something that works and does something useful without failure, the better.
Empower the team. Set up basic rules and guidelines so that you can trust the team to make many of their own decisions without management interference. The more you trust the team, the faster they’ll work because they’re not jumping through management hoops.
Build quality in. If you’re working on a specific piece of the project, build it right the first time so that you’re not continuously rebuilding it. It might take a little longer initially, but it will save you time over the long run.
See the whole. Sometimes, you need to step back from worrying about the specifics and look at the state of the project as a whole. It’s easy to get lost in the details, but when you do that, you risk building a solution that doesn’t really solve the problem.
Using Lean to Improve Your Finances
How can you apply these ideas to your own financial state?
Eliminate waste. Look for situations where you spend money on things you don’t need or things that don’t fulfill a lasting want and eliminate those situations from your life. When you spend money on fleeting desires, you end up with only one thing: regret. Find ways to cut out those mistakes. I try to do this type of review on a weekly basis.
Amplify learning. Always take time to review your progress toward your goals. Are you making positive steps? What steps are challenging? How can you make those steps easier? Are you still moving toward a goal you desire most? This is also part of my weekly review.
Decide as late as possible. If you’ve got a really big goal in mind, try to avoid making big decisions you can’t take back until the last possible moment. Don’t look at houses – and certainly don’t put in an offer – until you have a down payment. Don’t quit your job until you have money in the bank.
Deliver as fast as possible. Don’t “hold off” on saving for retirement because you’re unsure of the options. Sign up and start saving now; you can fix the investment options later if necessary. Don’t “hold off” on paying off debts because you’re not sure which ones to tackle. Start saving money in your savings account if nothing else so that you have money to throw at a debt when you decide (or, better yet, just throw it all at the one with the highest interest rate). Start executing on the important part – and that important part is usually “save money” or “pay off a bill” – as soon as you possibly can, even if you’re not sure of the absolutely “perfect” path.
Empower the team. Many of our worst money mistakes come from bad decisions in the heat of the moment, and those poor decisions can cause us to stop trusting ourselves. Instead, come up with ways to restrict your decisions in advance so that you don’t lose that self-trust. Cut up your credit cards and delete those numbers from online accounts. Buy plenty of staples for the meals you make the most. Leave your credit cards at home most of the time. That way, you’re left without the ability to make bad decisions in many situations.
Build quality in. If you do choose to spend money, buy inexpensive solutions at first. If you’re replacing an inexpensive solution because you actually used it, buy things that are reliable and well-made. If you fill your home mostly with quality items that won’t easily fail, everything is just going to work.
See the whole. Step back sometimes and look at the whole of your life. Are you moving toward your big life goals? Are your life goals the same as they were the last time you thought about them? What big steps can you be taking toward those goals? I do this every three to six months by using my “life pyramid” idea.
The Waterfall Model
The waterfall model is a sequential design process that helps groups organize their thoughts, plans, and development into a series of sensible stages. This model was actually a big part of my life as a developer for years.
The Stages of the Waterfall Model
The waterfall model, as I used it, broke down into six key stages.
Stage One – System and Software Requirements Every project started by coming up with a document that explained exactly what was required from the project. What did it need to do? What was the input? What was the desired output? We didn’t worry about how it was to be implemented at all. We just worried about the problem we were trying to solve and what the solution looked like. My favorite analogy for this was that it’s like getting a child’s Christmas wish list.
Stage Two – Analysis The next step was to break down that problem into things we could actually do. Usually, this involved figuring out what the data we would be using would actually look like and what kind of changes that data would go through from beginning to end. Continuing that Christmas list analogy, this is much like a parent going through that list and figuring out which presents they can afford.
Stage Three – Design Here, we would figure out how exactly to make that happen. What kind of little pieces of software needed to be created to make this work? How can these pieces be assembled and shared? In that Christmas present analogy, this is much like getting a kit in the mail for a complicated toy and laying out all of the pieces so that you have the best possible idea of how to assemble it.
Stage Four – Coding This is where the rubber meets the road. You turn those specific design ideas into a real project. Many people like to think of this as the “real” work that programmers do, but all of the steps before this are vital so that you’re not wasting time writing useless code. In other words, you assemble the kit.
Stage Five – Testing Does the solution work? Does it actually take you from the initially described starting point to the ending point consistently and correctly? You often do this in stages along with the coding and this serves as a bit of a review process. In other words, you’ve put the wheels on the toy tractor you’re assembling, but does the toy tractor actually roll back and forth on the floor?
Stage Six – Operations The project is complete in a sense, but it’s not over yet. Software projects often need maintenance (think of software patches and new versions of Windows). With the gift analogy, this is much like Christmas morning and then, later, the inevitable repairs and touch-ups needed for that toy.
Using Waterfall to Improve Your Finances
So, how can you use that method for improving your finances?
Stage One – System and Software Requirements Where are you right now? Where do you want to be in, say, five years? That, right there, is your system and software requirements. You’re figuring out exactly where you are by taking a healthy look at your finances, and you’re figuring out where you want to be by thinking about your goals in a real fashion. I like to use the “five year picture” for setting goals, where I try to describe the best possible life (that’s realistic) that I could have in five years.
Stage Two – Analysis Now, what exactly would have to change in my life in order to achieve that beautiful five year picture? This is nothing more than a list of differences – here’s how things are right now, and here’s how that same exact thing is in five years. That list is the list of things you specifically want to achieve during that period.
Stage Three – Design So, how do you make those changes? Start coming up with a specific plan for making those things work. For example, if you’d like to be thin in five years, how can you make that happen? Come up with a long-term weight loss plan, probably mixing gradual dietary and fitness changes. If you’d like to be debt free in five years, you probably want a debt repayment plan. If you want a new career in five years, you probably need some kind of specific education plan.
Stage Four – Coding Now it’s time to start executing on those plans. I usually try to look for smaller steps along the way. What do I need to do today to make that goal happen? What do I need to do this week to make that goal happen? What do I need to do in the next three to six months to make that goal happen? If I don’t have active answers to those questions, then I need to either roll things back to design or start testing what I have.
Stage Five – Testing To me, this is the review process. Once a week, I step back and review what I’ve achieved in the past week, what I hope to achieve the next week, and how those things fit into my three to six month timeline and my bigger goals, too. I also ask whether my bigger goals continue to make sense for me. This usually fuels answers to my three big questions I ask in stage four, which make up the actions of my daily life.
Stage Six – Operations What happens when you actually achieve a goal? Often, there’s maintenance involved to keep you where you’re at. There’s also usually a bigger mountain on the horizon, one that’s now in sight once you’ve achieved your first goal, so this can often be the first step in a new waterfall.
There are really two main lessons you can take from all of this.
First, reviewing how you’re doing is absolutely critical. It’s a component that all of these methodologies have in common. Setting a goal and coming up with a plan for working toward that goal is obvious, but investing the time to review that goal and that plan and your execution of that plan is just as vital though it is often overlooked. Spend time each week thinking about your goals, your plans to achieve those goals, and what you’re going to execute those plans.
Second, these kinds of frameworks work for almost any kind of life goal. Sure, you have to tweak the specifics a little bit, but these ideas work for goals big and small and for teams big and small. The same core concepts that guide a team of thousands to make a huge software project (like Windows, for instance) can work for you as you work toward financial independence.