This is not my CV, this is a summary of what my career has entailed so far. I like writing my thoughts down since it allows me to think about my experiences in a different way. Writing it down might also explain where I’m coming from and why you might want to agree or disagree with me. This first part will be starting at my education and ending when my first job ended.
Even though this isn’t a CV I’ll start it like on with a summary of my formal education in the area. I ended up studying up in the north of Sweden at Luleå University of Technology trying to get a Master of Science in Computer Science and Engineering. Ridiculous name I know, but it does include various things outside of computing as well. It wasn’t my first choice of school but due to the popularity of that type of education at the time and my above average but not fantastic grades it was the safe option.
Up there I learned the usual computer science things, how to like beer and to praise coffee like it was a wonder-drug. I still like these things but the severe push for us all to like them seem a bit strange looking back. On the computing side I did learn about programming theory, programming languages, compilers, sorting algorithms, hardware, artificial intelligence, and many more random things.
After the fact I’m split on the need for this education for me personally. I was programming things before this education and my goal was never to become a researcher in the area. Should probably have thought about this before spending years in an education I might not need but young me made education choices based on leaving future me with the most choices of further education until suddenly there was no more education to have. But having at least a basic knowledge of all the layers involved when a piece of code talks to another piece of code on another machine on the other side of the globe removes most of the magic and have let me think about problems in different ways than many colleagues. This is not necessary for the kind of work we do since most things either aren’t very complex or are very googlable but I personally really dislike not understanding why things happen. This might be why I dislike the term full-stack. Except for it being over-used it just never seem to actually mean the full stack. But that is a rant more appropriate in post about recruiting.
Towards the end of my education I had what seems like a common fear. The ending of the education phase of your life and starting the next one. Being up in Luleå where there were no jobs for anyone with this kind of education didn’t help either. There was the option of repairing computers at the local big box electronics store but that did not appeal to me for some reason. So instead I further avoided completing my education and took various foreign language courses instead. Japanese and Mandarin was interesting but not really necessary. When I was at the lowest point in my avoidance of the future I suddenly got an offer to come down to Stockholm for a job interview. I hadn’t done anything but a friend I studied with who also made money in any way he could figure out gave a tip to a company who had a bounty on finding new developers.
The company was the leading price comparison site in Sweden at the time. They flew me down on the morning, had all the interviews they usually spread out over a couple of days on the same day, and then flew me back up the same day. They liked me, I liked them, and shortly after gave me an offer that I said yes to almost instantly. Going from living on borrowed money and taking random courses to getting paid for doing things you do for fun was really attractive.
Having not lived in Stockholm before I was quickly made aware of that finding a place to live there was almost impossible and it still is. Apparently you were supposed to have put yourself in the queues for rental apartments at least a decade before moving there. If you didn’t do this you should be prepared to pay extortion level rent in an often illegal subletting situation where you can get thrown out at any time. Third option is to buy a small apartment for a million or two. Two items of extreme privilege solved this for me though. A family friend had an apartment that was going to be empty for a couple of months which I could rent. Then when I talked to my bank and they gave me a large loan to buy an apartment since this was before all that crashed and I worked in IT in Stockholm. I had only worked for a month or two at that point but they didn’t care.
The first job
Looking back at it I think this workplace was actually the best. At least from a practices viewpoint. As a new employee I had harsh but fair code reviews. It was a horrible feeling having people point at every line in a change that you wanted to make and telling me that it was bad. The important part was that they also said why it was bad and what I should do instead. After a while I also accepted that the reason was that they cared about the thing we were building together and it started to feel better. I even learned that the Singleton, beloved at the university, was a bad idea in the real world.
This was also the only place I’ve experienced so far that ran projects in a proper agile way. So proper that I probably should write it with a capital A but then people will nitpick. The teams were fixed and sprints were short and usually the same amount of time. We had short daily stand up meetings where we actually stood up since that does make a difference. In the meetings only the developers would talk, the product owner was there but remained silent and would help with re-prioritization after the meeting if needed to figure out what would be moved to the next sprint. Tasks were broken down and estimated by the group and given a complexity score. A velocity was calculated for the team based on previous sprints. I could go on but these are some of the basic things that I’ve seen people not having done while still complaining and saying that agile doesn’t work for them. Most places seem to just wrap waterfall style management with cute terminology.
I would not say agile is the end all of methodologies but if you have a team of developers that will actually do their jobs and solve problems without someone actively telling them from above what to do all the time I’m fairly sure you will get more out of them while also keeping them happier. But I’ve also seen enough developers that do need that.
One day a bit over a year into this job I went to the office normally. We had our daily stand up meeting, talked about what we were going to do the rest of the day and other normal things. There was one item out of the ordinary, we were told that there was going to be an all hands meeting a little later. It was a bit curious since we didn’t usually have those but we sat down and worked. My desk was close to the entrance and I saw this man that I didn’t recognise show up in a nice suit, he was apparently from the company that owned the company I worked for and was there for the meeting. When the meeting started he was introduced, he had made himself look more “casual” by removing the jacket and tie. I don’t remember much of what he said except that they had a tech department in Shanghai that would be taking over from this department. The most specific thing I remember was a phrase along the lines of “there will be some redundancies”. Everyone then had a personal meeting with HR and it was made clear that basically the whole tech department was let go effective immediately. I was walking home in a daze before lunch.
Luckily for me this is Sweden so I got paid in full for three months while looking for a new job and Fallout 3 had been released the week before.
Things I learned
- Finding an apartment in Stockholm is impossible and/or luck based.
- Your code is not you and it should not be personal if someone changes or deletes it.
- Code reviews are good if comments have a clear reasoning behind them.
- Agile can be fantastic if you actually do it.
- Rebranding waterfall project management as agile will make people hate both, just be honest about what you are doing.
- As a team you should agree on a style of how to do things. Including naming, formatting, and problem breakdowns since it will help everyone be comfortable with any part of the code.
- Fear the unexpected all-hands meeting
More than a decade in various parts of the gambling industry.