Illusions in Developing Software

Images from Instapaper Product shoot

Images from Instapaper Product shoot

 

Illusions are distortions of the senses, revealing how the brain interprets a sensory stimulation that is actually different from reality. “Erroneous intuitions” are typically related to illusions of attention, memory, confidence, knowledge, cause and potential. The Invisible Gorilla, an enlightening book by Chabris and Simons, really is a must read for anybody who wants to better understand some of the most common illusions our brains make. It made me stop for a bit and think about some of the things I’ve learned the past five years from running a software company as well as the decade before in being in this industry. So what are some of these illusions that we need to be aware of when developing software? Below are just a few that came to mind…

Estimates are a facade.
Estimates are best guesses that are able to be refined more and more throughout a project. At the end of the day they are just a best guess and even some of the most qualified individuals in any industry are wrong more than a third of the time. As projects increase in complexity and new needs are uncovered during the evolution of a product, estimates are soon out of sync. Working towards budgets are absolutely necessary and the amount of features you include and more importantly don’t include are a much more valuable way to approach product development.

Just because it looked great in the comp doesn’t mean it is still right.
Many times our objectives and needs change once we get to finally play with the product in the end. While it is true that a great designer and well-integrated experience and engineering team can reduce much of this, the product has a certain feel that ultimately will be different then what you imagined. The great thing with software is that you can typically iterate on great ideas and test new ideas fairly easily. This is obviously one of the biggest reasons why Agile development has taken such a strong hold. One of the hardest things to convey is how something will feel not just look. Love your comp but realize it is only a snapshot and it will change.

All intelligent and smart people work well together.
When building a team to develop a product, there are often times where multiple companies or teams need to work together. I often hear the words that our team is great and easy to work with, so there shouldn’t be any issues since they are so smart. Heck, I’ve probably said the same words in the past myself. But there ultimately needs to be a driver of a product that brings everybody else in line on a team, which may mean that certain smart people don’t belong on the specific product team. I’ve been a part of many teams where very intelligent people were unable to execute on an idea. From the fear of stepping on toes to the personal pride that is brought to the table, it isn’t always best to get all the smartest people to work together.

The quiet one must not know the answer.
It is amazing how many smart and talented people develop software. Many of these wonderful people are a little introverted and shy and it takes a little bit of time and effort to get them to where they are comfortable vocally expressing their ideas and thoughts. I have found though that it is often the most quiet engineer or designer that has the solution, or at least some key information that will positively affect the end result.

Engineers aren’t designers.
It takes a special individual to pay attention to the implementation details of a design. It takes an even more special individual to care enough to improve upon a design during implementation. The building of a product is the truest form of being an artist as that is where form meets function. The engineer truly crafts the experience. And the more that they understand just how special of a designer they really are, the more valuable they become as well as the product they are working on. Don’t just think you can hire a great engineer and tell him what to do to execute your vision.

Designers can’t write code.
It is amazing to me how many designers I meet and come across who think they are above writing any code or even more importantly, feel that they are inadequate in being able to learn how to write code. I think all designers should be able to write a minimal level of code. It teaches them to think differently. We started our company on a designer writing code, who had never written a software program before. Designers are problems solvers and not giving them enough credit to understand and learn some basic code is a mistake.

Getting a degree will make you qualified.
While I have two degrees and strongly believe in the value of education, I’ll be the first to admit that the one I want on my software development team is the one that has proven to ship. I have come across just too many talented and smart people in this industry that either dropped out of school or didn’t go altogether. The self taught. The ones who loved building things and got impatient listening to professors tell them how to do it. These driven and self-educating qualities are invaluable. Don’t focus on the degree. Focus on what they are learning.

The best product will do the best.
There are so many intangibles that will determine the success of a product or platform. Only a small part of it is how great of a product it is that you made. Don’t get me wrong, you want to execute in the best fashion possible the areas where you have control, just remember that your great product is only a small part of what will ultimately make it a success.

Whatever the illusions may be, don’t let it stop you from taking that first step in making something. You won’t regret it.