Incremental Development Anyone?

in #programming6 years ago (edited)

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.

Bad examples:

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.

Good examples:

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.

Conclusion:

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.

Sort:  

I completely agree. Developers make the mistake of thinking of everything from the start. Go simple first, break things, work incrementally.

Once one has such a structure it also becomes easier to onboard new devs. That was always my goal in MineColonies. Give new devs a small task they can complete in two weeks which can immediately be added to the mod. This gives a huge boost in motivation for the dev. And being able to merge features fast forces one to have a good development process.

I agree and.
"Developers make the mistake of thinking of everything from the start."

I'd even make this more relative and say: "They try to think".
Since it's impossible to think of everything from the start.

Totally agree @raycoms,
I think here on steem, we need to delay the SMT and focus the project in create something easy and simply to use, not for us, but for the devs to create new projects, like these ones that we can see nowadays. After they guarantee that, we need to increase step by step, not rushing and trying to show to everyone the amazing new things that they made but with lack of tests.
In my understand, they have that clear now, so it's time to change the actions.
Thanks for sharing!
Cheers!

Posted using Steeve, an AI-powered Steem interface

I think a very limited version of SMTs would be a very good beginning to go with. I wouldn't scrap them completely. But I also think that reducing the costs of full nodes should be prio #1 since that's one of the main bottlenecks for steemit inc and for developers

For sure.
If the development is advanced, deliver a small version, or even a alpha, could be enough. But totalmente agree that the main concern should be the reduce of the costs.
Thanks for sharing.
Cheers!

This story was recommended by Steeve to its users and upvoted by one or more of them.

Check @steeveapp to learn more about Steeve, an AI-powered Steem interface.

To listen to the audio version of this article click on the play image.

Brought to you by @tts. If you find it useful please consider upvoting this reply.

Hi, @raycoms!

You just got a 12.75% upvote from SteemPlus!
To get higher upvotes, earn more SteemPlus Points (SPP). On your Steemit wallet, check your SPP balance and click on "How to earn SPP?" to find out all the ways to earn.
If you're not using SteemPlus yet, please check our last posts in here to see the many ways in which SteemPlus can improve your Steem experience on Steemit and Busy.

Calling @originalworks :)
img credz: pixabay.com
Nice, you got a 100.0% @minnowbooster upgoat, thanks to @raycoms
BuildTeam wishes everyone a great Christmas and bullish Holidays
Want a boost? Minnowbooster's got your back!

Coin Marketplace

STEEM 0.19
TRX 0.15
JST 0.029
BTC 63277.26
ETH 2570.12
USDT 1.00
SBD 2.82