In the software circles we focus a lot of attention on writing software right, but little attention is paid to writing the right software. Conference talks generally focus on things like design patterns, TDD, Agile, green belt six sigma (ok I haven’t seen one of these in person but I know it exists). While I do find that it’s important to talk about how to write good software there’s an existential problem associated with it: if we write good software and nobody cares, was it worth it?
Teaching how to write software right has one merit which is: it’s generally easy to teach. Follow principles and guidelines and you’ll write good software. Design patterns, TDD, SOLID, are all excellent principles to write software by. Unfortunately writing the right software involves much more holistic thinking. Software programmers being the somewhat logical and stoic types we are on occasion tend to eschew the holistic thinking for concrete abstraction.
But I think we can at least think about what makes the right software by focusing on our emotional intelligence as a community. I have had the benefit of working with highly intelligent and intuitive people and I think they are not mutually exclusive.
In this post I present two things that I have found that inspires me to write the right software. They both focus on listening to your gut, what your logical mind isn’t telling you and focusing on what your stomach and heart are saying.
Doing things with gusto
Writing software is something I am still blown away with. It’s an extremely gratifying experience where you write something, it gets deployed and you solve the worlds problems. Some of the biggest innovations have come out of this hunger for writing solutions that just work.
Gusto which is a term used to define the feeling we get when we’re hungry for something. Imagine the feeling you get right after a long bike ride or run where all you want is 13 egg omelette. That is gusto. This same feeling can be applied to software as well.
Some examples of software inspired through gusto to me are: Rails, Clojure, Ruby, numpy. These are all projects which solve problems and are fun to work with. Rails has made a name for itself by writing things with lots of gusto, and motivation. Clojure is an extremely well executed dialect of scheme (which will probably always be relegated to the esoteric bin unfortunately). Ruby is really a happy language and numpy is well executed for the academic and data analysis communities.
When using this software something clicks and things work as expected. You’re able to solve the worlds problems with these tools. They all have gusto.
Writing software with gusto means focusing on what drives you, what excites you, what you want to be eating up more of.
Disgust driven development
The other end of the spectrum of software that I’m still blown away with is just how broken everything is. Software is written by imperfect humans and therefore there’s a lot of broken stuff out there. Sometimes software can bring you down just because of how hard something is to build or work with.
Disgust has to do with the feeling we get when we eat something toxic or poisonous. Our natural inclination is to spit it out. This is a completely healthy thing! For instance most americans still make brussel sprouts by boiling them which ends up sucking all the nutrition out of them, and yields terrible tasting green balls of death.
This applies to software as well. Lots of inspired code can come out of being disgusted with something. I believe the prevalence of JVM languages has come out of the ashes of disgust due to Java and boilerplate. A lot of innovation has been done in the Ruby community around making things faster out of disgust of the language having a reputation of being slow. JSON-Schema, RAML, Swagger are all excellent tools for overcoming the disgusting attributes of API’s by enforcing some sort of order on things.
Writing software out of disgust is in many times just as inspired as doing it with gusto.
So what do you think? What makes you excited to act with gusto? What disgusts you right now? When you center in on these emotions, then you can make a logical decision whether to act on them. If the feeling is large enough most likely you’re not the only one. And if you figure out a new solution to something out of disgust or with gusto then open source it and share the happiness.