On Returning

In December 2014 I embarked on a new adventure. I joined a startup company as a programmer. The company creates a service is called Pelp and is currently only available in Norwegian.

The past 6-7 years I’ve been having roles such as Chief Technical Officer, Front-end Architect, Team lead, etc. Each position has been challenging and I’ve learned so much. In fact, I still learn from things I’ve done many years later by looking back at them. There are so many things I’d do different and so many people I’d treat differently had I know then what I know now.

Making a return to working as a programmer is nothing but pure bliss. It is such a privilege to have the luxury of focusing solely on creating things the service needs. I can choose wether to engage in things outside my core duties. 

Being a team leader or an architect this is seldom the case. You constantly get pulled in multiple directions. When in a managerial position you will get pulled into process and activities which are about things which are company related. If you are in a technical managerial position you will also be called upon to provide input or Rubber Duck some issue / challenge. 

If you want to keep your programming skills sharp you will be engaged in a constant fight to get some coding time. Being in a managerial position you will to a lesser degree be measured on the code you produce and therefor it is easy to let your programming tasks slide. 

Personally I tried to get as much programming done as I could. However I realized I started doing more harm than good, because I never really had the time to focus and create really good solutions. Seeing this I tried to not take on tasks which meant others relied on me delivering and having others bring what code I created into production. Needless to say, continuing down this path leads to increasingly deteriorating programming skills. I would estimate that about 2 years of working like this, most programmers would become pretty useless and unable to produce decent code. 

This post was written a while back. The company is since been shut down. Learnings however are still valid ;)


The Hardest Thing For A Leader

Now, there are naturally harder things than what I’m going to talk about in this post. However, given the context of software development and leading teams this is the hardest.
Especially if you’ve gone from being fairly good at the decipline of the people of your team. I have spent a few years being in a position where I lead teams, but recently I stepped down to become a team member. This has given me new insights into how different styles of leadership will affect members of a team. If you’ve been leading for a long time, I highly recommend being led for a year or two. It’ll make you a much better leader afterwards, guaranteed! Here’s mye thoughts leading:

Loose control.

I’ve struggled, and failed, at this previously and I might don’t again. It’s so hard to just let go of controlling details and trusting that given clear directions and goals things work out.
Why is this important? If you lead a team and you constantly interween or pick on details you basically tell the team or person on the team you don’t trust them. It might not be your intention, but it’s what it feels like on the opposite end.
There are of course ways of directing a team without displaying a lack of trust. Mentoring and coaching is one. Letting the team fail and then help them learn what caused it to avoid it happening again.

There can be numerous reasons why a team lead behaves in a way which makes the team feel there is no trust. Personally I’ve failed at this because I’ve deep down wanted to do the task myself, rather than giving it to the team. That’s the old coder showing.
In other contexts I’ve seen “control” applied because the team lead is scared of loosing control over the technical platform. The pace of modern software development is so fast and changes so rapidly, that many x-coders get cold feet because they’re no longer can keep up. The knee-jerk reaction is to limit the use of new things as a last resort to try and stay connected with the technology.

This leads to a team who’s disillusioned and who’s left with an impression that their leader doesn’t trust them and the leader is holding them back.

There’s probably dozens of more samples and reasons why leaders micromanage and behave destructive towards their team. These are just some of the things I’ve done, you might have more samples.

Bottom line is: abandon control and start trusting. If you’ve been leading for a long time, take a step down and see what it’s like beneath you. It’ll do you and those you lead wonders.


Going to a conference has changed my life

JSConfI was fortunate to be able to attend JSConf EU in 2011. This turned out to be a life altering event. Going there I expected to see some nice talks and get drunk in the awesome city of Berlin. While I did both of those things, what happened in the can going to Berlin airport was not expected. I got on board to organise a JSconf-style conference in Oslo: The Web Rebels Conference. Four  conferences later we are now planning our 5th(!) and we got an email from Jan L which made me reflect on how attending and hosting a JSConf event has affected me and my life. In short: it has made me a better person.

This is not some emotional statement based on nostalgia or wanting to suck up to the people in the community. It’s the truth and here’s how I became a better person.
I was there when Chris Williams gave his incredible talk An End To Negativity at JSConf EU 2011. Attending the talk and repeating the phrase: “What would I do if I knew, I could not fail?” changed something in me. Coming home from Berlin and seeing my kid I totally got what Chris was talking about in his talk. Since that day I became much braver and took on challenges I’d otherwise give a pass. It helped shape the coming years of my professional career.

Chris has helped create the JavaScript community. This welcoming and positive community has changed me in so many ways. Thanks to the members in our community I have become more aware of social justice challenges in our industry. How privilege plays a role and how the whole idea of meritocracy is problematic. I used to give talks saying “If you’re not doing what you love, it’s because you lack passion or you’re lazy”. Luckily I know better now and this is thanks to the amazing people in the community ignited by Chris and JSConf. Being apart of this community is so important that I’ve passed on job opportunities with large pay raises because I want to be connected with the JS community.

Chris, you’ve made a huge difference in my life and I wish you and your family all the best. Now it’s up to the rest of us to follow your lead.


Cross roads

Photo by https://www.flickr.com/photos/greenmanyyz/

Photo by https://www.flickr.com/photos/greenmanyyz/

I am fast approaching 40 years old which is pretty fucking scary in general, but even more so when you work in software. No more am I allegeable for jobs, as I’m no longer in a place where I am viewed as something for the future. These amazing and brilliant young people coming through are just so much better than I ever was. It’s a young people’s game, programming.

I have many friends who are of similar age and we share a common scare. We’re only half way through what our rulers hope is our professional career. This is a pretty scary thing, I’ve had one type of job since 1998: programming stuff for the web. Is that what I’m doing for the next forty something too if I were to have the fortune of living that long? We’ll have to work until we die as the Norwegian public pensions will be all gone. Is a move into the management tier the only option?

Full circle

Already we’ve come full circle on so many things. Everything with cloud computing is just a repeat of ideas coming out of time sharing and similar concepts from the 60-ies. The Web vs Native war is just another iteration on Web vs Desktop which raged during the start of this millennium. Listening and reading the discussions held by the new generation of thought leaders you realize that everything they see as new and amazing really just are iterations or increments of things done a while ago. The dilemma is this: how can you keep being interested and stoked about new technology when everything is just an iteration of what you’ve seen before?

What next?

Most people seek refuge in management, either as middle managers for teams or higher up. Programming is by many viewed as a young persons game, where you’re expected to work insane hours and use every breathing minute learning new things. Luckily this notion is beginning to fade and people realize that burning out all programmers and scaring them into management is a bad thing. I think the only way for programming as an industry to evolve is by making sure at every level we have a mix of newbies and veterans. Companies with more age diversity have the opportunity to actually learn from past mistakes, but also add the spirit of youth to push things forward. I hope..

Luckily I have worked at a company with a little bit of diversity when it comes to age. Seeing how some of my elder colleges are passionate as twenty year olds fills me with hope that you can actually keep doing what you love for an entire career.

So aging, funny thing. Amirite?