Skip to main content

Working Towards a Vision

For today's blog posting I thought I'd do something different. I'm going to tell a story about a real project that I worked on to help illustrate a point. Some of my more recent postings have focused on the various ways to deliver software, and some suggestions on how best to run software projects. More specifically, I've advocated an approach that focuses on quality of the software over when it will be delivered.

If you deliver a great piece of software it can potentially be a game changer. Software can make your company more efficient, or give it a competitive advantage. In some cases it can even impact the lives of millions of people, or potentially make you rich. What's important is getting the software right. Of course you, your company, or your client don't have unlimited funds. There does need to be a balance. But what's ultimately going to determine the success of the software is how well it does it's job. If it doesn't do it's job well, the users certainly aren't going to care that it was delivered "on time".

Today we have great agile principles and frameworks that help us deliver software quickly, react to user's feedback, and continually deliver updates based on that feedback loop. These are newer concepts; we didn't always build software this way. If you're unfamiliar with some of these concepts, I encourage you to read up on agile, MVPs, lean, and feedback loops.

Onward to the story. Roughly twelve years ago I worked for a credit union as a software developer. The primary focus of my job was to help maintain a 3rd party banking system. One day my boss came to me with an idea. We had a financial analyst that was doing a lot of ad-hoc analysis, based on the needs of C-level executives and upper management. He had a system of extracting the data from the core banking system into Microsoft Excel. From there he would apply formulas in Excel to do various bits of number crunching. While he was able to get the information that he need, it was time consuming. Also, he didn't have a programming background, so it took him some time to get the various answers that he was looking for. My boss's idea was that with my programming background I could help him create the ad-hoc formulas quicker.

At the time I had recently completed reading a great 1,000 page book on relational databases. It covered concepts such as SQL, indexes, locking, and other relevant topics. One of the smaller chapters near the end of the book happened to touch on some of the basics of data warehousing. This information was still fresh in my mind. After speaking with the financial analyst to understand what was being asked of him, it became clear to me what was needed was a data warehouse. Mind you I didn't have any experience building data warehouses, but I knew enough that these were the exact type of problems they were designed to solve.

Later I followed-up with my boss with the suggestion of building one. Initially he seemed a bit skeptical, although he didn't dismiss the idea totally. Up until that point I had produced a lot of work that he was happy with, often exceeding his expectations, which gave me a bit of clout. Over the course of the next few weeks, I continued to follow-up with him on the idea. I think it was a combination of my enthusiasm, persistence, and his trust in my abilities that he eventually decided to green light the idea.

At first he suggested that we move forward with a simple prototype. We had access to data related to ATM usage. We kept things simple, and I developed several interactive reports that allowed that data to be sliced and diced in various ways, according his specifications. Initially it wasn't even a data warehouse, but rather a series of reports based on transactional data. He was happy with these initial reports, and decided that there was enough promise there that we should move forward with the full-scale project.

Keep in mind I had no experience with data warehousing at this point. Additionally the credit union's database was based on the Pic OS and Pic database. The Pic database is an older multi-value database system that predates relational databases. I only had experience with relational databases, and there aren't more than a handful of people that know Pic. Needless to say there were lots of challenges ahead of us and a lot unknowns. My boss decided that the potential value of the project was worth the risk. In a lot of ways it was a bold decision of his to move forward. He also decided since this was all new territory to us, that we weren't going to have a deadline in mind. We were simply going to work on it until it was done. That was yet another bold decision on his part, and also a very smart one.

I was a full time employee, so they were going to pay me regardless if the project went forward or not. He decided that the potential value of this project was greater then what else I might potentially work on. I'm sure if things went poorly, he would have pulled the plug at some point too. But in reality the risk wasn't that high. It was simply a question of what I'd be focusing most of my time on.

