Zeroes and Ones

Learning is not a linear endeavor

Hey, I haven't written anything here in a long while, as well as my Github being completely inactive this year. Does it mean I'm not coding? No, I'm pushing everyday, just in Gitlab or Bitbucket. Have I stopped learning? Not quite, I have to learn everyday, I just haven't made the time to write it down in a blogpost format (I mainly keep notes).

What I wanted to make this post about, is how my learning focus has shifted since I started programming. I recall at the beginning, all of my energy was on trying to make sense of what programming was, and making something work. That was it. What the heck is a function? How does this property work? And all that.

Later it became more about going deep into what I was using, for instance, learning how things worked under the hood on some tools that I was using, or going deeper into Javascript to understand how it is being run, what are the oddities and so on.

At the same time, my focus was very granular in terms that I worked on a piece inside a huge cog filled machine, where I just needed to tweak one cog at the time without worrying too much about anything else. That required a lot of specific skill, to understand the tools I’m using to be able to craft a solution.

But later my tasks began to shift, I no longer had to build X components in react for the Design System, but I had to do other things. Not only building the component but now checking how we are deploying it and where, creating shareable configs, tweaking pipelines, learning how to communicate systems with one another. Watching the whole process of an app, not just a small part, understanding what Webpack or whatever bundler is doing, how this is actually being shipped.

This started to give me a bigger picture of an application, watching it as a whole, as a system. But this zooming out went beyond one application, but to understand how a product may have multiple deployed applications and services, and how all of them interact to certain extent. It is overwhelming, and abstract, but the big picture is perhaps the most important aspect of this labor as I came to understand.

After that, I had to shift my focus into other things as well. Now that we understand (a little bit at least) how things work more broadly, we need to start to talk about optimizations and costs. How does our caching work? How much can we afford to catch? Understanding that making a better system is not a linear thing, but multiple ropes that are being pulled strongly with different agendas. Maybe we need to optimize for user experience, performance, or maybe to save money and avoid extra costs. Sometimes one solution helps both, but sometimes they tension. What about developers' experience? Maybe we can have a super optimized application which is a nightmare to work on.

Sometimes I feel that I was a better developer 3 years ago. When I was constantly producing code, making side apps, deploying things. And maybe so, but I was a better developer with a magnifying glass, crafting a thing of beauty on a boat in the midst of a storm.

Today I might not have all of the functions of JS as fresh as two years ago, or maybe my code will not be as clean and elegant, but I do have a much better understanding of what this thing is all about. Still I think it is partial, lacking in many places and ways, but this is an ongoing process which itself is not linear. Once I used the telescope enough, to understand where the boat is heading, and how the landscape looks, I might need to go back to the magnifying glass and take the rust out of the precision tools. And so, move in a back and forward motion getting deeper in the spiral of knowledge.

If you don’t see too many posts or green colored squares. Remember that appearances can be deceiving, and I’m still here, and so will be in the future.

The learning continues!

Developed by Cristobal Heiss