Archived entries for simplicity

Subtraction (Again)

Wow. The new Magic Mouse is beautiful.

magic-mouse-side

When you look deeper, it’s another example of extreme subtraction…

No cords. No buttons.

By loosing the excess, the mouse gains functionality and capability. All of the sudden, lots of new worlds and possibilities open up. We have the capability for multi-touch and a (mostly) unrestricted canvas for rich interaction because of the items that have been removed from the mouse.

Sound familiar?

This is the same design that opened up a new world of phones by removing the physical keyboard.

Thank you Apple :)

Finding Simplicity Through Thoughtful Reduction

Reduce


I’ve been spending a lot of time over the past few years thinking a lot about simplicity. Simplicity is one of those things that we mention a lot in passing, but it’s also something that we don’t dedicate much effort to achieving.

We develop software where 60+% of the functionality is never or rarely used. We focus on feature-matching the competition while we neglect listening to our users. We litter our presentations with excessive bullet points instead of focusing on our core message. We write user manuals that rival Atlas Shrugged because we’ve failed at providing usable interactions.

By nature, we tend to add when we should subtract. Evolution has plagued us with reactions that promote complexity and avoid clarity. When we create, we focus on building more – but when we consume, we tend to find the most joy out of having less.

How do we make a conscious effort to find simplicity in a world of complexity? Well, to start, we can start to think about thoughtful reduction.

Thoughtful reduction is an extremely powerful tool in our quest for simplicity.

The next time you are faced with an opportunity to improve or modify your process, or your software, or your life – think about what you can remove instead of what you can add. Take a little extra time to remove root causes instead of adding workarounds. Think about how to communicate more clearly instead of how to communicate more. Think about the things that you can stop doing instead of the things that you can start doing.

When we remove the non-essential then we end up with a stronger focus on the truly essential. Find the core of your application, your message, your purpose – and take away the rest. You might not end up winning the feature-race, but you could find a beautiful product and a renewed sense of focus.

Subtraction

Lao Tzu Quote

Announcing: Big Visible Cruise

Over the past couple of days, I’ve been pulling together a simple Information Radiator for CruiseControl.net. The idea behind the project is to use the power of visualizations to provide simple, visible, and informative displays that expose the current-state of your automated continuous integration builds.

I threw this app together very quickly a week or so ago and I’ve been amazed at how addictive it’s become. In our team room, we have a dedicated monitor that is always running the application. The result is that you know exactly where the builds stand as soon as you enter the room.

I initially wanted to put this together as a temporary solution to picking out what items we will use to show our build status. We always bounce back and forth about Nabaztag, orbs, lava lamps, and other physical things to show our build status. It’s usually easier to find an extra monitor than it is to get a purchase request approved for a wireless-enabled rabbit. Big Visible Cruise is the same idea, it’s just a visualization instead of a physical device. Judging by how much we all enjoy seeing it, it will probably stick around in addition to any physical device we pick up.

You can find out more about the project at http://code.google.com/p/bigvisiblecruise/. After the holiday I’ll post some pictures and explain how we are utilizing the big display in our team room.

In the meantime, you can likely get an idea from looking at the display while it’s monitoring three different projects in the following screen shot…

This shows that I have three projects (Foo, Bar, and Some Project) being run on my CCNet server. In this example Foo and Bar are successful and Some Project is broken.

The other state that isn’t represented in the pic above is the “building” state. When a project is building, the row representing the project will turn yellow.

By default, BVC will poll every 15 seconds. I recommend using BVC with CCTray so that you have a big visual display along with auditory clues about your build process.

Big Visible Cruise is being released under the MIT license.

If you’re interested in WPF and/or information visualization, I’d love any contributions :)

I plan on providing some interesting visualizations over the next couple of months. Let me know what you’d like to see on the RoadMap page.

Learning From Bruce Lee – Simplicity

Found on Wikipedia

“In Jeet Kune Do, one does not accumulate but eliminate. It is not daily increase but daily decrease. The height of cultivation always runs to simplicity.”

-Bruce Lee

Could your software use a litte Jeet Kune Do?

My Desktop

Nice and refreshing…

The Laws of Simplicity

I just completed reading The Laws of Simplicity by John Maeda. Without a doubt, this was an excellent book. There are ten laws in the book and every one of them is worth the few minutes that it takes to read through each chapter.

