Software Development for Dummies
In my job as a technology consultant and developer, I work with clients to build solutions that solve real business problems. At different times we may use a more “agile” approach, and at other times it’s an old-fashioned “waterfall”. Regardless of the methodologies in play, there is a fundamental truth underpinning all our work: If the users don’t understand what we built, our solution has no value. Furthermore, if we fail to communicate closely throughout the project, it is doubtful that we will even build the right thing.
Communication about the work - in the beginning, middle, and end of the project - is a two-way street, and it’s the only street that matters.
To facilitate communication, we may schedule daily meetings, plus bi-weekly “Sprint reviews” - where we review what has been built incrementally. When a project reaches its conclusion, there is no grand unveiling where the client sees what we have built for the first time. We do not wait with bated breath for their gasp of pleasure (or dismay!). By the time a well-run project reaches the finish line, the stakeholders have all had a hand in testing the solution every step of the way. Finally, of course, getting paid for development work is tied to delivering results. Terms may vary, but suffice to say that If a project gets badly off track, or is never completed, payment terms may need to be revisited.
Blockchain is Software
Cardano, like every blockchain network, is fundamentally a software development project. Successful software projects are never just built in a single go and then set free in the world, never to be touched again. Think of some of the most famous software products you use every day: Google, Facebook, iOS, Microsoft Windows, and so on. With each of these, we know that a huge company is staying busy behind the scenes, pushing out patches, writing documentation, releasing updates, new features, new versions. Without this ongoing work, the technology would soon become obsolete.
The future vision for Cardano - in the Voltaire era - is that decentralization remains the hallmark of all ongoing software development. That means the next project leader could be you, me, or anyone with a great idea and a willingness to get their hands dirty. Project Catalyst is an ongoing experiment where we are learning how to do this on a global scale. In Catalyst, anyone can propose a solution - a software development “project,” if you will, and proposals that get “voted in” receive funding to deliver their solution.
Looking in the Mirror
So for Cardano’s Project Catalyst - some would say, the greatest, most significant, and innovative experiment in decentralized software development in the history of the world - how have these cornerstone elements of communication, milestones, and approved completion been handled?
Well, some might contend that they’ve hardly been handled at all.
The first Fund where I participated as a funded proposer was Fund 6. In that round, winning proposals received funding in 3 or 4 monthly installments. We were expected to do twice-monthly “reports,” but there was no reason to believe they were reviewed by anyone. Furthermore, the funding we received had no relationship to the length of the project. A 1-month project and a 1-year project both received their complete funding in the same 3-4 monthly installments, after which the project was fully paid out.
The results of this [non]system were predictable. Funded proposers had no incentive to engage in meaningful reporting or even finish their project once all the funding had been delivered. Even honest actors who actually did the work might struggle to prioritize crafting a thoughtful project-closeout report. It seemed no one was really interested in seeing it, and importantly, there was no final financial incentive of any kind.
If a software project is built in the woods and no one sees it - did it really happen?
One brick at a time
Over the course of Funds 7, 8, and 9, incremental steps have been moving us closer to the standards of communication and execution that should be expected in a professional context. Even in a decentralized, permissionless ecosystem, we are paying for good work and have every right to expect professional-level results. These incremental steps have included:
- More structured payments that relate payment schedules to the length of the project
- Higher expectations for monthly reports
- Making final payments contingent on approved project completion.
The latest move in this progression is the experiment now happening in Fund 9 with all funded projects in the DApps, Products, and Integrations Campaign, as well as with any funded project with a budget over $75K. These projects will participate in a new “Milestone Based Reporting” funding and project oversight system. Instead of completing generic monthly reports, these funded proposers are being asked to structure their work into concrete milestones with verifiable deliverables. Payment for the work is then delivered in installments tied to the verified completion of each milestone.
For experienced proposers and those with a background in software development or project management, the work of identifying verifiable deliverables and milestones may have already been done when writing the project proposal. A well-written project plan and roadmap would have good milestones already defined. However, for funded proposers with less formal experience with these kinds of projects, this update might introduce new concepts about how to plan and communicate project plans and progress with stakeholders.
Having a Growth Mindset!
Change is difficult, and it’s inevitable for the machinery to squeak a bit as we shift gears. But rather than dwelling on what isn’t working yet, and how big the gaps still are, I prefer to point our collective attention to the things that are inspiring and interesting about all of this:
We are not stuck with systems that don’t work.
The incremental changes with each Fund prove that the “system is working.” People are participating, bringing ideas and energy to the table, and helping implement the experiment’s next iteration.
No one is getting left behind.
Professional developers and project managers might feel some justified frustration with haphazard project work that has happened to date. What gives me hope and satisfaction is that, as a community, we are finding a way to include those who don’t have that professional background and to train them on the project management skills they don’t yet have. I find it exciting that people from different backgrounds have a path to be able to participate, knowing that we can teach the skills they need around reporting and project management to fill in the gaps. We are stronger together, and we all have something to learn from each other.
We are rising to the occasion.
One of the past problems with Project Catalyst reports has been that, while they were hypothetically public, they were not easy to use or digest. They lived in a spreadsheet, where columns upon columns of text reporting from thousands of projects crawled like ants. Lido Nation recently jumped into that gap by presenting aggregated report data on individual “project” listings in our Catalyst Explorer tool. Coming soon, the Project Catalyst Portal portends to offer similar transparency.
Closer attention is being paid to reports, such that inadequate progress is finally getting caught and addressed. When those conversations happen, there is intent being put around them that they are not punitive. A request for more information is simply a chance to improve your communication skills and explain your work in terms that more people may understand and appreciate. We should expect these high standards for the work being funded by “our” central treasury!
Who is going to use these solutions?
As a closing thought, I’d like to reflect back one more time on the “traditional” software development project, and its ultimate measure of success:
- Does the final solution get used?
- Do the users like it?
- Do they know where to find it?
- Is there good documentation?
- Is there a way for them to contact support with questions, feedback, and ideas for improvement?
Let’s get excited about a Project Catalyst ecosystem that doesn’t just set isolated projects loose in the wild, never to be seen again. Instead, as users, let’s get ready to engage with the projects we are funding: both while they are building and after project completion. As builders, let’s remember that our real audience is not the person holding the purse strings for our next payment “tranche” - it’s the end users! What do you need to show them to bring them along for the ride, get their feedback at timely intervals, and ultimately deliver a winning solution?