He did bring in a Pic consultant that provided training on the Pic system for 3 days, which I'm sure wasn't cheap but in the big scheme of things wasn't that big of a deal. Over the next few months, I developed a fully functional data warehouse, complete with advanced front end reports. I worked hand in hand with the financial analyst to help ensure that all of the calculations were correct, and he verified the output to the cent.

I don't remember exactly how long it took, but about 6 months later we had a fully functional data warehouse complete with nightly ETL, interactive reports, and web dashboard.  Not to toot my own horn, but what we created was really great. I remember when we demoed the system to the execs and they were thoroughly impressed. That was one of my proudest moments of my professional career.

The reason I tell this story, is that in many ways it was unconventional. It didn't come from a request from up above. There wasn't a deadline; we simply worked on it until it was ready. There was no formal project plans, work break down structures, or for that matter much structure at all. My boss determined what had business value, I learned the technology and developed the system, and the financial analyst shared his expert knowledge and acted as QA. We were being agile before it was a thing.

It was a huge success any way that you could measure it. Incidentally at the start of the project, we made no attempt to measure it at all. My boss simply knew that if we were successful, we'd providing a tremendous value. Whether the project took 3 months, 6 months, or even a year didn't matter. In his mind there wasn't any sense in coming up with estimates, and he was right. We occasionally talked about how things were going, but that was about it.

Now I'm not saying that all projects should be run like this one. However, it does show that this type of model can work and be successful. My boss focused on the potential value, and in the end when the vision was realized the value was delivered. That's all that really mattered, and the time we took to work on the project wasn't in any way a burden to the company. While this type approach may not work in all situations, it can work in a lot more situations than you may realize. At the very least we can all learn from some of the ideas and conventions used, to see alternative ways we can build software.

If you have any feedback, I'd love to hear it. Until next time.

Comments

Popular posts from this blog

Value and Quality over Schedules

According to a study by CEB Research, 70% of software projects are delivered on time, but only on 38% meet stakeholder's expectations. In most cases the people that use your software will not even be aware of internal project deadlines. Case in point, think of all of the software the you use everyday. You are rarely aware of what the due date was. However, what you do notice is how well the software does it's job. It's it's of low quality, you'll very likely notice right away. Even if it appears to be of high quality, if it doesn't provide any major value to you, chances are you still stop using it. With that in mind, then why do many software projects today have a set scope and a hard due date? When building software for a customer, it's only natural for them to what to know what exactly they are going to get and what is will cost them. That is a very reasonable thing to want to know. Even when developing software internally, there are often similar expe

The Retrospective From Hell

Over the last 17 years of my career I'd like to think that I've learned a lot. I've learned from positive role models, from experience of what works well, by studying my craft, and from my own trials and tribulations. However, I believe the lessons that I have learned that had the biggest impact is learning from failures. One such failure occurred at a previous employer. By telling the story of a past failure, we can reflect and see what can be learned from it. No names will be mentioned, no embellishment or poetic license will be will used. As a matter of fact, I will make every attempt to be objective and accurate as possible. The truth of the matter the story doesn't need it; it speaks for itself. Some time ago I worked for a company that, among other things, had a software product. There was a small team of software developers, and someone that acted as the manager of the team. I was brought on board, as a software engineer, to help with the software product as

Let's Get Moving With Software Development!

Recently I was reading a discussion on Twitter about software projects, and it reminded me of something. Many years ago I had a conversation with my dad about moving. After just having moved, he wasn't too pleased with the moving experience. He mentioned that there was essentially two models that movers operated under. The first was you paid a fixed price for the move. I don't remember the exact details, but the movers quoted a price most likely along the lines the square footage of the house, or some similar metric. The other model, was simply to pay the movers for their time. If it took them 20 hours to complete the move, you paid for those 20 hours. Now the catch was, as he described it, if you paid for a fixed price the movers didn't really put a lot of care into the move. They simply wanted to get the job done as quickly as possible. I seem to recall that if they broke something, they would reimburse you. However, that wasn't a pain free process. More importantl