It’s almost funny that I read the book in only a couple of hours (it’s under 100 pages) and I’ve spent the last day reading an installation document that tells me how to get ready to setup some software. Based on the first law and the tenth law, I think about 80% to 90% of my time could have been spared.

Using Sparklines for Sprints

On the project that I'm working on, we are currently tracking our sprints with index cards (on a wall gantt) and by daily/sprint/release burndowns in a spreadsheet. The wall gantt is the tracking that is used for our day-to-day tasks and the spreadsheet is used more as a communication tool for our external stakeholders.

Our team has recently run across some issues with a few third-party software packages that have impacted our velocity and required some additional tasks. As part of the on-site team, my visibility has mostly been with the wall gantt. I've noticed that our velocity has taken a hit, but I wasn't sure how our velocity had trended over the release as a whole.

I recently ran across sparklines and was interested in using them to take a look at our velocity. I was extremely impressed by how much information could be viewed in a short space.

Sprints with Sparklines

It's fairly obvious where the trashing started (around sprint 10). The sparkline shows a daily story-point burndown inside of each sprint. The high and low points of work remaining for each sprint are shown through the different colors. For the spreadsheet, I used the free Bissantz tool (thanks guys).

I'm looking forward to picking up Beautiful Evidence by Edward Tufte and reading about more visualization patterns. Reading his work is always extremely insightful.

YAGNI – Across the Spectrum

YAGNI as a development concept is a very powerful idea. The idea of making a decision at the last responsible moment saves money, effort, rework, and will often save sanity. The idea is very simple and bascially revolves around removing speculation. When we constantly think in terms of YAGNI, we are often mitigating one of the largest risks to software projects.

In my experience, extensibility is usually the largest risks to a software project because it often results in the largest degree of over-engineering. This usually isn't a popular idea, but I think it's true. There are times when it's warranted and valuable, but the problem is that we tend to always think that it's valuable. We always say things like: "what if", "someday", "it's possible that", "I can imagine a scenario", and so on. These are usually things that should be considered, but not always things that should be developed. In theory, we need to pose these questions to our stakeholders and our stakeholders should be making these decisions (not the development team).

The problem with the theory (allowing the business team to make the decisions) is that they are often caught up in the same vicious cycle of over-engineering our specifications. When I'm handed a large requirements specification document, I know that 25% of it is outdated, 40% of it will never be implemented, and that the real value likely comes from 20% of the requirements. The state of the specification is a result of over-engineering by the stakeholders (and it compounds the issue of over-engineering by the development team).

I don't have a silver bullet to fix the issue, but I believe that we can at least identify the problem and get in the correct mindset of fixing the problem by thinking about how to eliminate waste. Simply considering known value vs. speculative value can go a long way. We should always be thinking about doing less. Less is a powerful idea because of the compounding growth of each additional thing that we choose to do. For every "I can imagine" scenario, we have business costs, development costs, testing costs, and maintenance costs. We also have other costs that we usually don't think about including opportunity costs.

To push the idea further, we should consider the idea of "less" across the spectrum of our activities. One big opportunity comes with documentation. I think that The Elements of Style should be required reading for everyone that contributes to documentation on a project. Our documentation should be concise and avoid all the additional "fluff" that makes up the majority of the large documents that I see on typical projects. Documents should be focused to the point that every word in the document has meaning just as every requirement should be valuable and every bit of software should be testable.

Unfortunately, the idea of more is the norm. The positive side is that we are the problem and we can all take steps to eliminate waste in our day-to-day activities. If we don't do anything else, we should at least consider how the idea of "less" can apply to our projects and our organizations. It's not an overnight change, but it is a valuable exercise in thinking about what really matters.

Utilizing Blank Space

I've been using Backpack extensively throughout the past couple of months and I've been very impressed with the simplicity and effectiveness of the service. One of the first things that immediately stood out was the effective use of blank space at the right times.

For instance, when I create a new page I have instructions that appear to help guide me through the process…


This is a very simple, but very effective idea that drastically increases usability

The Signal vs. Noise blog has a post about this here. I wonder if it was backpack that they were talking about in the post?


RSS Feed. This site is the home of Ben Carey.