Tradeoffs

I had read that during a job interview you might be asked to explain why you wrote a piece of code a certain way, that you should be able to discuss the tradeoffs you made and why you made them. At face value this seems like an easy task, so I tucked this bit of information in the back of my mind and went on teaching myself how to code.

As time went on I would often look at different pieces of code I had wrote and ponder why I wrote it that way and what the tradeoffs were. I could not really answer it in a meaningful way. The only answer I could come up with was “because that is how I seen it done in this tutorial, blog post or book”. I did not feel like this would be compelling conversation during a job interview. So I continued my journey using this tradeoff question as a litmus test to see how I was progressing.

At nearly a year into my self-lead learning I had a bunch of context and I was becoming very knowledgeable about a lot of things, I still did not feel very confident coding up solutions to all but the simplest problems on my own. I would scour the internet, looking for some sample of code that was used to solve a similar problem. Although I was able to make small toy apps, I knew that I was simply modify code that I had read elsewhere. The question about tradeoffs would come up again and I was still just as lost with how to answer it.

I was missing something. I was entering my final year in my computer science degree and I had read about every book I could find. I was starting to repeat tutorials I had done because it seemed that when I tried to code off on my own I was completely lost. The question about tradeoffs really started to eat at me. In about a year’s time I would be asked to explain my stance on why I coded something the way I did and I still felt very wobbly without the support of a tutorial, let alone being able to give any insight into tradeoffs along the way.

I decided that I needed to rethink being my own teacher. The computer science classes were teaching me theory but, I did not feel like they were driving me to be job ready. My own self-study had taught me a lot, but I still could not speak intelligently about tradeoffs. I had resigned myself to attending an in-house coding “boot camp” after I graduated.

While researching for this next phase in my learning journey, I came across Launch School. I had read in their documentation that you would not only learn about different frameworks you would learn to build your own. This was very compelling for me. I had to learn more about it. After a bit more research I decided to start Launch School, completing it in parallel with my last year of college. It was a month to month commitment and I figured that if I was not getting anything out of it I could just cancel.

I really expected to breeze through the first few courses on programming foundations. After all I had been studying on my own for almost a year. What could possibly be left that I had not read in a book, blog post or tutorial? I could not have been more wrong. I realized that fundamentals were more than syntax. The program really takes you on a deep dive into programming in general. I started to think about my programming in a new depth. I understood why some method calls were destructive and why others were not. I really understood variable scope to a point where I was fluent in both reading it in code and writing it myself. My mind was really being opened up to understanding thing in a new way.

So a couple of months into the program I asked myself the dreaded question about Tradeoffs. For the first time I was able to answer with somewhat intelligent responses. I was finally starting to write code with intent, not just the way I had seen it written elsewhere.