Good Ideas: Good Everywhere.
Design Your Death-Star without Exhaust Ports.
One of the points that I am and have been a large fan of is to simplify a system down to only essential components without sacrificing usability. While this is a fantastic strategy for surviving unstable and experimental distributions at home, in a corporate environment it has the added benefit of longevity.
While it’s always a temptation to simplify the work itself by using newer and more interesting tools and libraries, designers should keep in mind that the Unix platforms grow and evolve at an exponential rate. When I see a project that has been out of development for the last 7-8 years, but that you can still install on even the most modern of systems and run it without any modification, I credit the developer with having great foresight. Sure, there is now a lot of designed in backwards compatibility, but this only extends to the projects that have reached a level of popularity as to create a substantial need for long-term support. Gtk2 for instance is not something that people were willing to part with just because gtk3 came along. Eventually this too will go the way of the Dodo bird.
There are tons of interesting technologies being worked on currently, especially in the display server world. While I’m all for developing for newer platforms, I don’t think that this is a wise decision if you’re doing so with corporate platforms in mind. The last thing that any company is looking for is to invest time and money into a prospective project that will be deprecated in 6 months. This is where using simplicity in a design can be of great benefit. ANSI-C and Shell scripting have stood the test of time. There are modifications to the systems, but they’ve proven to be a wonderful way to minimize external influence in how a particular program survives. The systems designed on this very principal have outlived even more popular MS-Win based programs, and that’s a huge benefit to anyone looking to maintain functionality regardless of the shifting tides of technology.
I cannot count how many times I’ve personally worked on systems designed on an curses platform, even today. They still work on the hardware that they were originally designed for, and can often be ported forward for a very long duration. Even the most modern of companies will not invest in a project if their current solution is perfectly successful. As a designer, this can be a two-edged sword. On one hand, if you’re basing your design on having a chance to rewrite it every few years (engineering job security), then it might seem like a bad idea to make something that will possibly still work perfectly 15 years in the future. On the other hand, it’s a competitive market and designers who provide solutions that are elegant and rock solid will not be forgotten. By designing a firm foundation, you are allowing your work to speak for you. While you may not be needed for long-term support, the companies who benefit from such design are far more likely to approach you for new projects. This is how I personally would prefer to work.
Had you rather be called with “Your product broke again…” or “Since the last project was so successful, we were wondering if you would be willing to work on….”? I know that I’d prefer the latter.
So, by sticking to the standards of design that have proven themselves over time, you not only create an easily maintainable system, but display a wisdom about the workings of the technology industry. Plus, all of the time that isn’t spent trying to fix a broken project can be spent on developing better answers to new problems. This pushes the market forward, allowing newer projects to grow by your decision to stand on the shoulders of giants.