Let me guess… You finished your studies and then joined a big consultancy corporation or a software factory where your individual contribution is difficult to measure. Do you feel you are loosing that motivation that once pushed you to dedicate your energy to elaborate great software? Then this post is simply just for you.
I remember my undergraduate years working during summer in a carpenter’s workshop. From making photo frames and mounting furniture to installing doors, I learnt so many cool things that I felt in love with carpentry. Obviously, not enough to prefer it to software development, but still quite a lot to feel a little bit nostalgic when writing these lines…
Even though the stuff I was doing at that point had nothing to do with software, the lessons I learnt would impact my still ongoing career as a software engineer.
After working several years for very different employers in the software sector, I remember that somebody asked me once about my favourite job position so far. Coming from very deep inside I replied that such a place was the small carpenter’s workshop I used to work during summer. The reaction of this person was to affirm that I don’t really like software and programming. Far from reality I really do. I enjoy learning new technologies and consolidating my knowledge on good software engineering practices.
The reason why I chose the carpenter’s workshop as the answer has nothing to do with whether I like programming or not. It has to do with the way how I learnt to work there, which I definitely believe that could be applied to software development. Let me tell you why in the following lines.
The reason why I started working at the carpenter’s workshop is quite interesting, since it happened without any previous consideration from my side. I got to know the carpenter in person because I was bringing him the local newspaper every weekend. At that time I was thinking about buying a desk for my computer and Hi-Fi system. As I couldn’t find anything that really suited my needs, I started designing my own desk.
One day when I had to deliver the newspaper, I asked the carpenter to give me a quote for building the desk that I designed. His answer was: “Just come here and do it on your own”. I can’t describe in words the amazing feeling of motivation I got that day. Basically I could make the desk that came out of my mind with my hands, while at the same time learning how to do it and getting paid for it. Awesome!
Now, what does this have to do with software development? More than you can imagine. Along the years I learnt that for producing great software you really need to be motivated and engaged. This only happens when you are working in a project that you love (note that other factors may also influence your motivation, but as a baseline you have to love your project), otherwise be prepare for mediocrity.
Work towards a project that you love.
If you are working for someone else, chances are high that you don’t really love the project as if it was your own, simply because you just were assigned a certain amount of tasks and you got that project as you could have got a different one. If this is your case, find your own project. Spend time doing something you really love, because if you don’t, at some point you will start hating not only your job, but also making software itself.
Continuous progress is the fuel to success.
Seeing how my desk was coming to reality was really pushing me to go on. Many days working at the carpenter’s workshop, we got unexpected tasks that had nothing to do with my desk. However, there wasn’t a single day when we didn’t discuss or do something that contributed to its progress. Many software developers working in big projects are stuck because they can’t see the progress. It doesn’t matter how much effort they spend, they cannot avoid feeling like a rat on the wheel.
Learning new skills or new technologies must happen additionally to the progress of your project.
It will give you the required push for those moments when you feel like giving up. This is actually one of the things that agile methodologies try to fight. While building my table, I didn’t stop learning a single thing. Everything was new for me, even the most simple stuff like knowing which screw measure was the most appropriate.
It could be the case that your project is advancing considerably, but you are not really learning new things, which at some point will give you a feeling of doing repetitive tasks and finally drop down your motivation.
My supervisor (the carpenter) trusted me
Even though he knew I had no idea. He knew how to teach and most important he was patient enough to let me make mistakes so that I could learn from them. Do you know now why code reviews and empathy are so important for a team to work?
I hope this little true story give you some insights and help you finding a better perspective for finding motivation in your career as a software developer. As usual, get in touch if would like the share your thoughts with us.