I got a job and after a few months of work my code didn’t improve, nor did my problem solving skills… This wasn’t what I expected.
What I thought will happen at work
Having magical high quality code and code reviews that would make perfect code. It was shiny imagination I had and I was so blinded by that. I started working a few months ago and the first thing I knew was, code reviews are not magic. They will make some pieces of my code be better, if I used unnecesery method or left out a comment. Maybe if there is potential performance issue, however I expected during code reviews to find bugs, as another wall of defense. I was wrong.
The one person to prevent bugs is me
My code will have as little bugs as much as I tested it and how well I broke it. Now, I have to do this fast because deadlines are short and stuff needs to be done quickly. This took me back to time when I was reading c++ book from bjarne, there was a chapter to make calculator and to make it use regular grammar. I made calculator along with him but he requested me to break it and see what won’t work. He mentioned a few tactics to break the code, among which was to put in random digits. Then he proceeded to explain all the flaws calculator had that I did not even think of. After this chapter I have quit learning from that book because I started doing web development and just left in thoughts how I will learn to break the code and prevent bugs in the future. Fast forward a year later, I still haven’t improved since that point.
Tests won’t write themself
Tests require me to write down every thought about my code that might break it, afterwards to write in the tests. As I’m writing functions and do those prints to see if value is what I expect it to be, test should probably contain that condition aswell. This brings me to thinking that test driven development is a good thing and that me as a developer need to think about tests before functionality. Or at least, what should my feature/bugfix do and what should be limited. Since my thoughts go fast during this process, I am trying to build a habit to write thoughts down and create tests for each worthy thought.
Code will improve only if I improve
I thought job will teach me to become better developer, and in a sense it did and will. I learned to work with some complex systems, work with team and people, collaborate and communicate, align with members and remote people who have informations I don’t. One thing job did not give me is better code writing and problem solving skills. Job didn’t teach me how to write cleaner code. The core of improvement in the end is me.
Algorithms and data structures are important
Because problem solving skills are something that I own and only I myself can improve, I start to see why companies like Google require candidates to know these. Because they can teach candidates to work with codebase, systems, collaborate, but they can not teach them to code. Google should not teach the members to code, because it’s one thing a developer should bring. However there are invaluable lessons that Google proves, at least I believe so myself.