All Articles

Things I learnt as a software engineer in 2016

opening image

2016 has been an exhilarating year for me professionally. To give you some context, I must first begin with how I started 2016. I had been working for a Berlin based startup for 4 years and decided to take unpaid leave and go to India for 3 months. Those 4 years were a great chance to taste so many different technologies, ranging from large scale javascript applications to system programming in the D programming language.

Taking that step back was a unique chance to retreat from the high speed flow of information. That includes Github, social networks, hacker news, and the likes. I had reached a point where I was comfortable with my professional trajectory as a developer. So I signed up for a meditation retreat up in Dharamsala, a hill station in the Himalayas and home to a large part of the Tibetan Diaspora including the 14th Dalai Lama.

Meditation is really the art of doing nothing but observing. Not in a lazy slouching on the couch way. Simply observing the stream of consciousness turns out to be quite hard to master and so it’s usually suggested to be in the most supportive environment. After 10 days in silence I experienced a subtle yet noticeable sense of clarity. My dreams became vivid and I became more mindful of my everyday activities.

After a 32 hour train journey with a heightened sense of well-being, I ended up in an alternative community named Auroville in the southern state of Pondicherry, India. I spent about a week there during which I developed a queue management system. If you’re interested in that story, I gave a talk about it. Interestingly I only spent about 3–4 hours a day coding it. Within 5 days the design, development, and testing of the project was completed. In hindsight it seems trivial how that happened.

Working less has reduced my stress level and improved my productivity

I now work 4 days a week. This is a simple recipe for better solutions and less stress. If you’re interested in this topic, I suggest you read Less stress, more productivity: why working fewer hours is better for you and your employer. Find meaningful work. There’s usually many things that need to be solved at every organisation. Find the things that make you tick. It may change. Learn your self, learnt to adapt and embrace this cycle of figuring out what you want to work on. Persevere through challenges and change once that skill no longer interests you.

“Out of clutter, find simplicity. From discord, find harmony. In the middle of difficulty lies opportunity.” ― Albert Einstein

ES2015 and the large ecosystem made me fall in love with javascript

The ecosystem is growing at a rapid rate. Faster than any other ecosystem.

The green line represents the growth of the npn package count

This means that if you tackle a problem, there’s a good chance someone else faced it and published his recipe for for that problem. That poses a unique opportunity for learning and seeing things differently. The diversity of solutions and abundance of novel ideas is unprecedented. Skimming through code can be fun and some of the projects have fantastic documentation. An random example of that is lodash’s some function

Acknowledge your fear of failure and embrace failure as a mechanism of self development

Let’s face it. We’re all human and we want to do well. We live in a society that glorifies being the best. Fear of uncharted territories can get in the way, especially once you’ve mastered something. Milton Glaser does a fantastic job explaining this.

Freedom is essential to job satisfaction

Making decisions, having freedom to shape my work time the way I see fit, and working from home are privileges I’ve been only recently exposed to. They’ve transformed my professional satisfaction to say the least. Being able to make these decisions has two effects. First, if I know I need quiet time to focus on things, I can make the adjustments needed e.g. work from home. Second, simply having that freedom, reinforces the idea that I’m trusted and valued to do my best.

Emotional Intelligence is learnable and can have significant impact on your career

The nature of modern software development is team work. This is backed by research. The startling news is that the ability of a team to perform well depends less on who is on the team. Project Aristotle was conducted at Google to determine, what makes a team work well. Their insights were rather surprising. They found five key characteristics of a successful team:

  1. Psychological safety: Do team members feel comfortable taking risks on without feeling insecure or stupid?
  2. Dependability: Can team members count on each other to do high quality work on time?
  3. Structure & clarity: Are goals, roles, and execution plans on the team clear?
  4. Meaning of work: Do team members feel they are working on something that is personally important for each one?
  5. Impact of work: Does the team fundamentally believe that the work they’re doing matters?

I’ve discovered that competitiveness has only been an impediment to my progress. This is a personal journey each one of us can choose to go on. Developing empathy for my team members has opened my up to so many learning opportunities. If earlier on in my career I directed my efforts towards technical mastery, now I direct energies at reflecting on interactions and disagreements within the team.

In the facing the intelligence explosion, the author provides a definition of intelligence as:

Intelligence measures an agent’s ability to achieve goals in a wide range of environments.

If we agree that most professional software engineering is done in teams, teams are one of those environments, hence the necessity for emotional intelligence as a means to achieve your personal goals.

Cardio exercise makes your brain function better

Our world is full of epistemic arrogance. The term was coined by Nassim Taleb.

Epistemic arrogance : Measure the difference between what someone actually knows and how much he thinks he knows. An excess will imply arrogance, a deficit humility. An epistemocrat is someone of epistemic humility, who holds his own knowledge in greatest suspicion.

We have a tendency to think we know more than we actually do. So take everything with a pinch of salt. My experience, starting jogging as a sport has been transformational. The transformation is purely anecdotal and I don’t want to fall prey to the confirmation bias, but I came across multiple articles praising the benefits of exercise. Finding sports I like and living an active lifestyle has impacted many aspects of my life. The metaphor of things in life not being a sprint but a marathon couldn’t apply more.

2016 was a year I’ll look back to. Things are changing and the pace at which they’re changing seems to accelerate. The world as we see it may be completely different in a couple of years from now. Finding inner peace and satisfaction in your professional life is a tool for dealing with an ever changing world. And despite some of the privileges this era has brought, many questions have been left unanswered. Leading a meaningful and balanced life in software is probably within reach. So continue exploring and take things with a pinch of salt. I certainly will.