Wednesday, September 5, 2012

I Love simple software.

So I was bored today and decided to play around with factorials on Google (Yes, don't make fun. Factorials are exciting, They are the epitome of exclamation marks! ) and to my surprise, a calculator now loads when you enter a formula on the search bar. Try entering "5!".

I know I know, It's just a calculator, but the exciting thing about all this is the simplicity of the idea and how such a simple idea can be so functional, practical, and powerful.

This brings me to software UI, Functionality, behavioral and problem solving simplicity in general. I recall one of my professors in university always saying "The simplest solution is probably the correct one".  How true this is back then when working on my assignment as it is today working on company projects. I rely on this statement in my day to day work, and so far, it never failed me. 

Expanding this further to the outside world, some of the most successful software ever built, some comparatively speaking, are focused on being simple for end users and simple for the developers to maintain.

In my opinion, some of the simplest software interfaces/tools/systems that I can think of are:
  • I give you: Microsoft Calculator - Simple interface/Tool- If you ever owned a Windows OS, even the 1st BETA version, you have used it. If you didn't, odds are that you did without you realizing it. If you still say you haven't used it, I say you're a liar. If you are a holy person and don't lie, I say get out of your cocoon, open Run > Calc and play around with it. The idea behind it is simple to the point where you know how to use it without thinking about it. I cannot talk about how this was implemented, but given that it has been around for ages without it being changed in windows 95 to XP, to me, this implies that there is some form of simplicity, extensibility, and maintainability in the design. 
  • Google search boxSimple interface - A single magical text field; enter what you need, and a result set is displayed. Again, the idea behind the usage is simple to the point where you know how to use it without thinking about it. If you ever notice Google applications in general, they revolve around being as simple, and as least "UI crowded" as possible. What does this imply? Simple UI, Simple Forms, and proper division/inheritance/decoupling of the code in the background.
  • The LIKE link/button on social media sites - Simple interface/system - So simple to the users, with immense power to the companies who store and analyze what is liked and what is not. Many of the advisement you are bombarded with these days are a result of your 'likes'.
  • The US air-force F22 Fighter jet - Simple interface, comparatively speaking -  ( please don't quote me on this) I was looking online on WIKI and it was explained that the interface for the jet was so functional and simple compared to older aircrafts, that anyone with basic military fighter jet training can fly it. ( Again, I have no references to back this up anywhere, so if this is false, then it's false)
  • Last but not least, ScrumQueue. - Simple interfaces/tool/systems - I was so fed up with how complex project management software in the world out there to the point where I literary created one myself with simplicity in mind. I use it for any project I work on. The objective: manage my backlog of items with a simple status and history logging. I don't need fancy colors/etc. I use it and never looked back. Of course, I am always tinkering with it to advance it with new features, but always with simplicity in mind. This is my salesman pitch :-)
IMPORTANT: Simplicity does not mean Lack of Progress, 
It means Smart Progress

And here is a screen shot of the magical calculator that enlightened me to write the above.