There’s an old story about two pharaohs. Both wanted a magnificent pyramid to house their tombs, so each hired a pyramid builder. The first builder started constructing his pyramid from the base and working upwards.
However, one day, the pharaoh suddenly died, and the pyramid was left incomplete. The pharaoh was sad (and dead).
The second pyramid builder started by building a very small pyramid.
Then he built a new layer, making a larger pyramid.
He knew that whenever the pharaoh might die, he would still have a completed pyramid shape.
How can we apply this tale to software development?
Work on the Core first
The second pyramid builder started with what would become the core of the pyramid. Similarly, you should start with the core of your app. If you’re making a photo-filtering app, start with the photo filtering functionality. If you’re making a news app, start with the article page.
Use Scaffolding instead of Permanent Structures
We’re still not quite sure how the Egyptians built the pyramids, but travel to any building site and you’ll see plenty of scaffolding. Scaffolding is not intended to be a permanent fixture, and when you’re starting a project much of your code and data will also be temporary. Perhaps your photo filtering app will have a fancy login flow – but when the project starts, just hardcode in a username as temporary scaffolding.
In the next stage, perhaps you will replace this with a textbox for the username and password.
In the next stage, you might implement the fully designed screen.
Don’t break the build
A common mantra among programmers, particularly when working with continuous integration is, “don’t break the build“. You should ensure that your code is always in a state that it can be built without errors, or quickly shown to a colleague or client as a demo.
Deliver value quickly
I was discussing our agile retainer model with a client recently and he remarked “this sounds interesting, but how long will it be before I have an app that’s useful? Two months? Six months?” I replied “we deliver beta versions every two weeks, so our aim is that you’d have something useful and functional after two weeks. And something even more useful and functional after four weeks. And something even more useful and functional after six weeks, and so on.”
As a software developer, that should be your goal, to deliver value throughout the development process. Start small and build iteratively, and you won’t believe what wonders you will be able to build.