Hi everyone, I've been reflecting on different programming styles lately.
Whoever is following my programming with Minecolonies series can see that I am a great fan of incremental programming.
The development cycle I follow can be quite easily described in the figure above.
I start with a relatively solid base and then start adding features. After every feature, I'll take some time to stabilize the system to a point again before adding newer features and so on.
This has been worked very well for me in all projects I participated in until now.
I was usually one of the developers which got his pull requests merged the first and contributed a huge part to the project since I wasn't working for a long time on one huge pull request which then, had great difficulties to be merged and broke many systems.
I like to describe this problem using an analogy.
When I develop the base of my application I build a solid foundation similar to the basement parking space in the photo.
I got a solid foundation which will endure almost any application which might come on top of it.
And I got enough space to put additional hooks as an elevator or additional pillars to hold my application if needed.
Now we get to what most developers do.
Most developers seem to build a fully decorated foundation trying to think of any possible feature they might have to include in the future.
Now, they really have a fancy backend, but since life is not perfect and a development cycle of a project for sure isn't either a lot of little things will surge during the development and the programmer will then have to rip off walls, remove parts of the floor, add additional pillars and so on and will lose a big part of time for this.
I think Steemit inc is a perfect example of this.
In my opinion, things like SMT might be out for quite a while already if they would've reduced the development to the core functionalities but leaving enough room to add in the additional features later.
Especially for a program which runs in production, this has great advantages:
- Easier code review for the witnesses
- Fewer chances for bugs after hardforks
- Easier to test
- Deliver regularly
Many Minecraft mods stop their development for one year or more to rewrite the mod completely but end up making many mistakes in recreating it from scratch again are only able to deliver a very reduced experience and end up having more work than they would've had just reworking it slowly refactoring area per area.
In Minecolonies one of the reasons we have so many supporters is that we regularly send updates and slowly but steadily we reach the top while also slowly reworking the backend.
Steemonsters for me is a very good example of a great incremental work. The first version had the core functionality which was necessary for it to work. Since then the updates which came out built on top of this foundation and they are creating an awesome game which is getting better with each update.
If you are a developer and maybe you are doing it the same way Steemit inc is doing it maybe you can reflect a bit on this and maybe be able to deliver and finish your applications faster and with less headache.
If you are a developer and you are successful like this, please teach us, master!
Photo from Pixabay.