Skip to main content
↑
↓
Spherical forums
Community for the
Sphere game engine
New?
Contact Us
to register an account!
1 Hour
1 Day
1 Week
1 Month
Forever
Community
Help
Search
Recent Posts
Log in
Contact Us
News
Spherical
Facebook
-
Twitter
-
Discord chat
New?
Contact us
to register an account!
General Discussion
Off-Topic Discussions
Monolith First
1
Print
Topic: Monolith First
(Read 3582 times)
previous topic
-
next topic
0 Members and 1 Guest are viewing this topic.
Flying Jester
Legendary Poster
Posts: 1,161
Logged
TurboSphere Developer
Monolith First
June 07, 2015, 01:49:39 am
http://martinfowler.com/bliki/MonolithFirst.html
I had to think about it awhile, but I actually really agree. Modularity, hierarchical systems, and microservices are cool, but most of the best non-monolithic stuff I've done started out monolithic and was later broken up.
Learn some history?
The Flying Jester's Blog of Sorts
Fat Cerberus
Big Chungus
Posts: 2,774
*MUNCH*
Logged
Global Moderator
Sphere Developer
Re: Monolith First
Reply #1
–
June 07, 2015, 10:14:15 am
Right. I agree with this as well. I always start my projects as monoliths (see: minisphere) and only later do I break stuff up if the need arises. In my experience it's very difficult, sometimes prohibitively so, to write a fully modular system from the ground up. You end up spending more time writing interface layers than actual code.
neoSphere 5.9.2
-
neoSphere
engine -
Cell
compiler -
SSj
debugger
forum thread
|
on GitHub
Radnen
Big Chungus
Posts: 1,440
Sphere Studio Developer
Logged
Senior Staff
Wise Warrior
Re: Monolith First
Reply #2
–
June 07, 2015, 01:08:47 pm
Yep. My Sphere Studio was Monolith first with the editors integrated. Then I striped them away and exposed as a plugin API what they needed to interface with the editor. I couldn't imagine trying to see how to do that first.
If you use code to help you code you can use less code to code. Also, I have approximate knowledge of many things.
Sphere-sfml
here
Sphere Studio editor
here
FBnil
Low Poster
Posts: 89
Sphere on Pandora or burst!
Logged
Re: Monolith First
Reply #3
–
June 07, 2015, 05:42:09 pm
I agree too. Mostly there is a phase in programming where I start adding functionality, with focus on getting it working. Once I have a proof of concept, I start fleshing out what I wanted to do, the
normalization
to functions happen (similar calls grouped, same parameters), reuse of common functions (
modularization
). During the copy-pasta I make, I notice I modified functions to do something else. I then backport that modified function from where I copied it from. (However, they mostly grow due to feature-creep.) Once part of the software is proven handy, a lightbulb lights up, I isolate the functionality and I modularize it. and a library is born. But I can do that only once it is written.... strange. Once the library is there, I can think of it as a component for a next thing.
It is the moment I need paper to start fleshing out the structure, when it stops fitting all in my head, I need to modularize. Fairly organic process. Usually I then rewrite with long term maintenance in mind.
Engineers call that first monolith the "proof of concept", then, once that works and know what to expect from the software, you flesh out the final implementation api and structure. Sometimes it requires a complete rewrite. And then you can go 2 ways: Adding more functionality (software grows), or refining it (software gets smaller and faster).
1
Print
General Discussion
Off-Topic Discussions
Monolith First