Musings on the KISS Principle
KISS Principle - Keep It Simple Stupid
-----
The KISS Principle, much like the Pareto Principle and its many variants, is amazing in the breadth of its applicability. It is applicable across many domains and many areas within those domains. In the context of software development, for example, KISS can - and should - be applied in every phase of the SDLC (e.g. simplicity should be a driving force in requirements articulation, modeling artifact creation, user experience design, etc.).
-----
Simple solutions require relatively less analytical effort to understand. This makes such solutions more understandable (obviously), more flexible, more maintainable, and less likely to include subtle errors that are difficult to identify and resolve.
-----
Essential complexity is the complexity of a solution resulting from the inherent complexity of the problem being solved. Incidental complexity, sometimes referred to as accidental complexity, is the complexity - in addition to the essential complexity - that arises as a result of the particular solution approach. A software developer should understand the difference between these two types of complexity and focus KISS application efforts at minimizing incidental complexity.
-----
Determining when something is suitably 'simple' is very often a difficult task. The dearth of objective 'simplicity' metrics contributes to this difficulty. It is critical, then, for a software engineer to develop an intuition for simplicity. Experience is essential in this development. Practices like collaborative development and mentoring are important as well.
-----
Albert Einstein said: 'Everything should be made as simple as possible...but no simpler.' This statement should serve as a warning to those who are tempted to oversimplify using the KISS principle. We, as software developers, should apply the KISS principle aggressively. However, we must always ensure that the resulting solution is not incomplete - it must, for example, satisfy our customers' needs.
-----
KISS refers to the result, not the pursuit of that result. Finding a simple
approach is often more difficult, and requires more iterations, than finding
a complex approach.
( Nov 26 2004, 05:47:16 PM PST )
Permalink
Mustang (J2SE 6.0) Snapshot Releases
Download early snapshot releases of J2SE 6.0 (Mustang) here.
( Nov 23 2004, 03:30:49 PM PST )
Permalink
LISA Wrap-Up
I am back home after an enjoyable and educational week at the LISA 2004 conference in Atlanta. I can now safely state that the LISA conference can be valuable for developers of management software as well as administrators.
The highlight of the conference, for me, was the BOF I presented at. I hope to be able to do a BOF at next year's conference to discuss more in depth about the management product on which I am currently working.
Most of the sessions I attended were related to configuration management. I particularly enjoyed the following sessions:
- "What Is This Thing Called System Configuration?" - Alva Couch, Tufts University
- "AIS: A Fast, Disk Space Efficient Adaptable Installation System Supporting Multitudes of Diverse Software Configurations" - Sergei Mikhailov and Jonathan Stanton, George Washington University
- "Solaris Zones: Operating System Support for Consolidating Commercial Workloads" - Daniel Price and Andrew Tucker, Sun Microsystems
- "Storage Security: You're Fooling Yourself" - W. Curtis Preston, Glasshouse Technologies
On the way from my hotel to the airport, I was able to find enough time to visit the state capitol and the Wheeler War Memorial. It's always nice to learn a bit about the places you visit.
( Nov 20 2004, 02:25:00 PM PST )
Permalink
LISA BOF - Small Footprint Computing
I just got back to my hotel room after presenting - with Eric Nielsen, Alan Duboff, and Eric Boutilier - at the "Solaris & Small Footprint Computing" BOF at LISA '04. Specifically, I presented information about an upcoming Sun product focused on systems management of horizontally scaled computing environments.
I thoroughly enjoyed myself at this BOF. It was standing room only for much of the time and my co-presenters and I fielded a lot of really great questions. I am very much looking forward to the Solaris 10 BOF tomorrow. I am sure that Andy Tucker and Dan Price will have a lot of interesting things to present.
Here are some pictures Jim Grisanzio took at tonight's BOF.
( Nov 17 2004, 09:26:55 PM PST )
Permalink
Struts 2.x Proposal
The proposal for Struts 2.x (codename 'Shale') has been published by the Apache Struts project. Of particular interest in this proposal is information about how the major new version of Struts will relate to Java Server Faces.
( Nov 11 2004, 12:49:44 AM PST )
Permalink
2004 IOCCC Winners
The source code for the winning entries of the 2004 International Obfuscated C Code Contest has been released.
I always find it fun, if a bit masochistic, to try to ascertain the intent of the code before peeking at the spoilers file.
( Nov 10 2004, 04:48:45 PM PST )
Permalink

