By Ajey Gore
Sometimes I wonder, what drives me to work everyday? Most of the time it’s the idea of solving a problem or the problem, that I take with me when I go to bed. It’s different problem everyday or rather every night, but I sleep with a hope, the hope to solve it. And I thought that drives me, I always tell people, this “excitement to solve a problem” is the source for my energy for my work and drive towards my work. Not really! While I get to solve a problem everyday, in reality, becomes more fruitful and satisfying when I really have to create something in process of solving a problem. This sounds pretty complicated. It true only few times that every profession has a benefit of creating something in the process of solving a problem but writing software can be.
These are random thoughts, I don’t want to drive you towards a point, but certainly want to give you a point of view. Now, next question may be asked at this moment that how come we end up creating something during problem solving – and the answer lies in uniqueness of software solution. Solving problems through software either goes from very specific problem to solving a generic problem thus ending up creating a software framework (eg machine learning, web mvc, mobile app development framework etc), that in turn can help solving similar business problems; eg; many organisations use software frameworks such as Hadoop or TensorFlow or Rails or Django to solve very common everyday business problems. On the other hand we can start from very generic software framework to solve a specific business problem and get into deeper business specific software solution and at the end, we end up creating something very unique for our own business problems. In both cases one ends up creating one’s craft. This means it’s always about creating craft, it’s always about playing with your craft, it’s always being a chef or a musician who creates and never stop creating. We usually refer this as being craftsman.
Taking on from here, craftsman, usually refers to someone who creates something with perfection. The degree of perfection can be increased over the period of time with practice, but sometimes one might ask the question – “when writing software what are we practicing? How can you practice writing good software? Software is, and almost always sounds, mechanical.”
But Pete McBreen mused about it “Becoming a good software developer (engineer) involves a lot more than. just learning to write programs. Software development (engineering) is a craft, it blends science, engineering, mathematics, linguistics and art” Bang on! This actually makes sense, but how many places and how many companies or organisations provide opportunities to create this blend? This also depends on what kind of organisation you are working for. The way musicians never stop creating music and experiment with different instruments, chefs never stop creating dishes and experiment with different flavors, software engineers should never stop writing (or hmmm creating) software.
Today, where I work (GO-JEK), it has huge mix of science, engineering, weather, mathematics, linguistics and art. A mobile app is just tip of the ice berg on what we do at GO-JEK, but certainly we create software – we mix a lot of mathematics, statistics, data regressions for our machine learning models and of course common sense! But combining all this, this act does not mean about writing software but means that creating something new in the process of solving a problem at hand keeps us excited.
I have been fortunate enough to bring likely minded people together, who always believe that they should not leave their craft (writing software, creating solutions) and it’s just not about writing your business problem in computer language, but it’s also bringing science, mathematics and other desciplines to create something everyday!