TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Has anyone implemented a zero-maintenance system?

29 pointsby _pdp_almost 10 years ago
I am more and more interested in designing and developing a zero-maintenance system - i.e. a system that once built requires no maintenance whatsoever.<p>Is this possible to achieve at all?

30 comments

ChuckMcMalmost 10 years ago
It is an interesting question, but it would help to be a bit more crisp. You need to define &#x27;maintenance&#x27;. Allow me to explain.<p>A sun-dial, requires little maintenance after it has been set up. Cleaning off the bird feces and the leaves is all. It is not &quot;zero&quot; maintenance though. A trail duck is just a pile of rocks, and in the absence of getting knocked over requires no maintenance, but may require repair from time to time. A spacecraft on a mission to Pluto might require a software change or a course correction, but its hardware is not changed once it launches. A humming bird feeder sits on my porch and provides sugar water to birds in the neighborhood, when it runs out I pour in more.<p>So there are three things people often lump under the general heading of maintenance:<p>Repair - making something work after breaking.<p>Resupply - replacing consumable supplies, cleaning, and adjusting<p>Renew - giving something new capabilities or changing its operation by replacing parts or software<p>If you&#x27;re being pedantic about the term, there is no such thing as &#x27;zero maintenance&#x27; if you want a system to remain stable. Entropy is a thing.<p>So perhaps the more crisp question is, are people working on systems with really low maintenance requirements? Where &quot;low&quot; can be defined as hours of maintenance vs hours of operation or skill level of maintainers vs skill level of the builders, etc. Sure there are some really famous ones like the clock of the Long Now. Every museum in the world with interactive exhibits tries to design systems that will run with very little maintenance for a long time. Pretty much every operations lead spends time working on ways to keep large numbers of computer systems running with little human intervention.
ams6110almost 10 years ago
This was the default way software worked before widespread use of the internet, and in particular game software up until the last few years. You buy a game on a CD or cartridge, and that&#x27;s it. There is no &quot;maintenance&quot; after that.<p>Before internet use was common, there was just no really convenient way to deploy bug fixes, at least to consumers. Enterprise software updates were probably handled by a visiting rep who applied the updates, or a set of tapes with instructions to the local administrators.<p>But for consumer&#x2F;office stuff, when you shipped something, that is what it was. You worked pretty hard to be sure did what it was supposed to do.
评论 #9912393 未加载
评论 #9913778 未加载
andyidsingaalmost 10 years ago
This question should include a time frame. (just like when someone desires a &quot;real time system&quot;, the deadline is key to answering the question &quot;is it real time or not&quot;<p>One way to set this time frame could be &quot;life of the system&quot; -- which might be say 2 years, or 5 years, or 50 years.<p>The more constrained your requirements and design are in terms of inputs and outputs and error states, the more you can validate and get closer to maintenance free (finite state machines are a nice pattern for this).<p>Many embedded systems (appliances, space program gear) achieve this, but I&#x27;ve noticed that as those are built more and more with off the shelf general purpose hardware and software they become more error prone and require maintenance (due to competition and time to market tradeoffs?)<p>edit: one final thing re error states : watchdog timers. These can be tremendously useful in reducing maintenance, and keeping functionality alive. When certain error states are entered, the watchdog timer triggers and the system can restart to a known good state and, hopefully, restore its core functionality until that particular error state is entered again.
评论 #9912201 未加载
forgottenpassalmost 10 years ago
Of course it&#x27;s possible, but I don&#x27;t know where you&#x27;re trying to go with this.<p>Set a lifespan the product should be able to operate without maintenance, based on your goals and engineering constraints. Design with the lifespan in mind, perform lifecycle testing. Then release your product, stop working on it and don&#x27;t offer support.<p>The feasibility of such depends on what you&#x27;re trying to build. Customers have different expectations of lifespan, maintenance needs, and manufacture support depending on the product. A garden hoe is not an alarm clock radio, which is not a car, which is not a general purpose operating system.<p>The status quo of maintenance for any product domain is an inherent limitation to putting out something better. You can&#x27;t just jump ahead of the competition because you will it so. You need some combination of: building with higher quality components, insight into the problem domain that none of the current commercial solutions have, or simply more productive (ie. more expensive) R&amp;D.<p>If you&#x27;re just looking at products that currently require maintenance and are licking your lips at the idea of selling a turn-key solution, join the party. Otherwise roll up your sleeves and make low maintenance a key design goal of your product.
acdalmost 10 years ago
Sure I&#x27;ve seen it it did not run anything modern os wise. The MS DOS based control computer at my dads previous work place had an uptime of what was close to forever. We are talking stability in the range of ten to fifteen years. It ran a climate computer system control program and the control software newer crashed. Because MS DOS it was single tasked and the control program was very stable.<p>At the time there was little computer hacking activity so you did not have to update the software either. Backups was done to floppy disks and there was a reserve hotswap backup computer. For remote control you would dial into the computer via modem, first via 300&#x2F;1200 baud that is 1200 bits per second. Then later at lightning 9600 baud.<p>I&#x27;m also sure you find very good old engineering in the computers of Voyager.
评论 #9912736 未加载
Zenstalmost 10 years ago
It is always something to aim for but with anything time always catches up. I would say if it is anything internet or connectivity wise externally in any form comm wise, then you have to plan for maintenance from a security and protocol changes aspect over time (thinking transaction data formats).<p>So if security not an issue or removed from the project via some wrapper be that system locked in a room with control and other layers. Then you still have to plan for how long it is meant to last and being realistic.<p>WIth most business assets your talking 5 year write off at best tech wise with many 3 or maybe less, depending upon use.<p>SO possible - in the right situation - yes. But do not forget security.<p>THough remember time always a factor and also wear and tear and with that a pen eventually runs out of ink and required refiling. So dependant upon the timeframe doable but for many at what cost.<p>Another aspect would be look at what you have got that has fulfilled this criteria and not required maintenance and then ask, were you lucky or did you plan it that way as for many it usually ends up as some legacy system, hardly anybody uses or with low usage that has no internet connectivity at all. That is when you see your Amiga or C64 or early PC working away without issue.<p>But things fail and however well you plan things, things happen and to not at least check everything working and monitoring because it was designed to just work is something you should also plan. Expect the unexpected.
deanclatworthyalmost 10 years ago
Your question provoked an interesting thought process when I began to answer it.<p>I had first thought that one of my projects was zero-maintenance as I truly gave it zero-maintenance in the three years between when I built it, and when I sold it. It was a website which indexed content from others. I had coded the &quot;spider&quot; in such a way that it was quite flexible if the content on the page changed a bit and it stood me well for those three years. I had a database back up system in place that backed up to another server.<p>But then I began to realise that although I had gave the site zero-maintenance, it wasn&#x27;t truly zero maintenance. If I&#x27;d had a hardware failure, I&#x27;d have a backup of the database but no way to automatically spin up a new server and put it in place. But even if I had some monitoring in place for that, what if the monitoring service went down? I guess what I&#x27;m getting it as that there can never be a zero-maintenance self-sufficient service - just one that is incredibly well automated by great engineers.
kwhitefootalmost 10 years ago
My fridge is 30 years old and unless you count periodic cleaning and defrosting as maintenance it has had no maintenance at all in that period. One of my two freezers is 25 years old, ditto. Microwave oven is over twenty as well, but as the internal light has failed I suppose it doesn&#x27;t quite count. My wife&#x27;s hair dryer wasn&#x27;t new when we met and that was forty years ago, still going strong.<p>I very much doubt that anything I buy from now on will last so well, mostly because of quite unnecessary use of electronic control systems that add unnecessary features and extra failure modes. Of course my new fridge uses only half as much power as the old one which means that the new one saves me about 125kWhr per year, which in turn means that it will take about twenty years to pay off the investment, good job that wasn&#x27;t the reason I bought it.<p>As someone already pointed out you have to specify the expected life time to be able to evaluate &#x27;zero-maintenance-ness&#x27; of a system.
rbcalmost 10 years ago
The idea of zero maintenance is appealing but out of reach in a lot of ways. I suppose you mean some kind of software system. From the perspective of the systems world the runtime dependencies are a moving target. Most platforms evolve and their interfaces change over time.<p>The teams the develop these platforms (Java&#x2F;Node.js&#x2F;Ruby) have to balance support for old code branches with the development of new ones. Once the platform team leaves a code branch behind, the problems start to multiply. Zero day exploits are developed for zero day vulnerabilities. The underlying operating systems also evolve and leave the old versions of the platform behind as well.<p>At some point you have to open your applications code base back up and update it for the updated platforms. If you don’t the application dies with its platform. Sort of like the ship that sinks of rust or building that collapses due to the accumulation of deferred maintenance.
pjc50almost 10 years ago
Many non-networked systems neither need nor support updates.<p>If your system is networked, there is always the risk of security updates being required. This can be minimised by extreme effort, but if you have to support SSL&#x2F;TLS? At least you need a way of deprecating the vulnerable ciphersuites.<p>Would you want a web browser with zero updates? It would gradually become a handicap.<p>For consumer equipment, &quot;zero maintenance&quot; means &quot;disposable&quot;: in the event of trouble, throw it away and buy a new one. Good for manufacturer turnover, not so good for the environment.<p>The other option is simply 100% outsourced maintenance, which has long been an option. Some mainframes would even do their own fault reporting, all you&#x27;d have to do is say hi to the technician and let him into the building.
_pdp_almost 10 years ago
I think I should have been a bit more clear but I also like that the question was a bit vague because there is a lot of interesting comments highlighting things I never thought about it.<p>I believe that software engineers failed in some ways because we always factor the maintenance as part of the development cost. In other words, we assume that we have to maintain a system once it is built. It is even more relevant with web applications which give the impression that they are in a constant flux. I don&#x27;t buy the idea that web apps needs to adopt because standards don&#x27;t move that fast and almost all browser are backwards compatible with sites that were developed in the 80s. I don&#x27;t know what is behind HN but its simplistic, non-fluid interface hasn&#x27;t been changed (I don&#x27;t know actually) since it was made which for me shows that it is possible to make something useful without the need to constantly change. There are many example like that.<p>I also like the analogy that some of you wrote about physical systems. Indeed, there are physical systems that hasn&#x27;t been changed for years and they still work. There is also a lot of software systems, mainly SCADA stuff, that are also designed never to be changed. Not long ago I heard a story about a pentest on a SCADA system that was controlling a dam. Despite that the pentest found a bunch of vulnerabilities, it was not possible to change the system because its author was dead long ago. The dam operated just fine even with the vulnerabilities in its software.<p>Another point I wanted to bing about is about defining time and version constrains. Back in the days software was not continues. In other words you get Doom 1. Doom 2 is a different story. Therefore, Doom 1 source code can go free. I would say that Doom was very much low to zero maintenance system, albeit a software one. Bugs were part of the character of the software. Hacking the software through its bugs was as close as it get to magic in the digital world. As we get more connected we require to maintain the software.<p>These are just a few things that came to my mind. I will add more thoughts as I go over your comments.
评论 #9912508 未加载
评论 #9912426 未加载
评论 #9912416 未加载
vinceguidryalmost 10 years ago
If it&#x27;s doing anything useful, then no. The definition of &#x27;useful&#x27; will change over time, so what the system is doing will fall away from that unless it is changed to bring it in line with the new requirements. Cue maintenance.<p>The trick isn&#x27;t eliminating maintenance, but in making maintenance as hassle-free as possible. The best way I&#x27;ve found to do this, the way I do it personally, is to build enough slack into the human system surrounding the automated system (in other words, the business you&#x27;re working for) to adequately design, implement and iterate maintenance procedures. &quot;Ship&quot; the procedures by handing them off to an unskilled person so you can get feedback for iteration.
mattkreaalmost 10 years ago
I don&#x27;t think there is such a thing.<p>Best case scenario is a lot of automation and monitoring.<p>Where I work our dev &#x2F; engineering team is investigating machine learning to automate repair a bit better. For example, over a 7 day period we record data for load on our backend and that ML model predicts and generates autoscaling rules according to historical data. Some of our services are about as low maintenance as I would think they can get (autoscaling, autoremoving poorly performing instances, etc) but I&#x27;d like to improve and only make an engineer get involved when the system can&#x27;t be trusted to make the right call.
Spooky23almost 10 years ago
If the requirements are static and you don&#x27;t require external connectivity, it&#x27;s very possible.<p>My wife is a financial person. Her billing system (it&#x27;s a public utility) until 2009 ran on an AS&#x2F;400 with 33mhz processor. It was probably rolled out in 1991 or 1992 and upgraded to support IP connectivity in the late 90s.<p>It&#x27;s only connectivity was a modem that called IBM when something broke.<p>I made fun of her about it, but It actually worked great. The only reason it was replaced was that IBM ran out of spare parts for the printer.
Pamaralmost 10 years ago
Google Search Appliance was supposed to be &quot;deploy and forget&quot; (at least in its earliest version) but it still had a connection (over phone line, IIRC) so that Google support could reach it in case of need.<p>Such a design makes sense only if the work the system has to do is predictably static though. Even in the case of Google Search Appliance, the moment your company adds a document in a new format the device will require some kind of external intervention to keep working.
lugus35almost 10 years ago
A Zero-maintenance system ? This is just what NASA is trying to build.<p>It&#x27;s just a matter of relation of cost versus maintenance work.<p>If you want to build a zero-maintenance system by yourself, just try to imagine your service and servers will be launched over to Pluto or a comet, and will never come back.<p>But remember that you have zero-maintenance if you pay someone to do the maintenance in your place. That&#x27;s what people generally do when paying for cloud services.
lazerwalkeralmost 10 years ago
I have a server that doesn&#x27;t do anything at all. It has neither inputs nor outputs connected to it, and isn&#x27;t even connected to a power source.<p>Except that I suppose I&#x27;ll still have to blow the dust out of it every so often, and make sure it&#x27;s in an environment where it won&#x27;t rust.<p>(To be less glib: what do you mean by &quot;system&quot;? What do you mean by &quot;maintenance&quot;?)
milankragujevicalmost 10 years ago
My hair dryer has been working for 20 years without any maintenance. However I don&#x27;t think that would be a good idea for anything connected to the internet. However, if it&#x27;s a closed system, and it does the same thing constantly in a constant environment, I think it&#x27;s possible.
评论 #9912222 未加载
fizxalmost 10 years ago
Any system is zero maintenance as long as you choose not to maintain it.<p>Also, zero is a very small number.
brianwawokalmost 10 years ago
Most hardware is like this, right? Your microwave does not (yet) get firmware updates.. what ships has to work right.<p>I don&#x27;t think this is a good idea for a web server.. browsers change, you have to do some things to keep current..
otikikalmost 10 years ago
AFAIK the only zero-maintenance system is no system.<p>So in a way, every time I realize I don&#x27;t need to build a &quot;system&quot; for a given task, I am building &quot;a zero-maintenance system&quot; of sorts.
cgioalmost 10 years ago
I have a couple &quot;quick fix&quot; excel based solutions that still run, with no maintenance 7 years later. There is nothing more permanent than the temporary.
beginrescueendalmost 10 years ago
It depends on what you mean, what your goals are, what you are trying to build, etc.<p>&quot;No maintenance whatsoever?&quot; I doubt it. Things break, get old, go obsolete, are insecure, and wear out.<p>Perhaps, you should worry about &quot;nines of uptime&quot; or &quot;fixed requirements&quot; or something along those lines.<p>Simplicity is first. The more complex, the more maintenance. &quot;Everything Should Be Made as Simple as Possible, But Not Simpler&quot; - <a href="http:&#x2F;&#x2F;quoteinvestigator.com&#x2F;2011&#x2F;05&#x2F;13&#x2F;einstein-simple&#x2F;" rel="nofollow">http:&#x2F;&#x2F;quoteinvestigator.com&#x2F;2011&#x2F;05&#x2F;13&#x2F;einstein-simple&#x2F;</a><p>&quot;No moving parts.&quot;<p>Make it highly available and redundant. Power, cooling, networking, hardware, and software redundancies are needed.<p>Make it immutable. Change and mutable state will create maintenance. Implement functional programming, if you write software.<p>Monitor it and make it self-restart. Somebody already mentioned watchdogs, for hardware.<p>Make it ultra secure. No outside networking?<p>Program finite state machines....<p>If you imply a &quot;hardware and software&quot; solution, these points sound like you need redundant hardware and Erlang&#x2F;OTP. Take a peek at OTP and the Erlang-based languages (Erlang, Elixir, Joxa, and LFE).<p>At least with redundant power, cooling, hardware, and Erlang&#x2F;OTP (Elixir&#x2F;OTP, etc.,) you gain the ability to do all of these things.<p>With Erlang&#x2F;OTP, you can achieve very high uptimes, and if you design it correctly, you do have the ability to hot-patch running code, if you do have to (rarely) perform maintenance.<p>While you&#x27;re at it, you also get distributed programming, concurrency, and parallelism, for free, with Erlang&#x2F;OTP. This, in and of itself, can &quot;reduce maintenance.&quot;<p>See <a href="https:&#x2F;&#x2F;pragprog.com&#x2F;articles&#x2F;erlang" rel="nofollow">https:&#x2F;&#x2F;pragprog.com&#x2F;articles&#x2F;erlang</a> and <a href="http:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;8426897&#x2F;erlangs-99-9999999-nine-nines-reliability" rel="nofollow">http:&#x2F;&#x2F;stackoverflow.com&#x2F;questions&#x2F;8426897&#x2F;erlangs-99-999999...</a>
lcfgalmost 10 years ago
You should probably define &quot;maintenance&quot;, otherwise it&#x27;s very difficult to agree on such a system.
评论 #9912076 未加载
bdastousalmost 10 years ago
This seems analogous to a perpetual-motion machine.
BurningFrogalmost 10 years ago
Define maintenance.<p>Are you talking about software?
blincolnalmost 10 years ago
Back when I was a systems engineer, I built a couple of systems that come as close as I&#x27;m ever likely to see to zero-maintenance.<p>One of them is a piece of automation that looks for Active Directory accounts that are &quot;inactive&quot; based on a variety of criteria (including correlation with data not stored in AD). If they&#x27;re considered &quot;inactive&quot;, then they&#x27;re disabled and their description is updated to indicate when they were disabled and why.<p>I originally wrote it as a 6-12 month stopgap until it was replaced by a fancy commercial account lifecycle product. I believe it&#x27;s now 7 years later and it&#x27;s still in use by the team I used to be on when I wrote it.<p>This may sound like a relatively simple task, but it actually wasn&#x27;t, which is why (IMO) almost no one ever succeeds in building low&#x2F;zero-maintenance systems. Some of the challenges I ran into:<p>- Some users only use their accounts in ways that don&#x27;t update the last logon timestamp in Active Directory. I can&#x27;t remember all of the specifics offhand, but one was that at the time, there were still BlackBerry users, and if they only ever used their AD account for email, and only read email on their BlackBerry, the timestamp wouldn&#x27;t be updated, so the automation had to query the BES database to look at their last usage their too and use the most recent of that vs. AD. I think there were 3-4 things like this, and the automation used the most recent of them all.<p>- Employees go on maternity and military leave, and disabling&#x2F;deleting their account would make for them being really unhappy when they got back. So the automation also has to check the HR system to see if their record is flagged as being on some sort of extended leave.<p>- The government requirement that spurred the development of the automation only applies to accounts for people. There are plenty of service accounts that log on infrequently enough that they would be disabled, so the automation also has to differentiate between those accounts and accounts that represent people.<p>In addition to the basic functionality, I also felt that it had to have significant safety features in place, because if something goes wrong and <i>all</i> accounts get disabled, then no one can log on to fix the problem. Among some of the other safety features:<p>- With each iteration, the automation calculates how many accounts will be disabled during the next iteration as well. If that number exceeds one threshold, warning emails are sent to the account administration team. If it exceeds a larger threshold, it will refuse to operate altogether.<p>- If no information was obtained from one of the data sources that it uses (e.g. a database was moved to a different server and the connection string wasn&#x27;t updated in the account automation config), it will refuse to operate and generate warning emails.<p>- I don&#x27;t remember the details, but there are special conditions for things like &quot;too much time elapsed between iterations&quot; and &quot;the last iteration took place after the current iteration&quot; to catch edge cases where there are problems with time synchronization.<p>I was able to build the automation in a way that made maintenance as close to zero as possible. In the ~7 years it&#x27;s been running, AFAIK the only thing that&#x27;s needed to be changed were the thresholds for number of accounts disabled in a single iteration, because the company expanded its use of AD and suddenly it became normal to operate against a thousand or more accounts at once instead of e.g. 200. A database connection string might have been updated when a DB got moved to another server as well.<p>Anyway, trying to predict all of the things that can go wrong even for such a simple system turned out to be a <i>lot</i> of work. My experience is that it gets dramatically worse as the system itself becomes more complicated (e.g. complicated enough to be a commercial product as opposed to an engineering maintenance task). I don&#x27;t think it&#x27;s really practical to do it with significantly more complex systems - modern computing involves too many changing variables.<p>For an analogy, consider trying to build a zero-maintenance system that waters and fertilizes a garden in a way that keeps the plants healthy. It wouldn&#x27;t be <i>that</i> hard to build one that would handle the current garden. Imagine trying to build one that would handle literally any plant that someone could put in the garden. It&#x27;s not <i>impossible</i>, but you&#x27;d need all kinds of wacky sensors and logic to figure out what each plant was and how frequently to water&#x2F;fertilize it. It&#x27;s much easier and less error-prone to just require that the gardener update a table that lists what types of plant are in which part of the grid, and <i>maybe</i> generate an alert if something changes that indicates that the table may no longer be up to date.
umanwizardalmost 10 years ago
The iPhone is pretty close, unless you physically damage it<p>Not sure what is meant by &quot;system&quot; here.
评论 #9912466 未加载
评论 #9912105 未加载
marknadalalmost 10 years ago
Yes. Or at least that is the goal.<p>What type of &quot;system&quot; is it? A database.<p>I got fed up having to do maintenance on my database, specifically worrying about having to expand its storage capacity. I&#x27;d constantly be woken up in the middle of the night because my entire web application had crashed because it ran out of disk space, because the database greedily pre-allocated excess space to improve performance. I&#x27;m not a DevOps guy, so figuring out LVM and MDADM on the fly was a nightmare. And as my app got more popular, things got worse and I just could not keep up.<p>But then I sat back and thought about it for a minute. I was deploying my app in the cloud, not on my own physical machines. Why was I worrying about expanding storage capacity when the cloud can sell me more of it than I could possibly keep up with? Why was I maintaining finite space when there was an infinite amount available? That doesn&#x27;t make sense.<p>The other problem was that despite the fact everything else was working (the web server, the frontend javascript, etc.), if the database server was down then nothing would function properly because data is the life blood of my app. This sucks, if one piece breaks the whole thing is defunct.<p>So after a while, I decided to change all this. I decided to build a database that would be zero-maintenance, it hit the top of hackernews several times, some big name investors (Tim Draper) got behind it. Check out this demo of it automatically recovering from the complete loss of primaries - <a href="https:&#x2F;&#x2F;medium.com&#x2F;@marknadal&#x2F;gun-0-2-0-pre-release-auto-recovery-of-primary-fault-5f4ffbe63301" rel="nofollow">https:&#x2F;&#x2F;medium.com&#x2F;@marknadal&#x2F;gun-0-2-0-pre-release-auto-rec...</a> .<p>So how is it zero maintenance? Well some other people in this thread mentioned some important points:<p>- There are fewer moving parts - there is no database server. Instead it gets embedded into your app server and your frontend (see next point), so the only thing you have to maintain is your app. If your app is flawless or (more likely) can auto-restart just fine, then you&#x27;ll won&#x27;t need to do any maintenance.<p>- It is highly available and redundant because it uses Peer-to-Peer architecture, like BitTorrent. So even if your server crashes, your app can continue to work in offline mode or with WebRTC (not implemented yet) continue to interact with other users. When the server auto-restarts at some point, the offline data will sync back up and resolve any conflicts. If you have more than one server running, then things will continue to work even if one or many of them crash.<p>- Immutable data allows the system to recover and resolve conflicts without your manual intervention. I&#x27;ll let others talk about how awesome immutable data is, I&#x27;m sure you&#x27;ve heard enough about how many problems it helps with. Especially when it comes to maintaining systems, stuff can&#x27;t get corrupted, and even when it does, the immutable data allows it to reconstruct itself.<p>- State machines allow the system in advance to know what is valid and invalid behavior, so it for the most part can avoid going down paths that are &quot;incorrect&quot; which lead to having to do manual maintenance, because it is already instructed in the first place what states to avoid or how to exit those states if it gets into them.<p>I&#x27;m super glad you asked your question, because I feel like a lot of software developers out there are super negative and bitter about it because most systems they have worked with have basically ruined their lives (like what happened to me, having to fix stuff in the middle of the night). But just because a lot of things have been like this, doesn&#x27;t mean we can&#x27;t borrow from engineers or mathematicians ways to make zero-maintenance systems. So I really hope you find what you are looking for or build one yourself, if you do please let me know mark@gunDB.io because I&#x27;m interested in that sort of stuff. Maybe we could start some group&#x2F;forum around zero-maintenance systems!
michaelochurchalmost 10 years ago
Yes, I have. It failed. No one used it, so it didn&#x27;t require maintenance.<p>I assume that that&#x27;s not what you&#x27;re looking for, though.<p>There&#x27;s a fine line between &quot;maintenance&quot; and &quot;improvement&quot;, and without the latter, you have stagnation. There certainly are systems that require very low levels of maintenance. I have a friend who built a program in Erlang that is still running, 10 years later. (I don&#x27;t mean that <i>the code</i> is still in production. I mean that <i>the program itself</i> is still running.) Of course, Erlang allows the definition of &quot;a program&quot; to span multiple machines, and we&#x27;re debating terminology here...<p>Pay-as-you-go maintenance is best. Don&#x27;t allow technical debt if you can help it, push back against The Business on deadlines, certainly don&#x27;t allow that micromanagement under the name of &quot;Scrum&quot; to get in or else you&#x27;re just fucked when it comes to quality because you&#x27;ll get a fuck-quality-I-need-to-complete-story-points culture, and create a culture of doing things right the first time.<p>Not that you&#x27;ll necessarily use them, but learn a few things about strong statically typed languages like Haskell or Ocaml (Java doesn&#x27;t count; that&#x27;s shitty static typing). One of the great things about Haskell is that it allows safe refactoring. You&#x27;re not holding your breath every time you change the code, because the compiler will usually tell you where your change broke things, and you can just go in a fix them. It is possible to write highly reliable software in dynamically typed languages (such as Erlang, mentioned above) and I don&#x27;t mean to denigrate those tools at all, but it&#x27;s a bit harder, especially when you&#x27;re fairly new to programming, to do so.<p>Finally, once your system reaches a certain size, you will need tests no matter how good your type system is. They start to become an obvious win around a thousand lines of code. Consider generative testing (e.g. QuickCheck) rather than hand-written tests if you can.