8 ms·
Manifesto for minimalist software engineers (2013)
- deck4rd 4y agoFunny that this website is anything but minimal. Instead of using fragments for each section (e.g. http://minifesto.org/#prioritize http://minifesto.org/#prioritize), this site uses some janky JavaScript scrolling behavior that messes up my browser's back button.
- TheUndead96 4y agoI find the idea of a manifesto in software quite off-putting, since it is inherently idealogical. The ideology itself might have redeeming factors, but I think that it is a poor vehicle for conveying ideas. This manifesto is written in the first-person ("There's something I call fixing a bug by sedimentation"), but it is trying to be universal. If this person has opinions on software engineering, why not just voice those as an individual?
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- andai 4y agoDestroy the child!
- revskill 4y agoI think this misses one of the most crucial one: Prove it.
- sorokod 4y agoWhich part of this is specific to software engineering?
- forgotmypw17 4y agoIronically, the markup for this site is not minimalist at all.
- deleted 4y ago[deleted]
- golf_mike 4y agoBut at least they kept their ssl implementation simple
- forgotmypw17 4y agoSSL is hardly minimal
- markuman123 4y agono valid https ...
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- deleted 4y ago[deleted]
- adql 4y agoLooking forward to time when that manifesto will be used as excuses for bad design decisions and treated as silver bullet, just like every previous one Also >88 requests, 2.1MB transferred 5.4MB resources, finish 9.04s Practice what you preach maybe ?
- deleted 4y ago[deleted]
- hbogert 4y agothe majority of it being discus/twitter/etc. Is that his fault? At least he didn't reinvent a forum, so in that sense it is minimal.
- TeMPOraL 4y ago> At least he didn't reinvent a forum, so in that sense it is minimal. Herein lies the problem though: it's "minimal" for them, at the expense of the users. Like all those soundbites.
- gyulai 4y agoPareto's law really isn't a law. You think that the world is full of situations where 80% of the payoff comes from 20% of the work/complexity/whatever? I tell you that, equally, the world is full of situations where you get 0% of the payoff unless you've done 100% of the work. That latter observation is just as true as the former, but it won't make anyone into a best-selling business book author or motivational speaker, as it doesn't help with cognitive dissonance reduction when reflecting upon laziness and ineptitude, as Pareto's law does.
- musingsole 4y agoBut I only enjoy 20% of the work...so there must be a way to make that the only part I have to do and still get a promotion!
- Cthulhu_ 4y agoThis is a Problem with a lot of software developers, leading to interesting developments like microservices.
- jrochkind1 4y agoOh, optimizing for promotions (or $$ generally) and optimizing for doing a good job are frequently not the same optimization. Beginning with your choice of where to work and going on from there.
- mkl95 4y agoA better made up law is that, given a complex enough product, simplicity is inversely proportional to the underlying complexity. An Airbus A380 is a long shaft with windows and wings, etc. This only applies to non brutalist design though.
- Yujf 4y agoAlso you can make software that does what you need it to do, but feels bad to use because it is not polished because that 20% was not deemed important.
- tresil 4y ago
- TurboHaskal 4y agoAh, the minimalist software engineer. I usually encounter them in PRs claiming a change is "over-engineered" despite being literally 5 LOC. It's such a comfortable position to label everything you don't understand as complex and unnecessary. Bonus points of you throw in YAGNI and KISS acronyms! I have a problem with "Perfect is enemy of good". I get the whole thing with iteration and so on, it looks good on paper, but in my experience when it comes to "First do it, then do it right, then do it better" and modern software development methodologies, you are lucky if you even get to work on the second step. And the nastiest projects I've encountered in my career have been all "evolved".
- deleted 4y ago[deleted]
- bayindirh 4y ago"Perfect is enemy of good" is just another name for "make it run first, make it run fast next". It doesn't apply cleanly to everything, but if you have a deadline coming up, an acceptable solution which is gonna be polished in the very next iteration is a good compromise, IMHO. However, project management loves to mark things as complete, so getting it polished to usual standards is the hardest part.
- deleted 4y ago[deleted]
- jrochkind1 4y ago"perfect" is the enemy of "good", but so is "bad". Bad is definitely the enemy of good. So it winds up being arguments about whether something is "bad" or "good enough". I mean, that's kind of the whole damn trick, figuring out what is good enough. It's good to remember that "good enough" has upper as well as lower bands, it's true that perfectionism is not the way to go -- especially because you are usually over-confident in your ability to predict how something will actually turn out under real world use and requirements. But I also find people insisting "the perfect is the enemy of the good" while trying to do crap. Why bother trying to do better than crap, the perfect is the enemy of the good! Determining what is "good enough", over the sustainable long haul, is literally the whole trick to software design. At what point you are getting diminishing returns or even counter-productive complexity from trying to polish it further. If it was easy we wouldn't be having these conversations. Slogans still don't make it easy.
- mihaic 4y agoMost of these are the sort of "common sense" things you'd get with experience, and I mostly agree with the ideas behind this. Where we fail as a craft though seems to be in passing on this information to those not yet convinced. Inter-generational transfer of robust best practices might be fundamentally intractable since often worse practices (pushing featurea over solving technical debt, adding needless complexity and bad abstractions) actually pay well. At the same time, it's not like we're putting in too much effort into this.
- pydry 4y agoI think that's largely the fault of the medium/way the message is crafted. This looks like it aped the agile manifesto which almost went out of its way to be unactionable and vague. In both cases I'd say that the authors is getting at the right idea but they haven't really formulated it precisely in their heads. As such the value is clear to the experienced person with the benefit of many years hindsight but not to the newbie.
- mihaic 4y agoAgree, but I still don't know if there is a way to format the message in a way that the average newbie can actually accept.
- pydry 4y agoI usually formulate the hard learned lessons in the form of stories. XP kind of did this with the whole Chrysler thing. I reckon a website that aggregated these stories would be a more powerful illustration.
- marban 4y agoPlease stop the MVP, fail fast, etc. garbage. It's the stage where winners are made. 99% of projects won't sell themselves and you will only end up with the self-pleasing excuse that your idea was flawed when in reality, you've sucked at marketing. Bonus: It's 2022 and people are no longer interested in playing with half-baked MVPs. Think twice before skimping on a decent UI, etc. There won't be a second chance to make a first impression.
- brosinante 4y agoI find the concept that my ideas are not flawed (and how dare anyone suggest they are) and success is a matter of connections and existing wealth more self pleasing.
- deleted 4y ago[deleted]
- hahamrfunnyguy 4y agoA MVP and quality product are not mutually exclusive. To me MVP means do a limited set of things and do them very well. UX is of course part of that. Failing fast and iterating is absolutely important to make sure you're building what your users actually need. I've found that what users want/need and what they think they want can be very different.
- rob74 4y agoLooks like they applied their recommendations for software development to their manifesto as well. The grammar is definitely not perfect (maybe not even good).
- deleted 4y ago[deleted]
- return_to_monke 4y agoWell, the authors could have invented their own network stack. Since they didn't, it's minimal.
- gizmo 4y agoMinimalism is often a fantasy. If you want to make a great product for the end user you often have to much more engineering work in the backend to give the illusion of simplicity. You can click on any link to open a website, but there is a tremendous amount of complexity behind the scenes (DNS, TCP/IP, HTTP, SSL, routing) to make it all work. The abstraction is simple for the user, but complicated in reality. All of these individual technologies can (and perhaps should be) simpler and more minimalistic, but the totality of the stack is inherently complicated because it solves a hard complicated problem. Suppose you want to make a new graphics app. Do you want users to easily create beautifully typeset documents? Then you'll have to do a ton of schleppy hard work to give the user the option to bend/morph/scale graphics to their taste. A "minimalist" graphics program isn't any good because then the designer won't be able to create what they have in their mind. Code isn't written for other people. Code is written so the end user ends up with a great product that solves their problems. If you're lucky the code is minimalistic and beautiful, but usually you'll have to struggle through one schleppy problem after another to give users the features and performance they desire.
- fdsafdewe 4y ago>Minimalism is often a fantasy. In the software world, yes. The question we should be asking is "Does this product need a touchscreen / app / web interface?" There is no "minimal" way to invoke the efforts of half of the world's FOSS (and other) software developers so that you can have a "beautifully" animated button to dispense coffee (yes, my workplace has a coffee maker with touchscreen, and I hate it). As a software engineer who personally wrestles with this conundrum on a daily basis, I'd love to set up a "you don't need software" design agency.
- deleted 4y ago[deleted]
- heuermh 4y ago> I'd love to set up a "you don't need software" design agency. Sign me up! If it helps, I have an large collection of antique and vintage knobs, switches, pots, buttons, and sliders. ;)
- Existenceblinks 4y agoJavascript ecosystem from 2013 to today is almost 10 years now, it's a crazy ride. Imagine folks create the whole market out of backbone.js, so much minimalism.
- deleted 4y ago[deleted]
- bjornsing 4y agoI really like this one: Think different. Simple is harder than complex, which means you'll need to use your creativity. The KISS people tend to think simplicity is the easy route. The acronym basically says so. But it’s the other way around.
- rmnclmnt 4y agoTotally agree. Usually to achieve a KISS state you need a few iterations and refactors to understand clearly the perimeter, objectives, constraints, etc. It is dedication, constant feedback and utmost important: egoless engineering. Usually it pays off when you refactor something by removing hundreds or thousands of LoC and your whole test suite is still all green
- jrochkind1 4y agoI always think of the quote (maybe from Mark Twain? Maybe aprocryphal) “I didn't have time to write you a short letter, so I wrote you a long one.”
- couchand 4y agoIt seems to be Pascal, originally. > Je n’ai fait celle-ci plus longue que parce que je n’ai pas eu le loisir de la faire plus courte. https://quoteinvestigator.com/2012/04/28/shorter-letter/ https://quoteinvestigator.com/2012/04/28/shorter-letter/
- TickleSteve 4y agoAgree with the thought behind these, but the wording is terrible... "synthesis"? In what context is this word being used? "clean kipple"? I've never even heard of that word.The first google result for "kipple" is some reference to Blade-Runner!?
- deleted 4y ago[deleted]
- rolenthedeep 4y agoDon't make minimalist software. Minimalist software is bad. Make software that works. Make software that people can use. Software is a tool, not a goddamn modern art project.
- deleted 4y ago[deleted]
- thefaux 4y ago^ bad
- bullen 4y agoI disagree with Perfection and Premature Optimization quotes: With the fossilization of hardware we can, and inevitably will, write the last software at some point. There will be one best web-server, game-engine etc. for every domain. It's just a question of time, and then that IS what those implementations will be: Perfect and Optimized to no end! Together with simplification and other guidelines these projects will probably be <10.000 lines. You need to be able to learn from them. A project like Unity or Unreal might be open-source/source available but if it's so bloated nobody can understand it there is no value long term.
- jrochkind1 4y ago> we can, and inevitably will, write the last software at some point. Maybe, but the context/requirements change too. For one of your examples, what a web server is desired to do changes with HTTP/2, and that may mean the "last" web server no longer is. But even less drastic/specific things can change desires and requirements; things change, even if hardware doesn't.
- pramodbiligiri 4y agoI think this is highly under appreciated. A particular piece of software exists in a technical, social and economic context. If any of these change, it opens up the space for a replacement or a new addition. Some big changes are desktop to web, web to mobile, single user to multi-user, power user to newbie… and so on.
- bullen 4y agoWell, if you believe HTTP/2.0 is an improvement then good luck to you. For me it's HTTP/1.1 until humans run out of electricity.
- jrochkind1 4y agoThat was just one example, but the fact that people disagree on it seems enough to be an example of why the a "last webserver ever" would stop being so. But it was just one example. There are things other than hardware changes that make people want something different out of software. Maybe not you, maybe you never change what you want out of software for any reason. if so you are extremely atypical. ¯\_(ツ)_/¯
- redleggedfrog 4y agoI would add "Don't write code unless you have to."
- hliyan 4y agoWhen considering killing the baby, also be aware that complex systems that work, almost always evolve from simple systems that work. A complex system can rarely be developed from the ground up (i.e. via a rewrite). One may then interpret the above maxim as "kill your code while it's still a baby, not once it reaches adulthood".
- numeromancer 4y agoCf. https://suckless.org/philosophy/ https://suckless.org/philosophy/
- prideout 4y agoI don't understand the "sedimentation" item. How does "accumulating other bugs" cause a bug to go away?
- bvirb 4y agoI think what made this work for us at work is that we (maybe accidentally) made refactoring very cheap and easy. We write almost entirely integration tests that only interact w/ the UI, so not much about the tests is tied to our architecture (instead they're coupled to the UI). The tests run slower than typical highly optimized unit tests of course, but the trade-off is that we can refactor things without breaking the validation that everything still works. This then makes continuous improvement a lot easier to realize than I have experienced in the past, since changing our minds is relatively painless.
- oa335 4y agoThis is why I like writing end-to-end tests first (and often times the only thing I write). Unit tests come later after I have decided on solid, reusable lower level abstractions. Unittesting to early makes refactoring too hard.
- yandrypozo 4y agoI like the idea and it would be better if they included the old Unix philosophy https://en.wikipedia.org//wiki/Unix_philosophy https://en.wikipedia.org//wiki/Unix_philosophy
- Thoreandan 4y ago(1994) * Futurist Programming Notes - http://www.graficaobscura.com/future/futnotes.html http://www.graficaobscura.com/future/futnotes.html * Manifesto - http://www.graficaobscura.com/future/futman.html http://www.graficaobscura.com/future/futman.html * Background - http://www.graficaobscura.com/future/ http://www.graficaobscura.com/future/ My favorite exercise: http://www.graficaobscura.com/future/futnotes.html#:~:text=Remove%20all%20system%20files%20that%20haven%27t%20been%20accessed%20in%20the%20last%206%20months.%20Ours%20works%20fine http://www.graficaobscura.com/future/futnotes.html#:~:text=R...!