Focus (or Lack Thereof)

post-cover

I find myself giving in to distractions from time to time when it comes to technology choices and learning. It’s some kind of FOMO - if you will. At this point in my life, I’ve suffered too much of it, and it’s mostly not a pleasant experience. So, I’ll try to organize my shuffling thoughts in this article to make a relatively coherent picture of why this happens to me and also why maybe it’s not all bad.

I consider this to be something of a follow-up to an article named Jack of All Trades, which was more about my current skill set and my ideal (technical) goals. This one is more about the reasons behind my having such a skill set.

Curiosity

I don’t want to say that I have too much curiosity in me, but I will say that maybe I directed it in (possibly) too many places. I have been a statistical programmer for years, writing R code to wrangle, analyze, and report data in clinical research. However, I always had something else on the side that varied from time to time. Sometimes, it’s a new programming language like Python or JavaScript, and other times it has been a different kind of experiment with software like changing my OS from Windows to Linux or using Vim or Emacs instead of RStudio and VSCode.

That kind of hopping around tends to be exciting in the first stages of playing with a new piece of software. My curiosity is being sated that way after all. However, it tends to cause some fatigue - and possibly burnout - after some time, especially when I start learning too many new things in a short time or even simultaneously. It gets even more frustrating when I look back at the past couple of months and see no tangible achievement… Nothing except just playing around with different technologies and going back to square one.

Let me be clear that I don’t regret that kind of experimentation, though. I am almost certain that I am a better programmer because of it. However, I keep thinking that I would’ve been better off directing my curiosity away from a small number of things to learn and put it into perfecting what I primarily do for a living. What is a bit problematic is that it can take me years of on-and-off interactions with a certain piece of software before deciding that I will (or won’t) stick with it forever. But the good thing is that when I make a decision like that, I strongly believe in it because now I know I chose it and not just accepted whatever landed first in front of me.

I have successfully made such decisions in the past. R will remain my favorite statistics and data science language, and Neovim is now ultimately my favorite editor. As for web development, I stopped focusing on JavaScript for now (more on that in a minute), and I am currently exploring the back-end: first Clojure and now Go. Hopefully, the current programming base I am standing on now will help me hop around and make that decision faster because I don’t want to take a couple more years being indecisive (I have high hopes for Go, though).

(JavaScript) Noise

The software development space generally progresses very fast, but I believe the fastest progression currently happens in the JavaScript ecosystem. I don’t know if this is true, but my perspective is now the JS community has the strongest obsession with solving problems by developing completely new tools. Since I’ve been more focused on the front-end for the past year or two, I am pretty sure JavaScript’s noise has been a real factor in the frustration I’m currently having.

I try my best not to invest too much time into whatever the new hot thing is, but as long as I am exposed to JS communities and online content, these things will find a way into my life one way or another. Even an individual framework will have its fair share of noise and fast updates that keep pushing you to keep up with this fast train.

I did talk about JS noise briefly in the Developer Philosophies article, although I wrote that one the context of learning Clojure at the time. But one thing I didn’t mention is that the degree of impact of that noise varies from one person to another. Some people don’t care at all and are just in it to get a job doing React or something. I, for better or worse, care about languages for languages’ sake. Some people actually are excited about the fast development of the ecosystem. I (over-) think about the way I get to express myself in code, and I pay a lot of attention to a language’s common philosophies and practices (and I contemplated that topic in yet another article called Pragmatism vs Idealism).

I kinda got frustrated by the fact that I couldn’t get to consistently adopt a single one of the hundred JS philosophies. I liked Svelte very much but I couldn’t use it in my work projects because it would be hard to try to recruit someone to specialize in Svelte. Then I had to use React, tried to buy into it and enjoy it, but couldn’t. Then, a couple of months later, Svelte announces new syntax to do things. It’s like the rug will always be pulled from under me. Not the greatest experience ever.

So, that’s why right now I’m leaning towards settling for the current JS skills I have and checking out the back-end as it seems to be a much more stable, much quieter place to live in. I don’t think I’ll ever stop interacting with JavaScript. If I keep working solo, I will sure have to develop front-ends. I’ll have to wait and see about that.

Career

These days I am kind of obsessing over the idea of bootstrapping any sort of business using my software development skills, no matter how small or what business model. After all, I am building useful skills, and especially now after starting to learn back-end development, I will have gained a relatively complete full-stack experience. So, why not put these skills to good use and generate some income? (Side note: I know that the “full” stack could be much more complicated than just a front-end, a back-end, and a database, but still what I know should be enough for a first-pass production deployment.)

The thing is, starting a business requires a lot more than development skills: these are just the means to execute the product. I could argue starting a business is way harder than searching for a job. So as a result, I have more topics than ever to study. I need to learn more about the business side of things: how to build successful products, possible business models and different venues to execute them. Not to mention that I actually need to get better on the technical side because some products are too complicated for a beginner-to-intermediate developer.

But I believe there is one possible advantage to becoming more business-oriented, and that is it might get me to stop - or at least reduce - any unnecessary tech-hopping. I think that people who want to get a job or build a product can easily have more focus because there are some factors that can direct and inform the decision of what to learn. So, if I want to be successful at building a certain type of software products, I will have to choose the tech stack that will help me achieve this easily, quickly, and safely. There is still a lot of subjectivity to these things, but surely not as much as coding for fun

Next Steps

So, after I rambled on for a while, I can say that I am trying (as much as I can) to focus on a couple of things at this stage of my learning journey: Golang, back-end development, and building software products for potential profit. Will that change in the future? Knowing my nature, I’d say yes but not in the near future, I hope. I am trying to be more disciplined in the way I do things, but I don’t want to lose passion either.


Cover image generated with Leonardo AI

Tags: