Or “What I learned at my first job”. In this post I will reflect on what I learned from the 9 months I spent working my first software developer role for a US startup. As with all my posts I follow the philosophy to write as if no one is reading, this will be in part a way for me to pull my thoughts together but also a way to document my progress in becoming a software developer.
Right up front, I did not enjoy my time at my first job. That being said I do not want to speak ill of anyone, I am grateful for the opportunity they gave me and for the lessons I learned. I will be attempting to focus on the positive aspects that came out of the experience. In order to protect the innocent I will not be using any names. Throughout this post I will be referring to the company as ’the company’. It is almost 3 months now since I stopped coding for the company, now is a good time to reflect.
I have grouped what I learned under four headings
- Code matters
- People are everything
- The money is nice but not nice enough to make me stick at it
- You need to believe in the vision
Code matters
It turns out for me this is a big one. The code you stare at all day is really important in how you feel about your day. I cannot quite put my finger on why this is so important so I’m going to write a little about it and see if we cant' work it out together.
Turns out most of your day as a professional software developer is not spent writing awesome new code for that really interesting thing you just thought of - who would of guessed right? In fact one spends most their time chasing bugs in code already written or attempting to add minor features by tweaking said code. So, the codebase that you are presented with really matters iff you are emotionally invested in the art of programming. The obvious question arises then: should you be invested in the art of programming? Perhaps it is just my level of experience, perhaps in 5 years time I’ll look back and say ‘geez Tobin you sure were a wombat, the code doesn’t matter just sling anything’ - but I doubt it. I found out that you need to enjoy looking at the code you work on - period. If you don’t your eyes start to bleed. I do not know exactly what makes some code ‘good’ to work on and other code not, I haven’t worked that out yet. Perhaps its a personal thing, perhaps I’m just being too precious.
Another insight that has come to me is that working on someones code is like taking a stroll through their brain. If for any reason that is somewhere you do not want to be then reading their code is not going to be fun. That’s the best I can do at the moment, it is however a good segue into my next point.
People are everything
Man is not an island, the people around you directly influence your being. This is true for family and it is certainly true for the people we work with. ‘But Tobin’, I hear you say, ‘you work from home, who cares about the people?’ I maintain that the people you work with are the number one factor contributing to how you feel about your job, how successful (by some measure of success) you are in that job, and more to the point, how you feel about things in general.
I’m not going to reflect further on the people at my last job. What I’m taking away is that you have to have some reason to want to work with the people you work with. For me this is either I like them or I respect them. I don’t know if you need both of these but I think you may need at least a little of each and a lot of one. Perhaps I am being overly ENTJ here but if I do not like someone or do not respect them enough to want to learn what they know then I’m outer here. It has occurred to me that this may be a serious character flaw.
The money is nice but not nice enough to make me stick at it
Again I may have uncovered a character flaw within myself. No matter if the money is nice if I am not having a good time I am not able to stick at it. Now this sounds extremely immature, I’ve got three kids to feed and life is not free. However I maintain that to work in a creative field (which programming at, or near to ones edge of understanding most certainly is) one needs to ’enjoy’ what they are doing. I’m not saying you should be jumping up and down yelling for joy each minute but I mean you cannot hate your work. I’ve done jobs where you can hate it, certain physically demanding semi-skilled jobs I had when young come to mind. Some things you can just put your head down and slog it out, programming (at least for me) is not one of those things. Perhaps its to do with being remote, its a lot harder to do something day in day out on your own if you are not motivated. Perhaps again I am just being overly precious but if for what ever reason I do not want to even look at the computer screen then I find it hard to produce good work. I do not know exactly what drives or motivates me but I know the feeling when I’m working on something that does. This topic could be a book in itself so I’m not going to touch it too much more here but I will write a few things just to remind myself that I don’t always know when things are going bad while they are going bad. Pay attention to other things going on in your life, if things are going well in work then things should be going well in other aspects of your life. And pay attention yourself, you know you are working on something meaningful when
- You roll out of bed and the first thing you want to do is hit the keyboard.
- You leave the table still chewing after meal breaks to get back to the keyboard.
- You go out to social events and find yourself itching to be back at the keyboard.
- You don’t notice time go by and don’t feel tired even after 10 hours at the keyboard.
Maybe this is a false dream and a real job is not like this. But programming was like this and it still is when you are working on the right thing. Can this, or should this, be your day job? I don’t know, I’ll write about it in another 5 years perhaps.
One thing is for sure, money may buy me nice things but its not enough to motivate me to push the limits as a creative worker.
You need to believe in the vision
This one may sound a bit airy-fairy but I believe it is important. I have a niggling feeling that this one is actually just the same as ‘people are everything’ but in a different guise. If it is then it just goes to show that people are everything, if you do not believe in the vision of the company and those you directly work for it seems to be hard to solve the problems you need to on a daily basis.
So the other big technical thing I learned over the last year is that a lot of the time of a professional software developer is spent doing what I would call ‘ops’. To me anything that is not writing, compiling, and running code is ops. But its a fine line, working out why your code does not run in a different environment is still programming if the problem is with your code but it starts to feel a lot like ops when you spend more time fixing layers of tooling than you do fixing actual bugs. This was a hard transition for me. The two years before this job I had spent doing a self directed apprenticeship (that’s fancy talk for ’locked in a room for two years hacking on things’). See my previous post about it if you are interested. I have come to realise this is part of the job.
The final observation I would like to make is that software development is not the same as programming. Being a paid software developer is not the same as hacking on things at home, no siree it is very different. Is it worse? I don’t think it even compares but it sure beats stacking shelves at K-Mart.