Introduction
It's been a while since I've posted here on my blog (over a year in fact). This has mainly been due to my priorities shifting over the last year as I have continued to pursue a variety of learning opportunities. Over this last year I have taken the time to learn more fundamental aspects of TCP/IP Networking and Operating Systems, such as learning more about the OSI model and gaining a grasp on the fundamentals of C Programming. This has proven invaluable in regards to furthering my understanding of exactly how Computer systems work, but I have to admit that it has possibly distracted me from other endeavors such as becoming a more adept Web Developer. This observation has led me to posit the question, what constitutes a worthwhile fork in the road, and what is a waste of time? When is it good, and when is it bad, to be distracted?
A Plethora Of Choices
One of the best and worst things about choosing to get involved in learning more about Technology is that there is an Ocean of subtopics under that gigantic subject. Are you interested in learning about CyberSecurity, Embedded Devices, AI/Machine Learning, Web Development, Systems Administration, Data Science, DevOps, etc. Even within these subtopics, there are further specialities. In Web Development alone, there is Frontend, Backend, and Fullstack Development. Furthermore within those fields there are further speciality specialities, Accessibility Specialist, ReactJS Specialist, TypeScript Guru, CSS King, etc.
Many are quick to point to the classic and supposedly tried and true advice that one should become what is known as a "T-Shaped Developer," which generally means you are a well rounded developer that knows a little about a wide variety of subjects related to your field, but have one speciality that you know a great deal about.
I actually have my criticisms of the concept of the T-Shaped Developer. But instead of diving into those here, I'll simply point you to Matt Eland's article The Myth Of The T-Shaped Developer, which essentially encapsulates my sentiments on the topic.
As Matt writes in his article, developers over the years actually develop a plethora of skills that they acrue over their years of experience. It is in my opinion that ultimately, most seasoned developers who have filled a multitude of roles over their careers eventually become something akin to a modern day Polymath.
While I am always happy to learn a new subject as it relates to technology, I must admit that I am often dismayed at what I perceive as being an endless barage of hype. This hype usually is centered around a specific software or suite of software that ultimately is just a marketing pitch, and doesn't actually add much to the Developer Experience nor their Productivity.
Given the endless barage of hype around new technologies that are flooding our social media feeds day in and day out, how do we know which of these technologies are worth investigating and which are worth leaving behind? In an endless sea of choices, how does one not drown?
Choosing Your Distractions
What is a distraction for me might be an important investigation to you, and vice versa. How we choose what distracts us, and whether it constitutes an investigation or distraction is up to each of us, but I might offer up some simple observations that I feel have benefitted me, and hopefully will benefit you as well.
1. Minimize The Noise
The web itself has become a place where you are bombarded by advertisements and marketing campaigns, both subtle and overt. Sometimes it's nice to be advertised to, especially if it's a service or product you're interested in, but when researching a new topic, the process of getting the answer you need often gets bogged down with articles that are actually advertisements, and never actually simply get you the answer you want.
There are many ways to achieve minimizing the barage of advertisement noise, but one of the first things you can do is Install an Adblocker, Use A Minimal Search Engine, and maybe even Turn Off JavaScript.
2. Know When You're Being Marketed To
This can be difficult to know, but even when a piece of software is free, it can also mean that a particular company is trying to gain market share of their product/service. This isn't inherently bad, and ultimately their tool(s)/service(s) might be worth it to you, but don't just blindly trust that just because everybody is using a particular piece of software, or isn't, that this is indicative of the quality of the service/product. Take the time to investigate what problem you're trying to solve, and whether or not you even need the tool that everybody says you need. Conversely, don't dismiss a service/product just because nobody's using it, there are some real hidden gems out there as well. You may find that these tools ultimately are distractions rather than investments, or vice versa.
3. Use AI Intelligently, If At All
I have avoided writing about AI on this blog for some time now, and that is because I don't like writing about things that have a lot of hype (or at least, don't like to think I do). Sadly, I feel the subject can no longer be avoided, as AI is so prevalent in today's discussions about tech.
I have a somewhat nuanced, but still very critical, take on using AI. I believe it has it's place in modern software development and other fields. I also believe that there has been a massive push by the major players in the Tech Industry to shoehorn AI into every aspect of our lives when it probably isn't needed, nor wanted. There is a lot of marketing being pushed into AI. I suspect there is more money being put into marketing AI than there is actual development, but that's besides the point.
I personally reach for AI LLMs as a last resort when researching something. The only time I reach for LLMs is when I have exhausted all other resources like minimal search engines (devoid of AI), documentation, stack overflow, blog articles, etc. These other resources often include knowledge that these AI LLMs omit, or simply are outright wrong about. You will learn more by interacting with a real person rather than an AI LLM, and I'd argue you will get more done in the long run by keeping their use minimal.
That said, AI LLMs are not without their uses, and I see no problem in reaching out for answers from an AI chatbot should all other avenues fail you.
4. Always Go One Level Down The Stack
I've seen so many developers who can't tell when a piece of code is coming from JavaScript, TypeScript, or React. This is the failing of whoever taught them, and also a failure of the Developer Ecosystem. Always learn the lower level abstraction related to your field first before moving onto abstractions built on top of them. In other words, at least in regards to this example, learn JavaScript before React and TypeScript, and take the time to understand which code relates to which ecosystem.
I feel like this is an example of distraction caused by hype. In a frenzied attempt to create job ready developers, many bootcamps skip over essential topics like developing applications and websites in plain, regular JavaScript. Thusly, there is a lot of confusion about what is happening on a slightly lower level beneath the application layer, and when one has to troubleshoot the problem, they don't know which part of their application is producing the error.
Don't let the hype over these technologies distract you from what's always going to be relevant. The web will always need people who know HTML, CSS, and JavaScript. While one could definitely argue that the web will also always need people who know React and TypeScript, these technologies are worthless without JavaScript, and a developer who isn't able to differentiate which pieces of code are related to which ecosystem is at a severe disadvantage compared to a developer who can.
5. Minimize Algorithmic Influences
Anyone who has studied Data Structures and Algorithms knows that these Algorithms are, ultimately, just expressions of human opinions in code. They use statistics and other data as input, put it through a series of conditional and control/flow statements based off of human logic, and produce some output. This is very useful for a variety of tasks and ultimately is the underlying "magic" that makes computers the powerful tools they are today.
That said, in my personal life, I have aimed to minimize my exposure to algorithmic influences, as they relate to online presence.
Specifically, I use a Privacy Based Browser where I log into nothing, use an agressive Ad Blocker, a VPN, and Turn Off JavaScript for the majority of my day to day research tasks. Should I need to give up some of my data to these companies in exchange for their products/services, I consciously utilize different tools for those tasks.
This is because I wish to have autonomy over what I choose to see and not see on the Internet, and I don't want to trust an algorithm to show me what some other human, who wrote that algorithm, thinks I want to see.
In this regard I am referring to advertisements on blogs, advertisements in search engines, and advertisements and recommendations in social media feeds. I won't go into the details here, but will go into more depth in a future blog post. Suffice it to say that LinkedIn and the Bing Search Engine are the only major Algorithmic Influences left within my daily life, and I have consciously minimized my exposure to their more distracting elements with various methods.
The specific tactics used by marketers on search engines and social media platforms are designed to distract you and keep you scrolling and clicking. My simple argument here is if you're going to be distracted, you should be the one to choose when and where and how you want to be distracted, and not let somebody else make that decision for you via an algorithm.
Conclusion
This blog post might strike you as different from my previous ones. I'll admit that I'm still finding my footing with this blog and after a year's time, I have reflected on which direction I wish to take it (and am still navigating these murky waters to be honest). I know my previous blog posts themselves have shown a certain high level of distraction, as the subjects have wavered from everything from keyboards, tiling window managers, and basic web development in HTML, CSS, and JavaScript.
Perhaps this will always be the case with this blog, and heck, it's my website, I'll do what I want with it! That said, I do hope that my insights and meanderings/musings prove useful, or at least entertaining, to those of you who happen upon my little corner here on the web. Future articles for this year may include more saucy rants like this one, or I might return to more long form educational content like my short series on basic web development. I guess we'll see where the winds of my wandering mind take me.