The way we act is (unsurprisingly) shaped by our prior (practical) experience plus the (theoretical) knowledge we acquired. In the case of such dynamic industries as software engineering, the latter shouldn't be underestimated. Keeping yourself up-to-date with successful new solutions, good practices, and proven methods is critical to remain relevant. Not because you should pick up every novelty out there - it just doesn't make sense to reinvent all the wheels yourself.
Obviously, when it comes to the distribution of information, the Internet plays a major role — especially these days, when the raging pandemic has challenged IRL F2F communication. However, the way we consume information online has changed significantly over the years, and some assumptions that were once valid are not anymore.
It's essential to understand the implications of these changes and adjust your actions to avoid adverse effects.
What has changed then?
Evolution of Internet consumption
For the sake of brevity, let me simplify our considerations by splitting the timeline of the Internet into three distinctive eras:
- the era of standalone websites
- the era of search
- the era of personalization
In the era of standalone websites, the information wasn't spreading fast. You had to know where to look for (explicit) information and pro-actively reach there. That applied not only to WWW but also other online services, like user groups, mailing lists, and other online forums. You had access to full content (in the list, on the website), and it was up to you to do the filtering and prioritization — oh, good ol' times.
The era of search was a clear improvement (well, Google has succeeded for a reason, right?) over that. It was no longer required to know the address of the source of information - this became the responsibility of the search engine. And as the position in the result list was dependent on popularity (e.g., number of pages linking to), it has boosted the potential virality (the speed of how information can spread and get popular over the Internet).
Let's stop here for a second. These two eras had some things in common:
- the information available for any two (separate) users was the same
- interaction X (navigate to a site, search for a term) performed by two (different) users was returning the same results
- to summarize both bullet points above: those two users were perceiving shared, SINGLE reality and they were the ones defining the perspective (their viewpoint)
Finally, we've reached the era of personalization. Search (information "pull") is not enough anymore. Modern applications "push" the personalized stream of information towards the user. Yes, you're allowed to give a hint of what you're looking for ("restaurant nearby", "best web framework", "job role in most demand"), but the personalization favors:
- items closely related to your past behavior (e.g. history of browsing)
- intentions of ad emitters (and other paying parties)
- material with a "high conversion potential" (the one you'll probably click)
The consequences are not hard to grasp. Instead of one single reality (for everyone online), we all live in our own, highly personalized, disjoint bubbles — the bubbles we're not in direct control of.
So what?
Well, frankly - this is nothing new. The whole Facebook-Cambridge Analytica scandal was all precisely about that (and it was 3 years ago already). Deliberately using personalization to affect and manipulate political standpoints to bring more votes was clearly outrageous, but what does it have in common with gaining (personalized) tech knowledge online?
Surprisingly, a lot (even if there's no single bad actor with malicious intentions).
The role of "information bubbles" keeps increasing. The recommendation algorithms don't have an auxiliary role anymore - these days, it's getting harder and harder to "walk them around" somehow. Once you get into a bubble built on the top of certain keywords, it's ... hard to get out.
Let me illustrate this with an example:
Imagine that you've put words like "Scrum", "SAFe", "PSM", "retrospective" in your professional profile, job description, and personal interests. In a day or two, all the "walls", "news feeds", "recommendations", and "notifications" you get will be all filled with content related to these concepts (which are closely correlated and belong to a well-defined, self-contained topic: "Scrum").
Your initial impression is probably enthusiastic - so much new, relevant stuff: precisely what you've needed! And it was so effortless; you didn't even have to manually search for it.
However, this situation is not all roses. The negative effects will start appearing and accumulating in time:
- if your focus is on "Scrum", you may not even realize (because this information will not reach you) that there are brand new solutions in this space (e.g., "Scrum 2.0", "Scrum Pro" or "Scrumly") - a local optimum syndrome
- as all the influx of data will be about "Scrum", your perception of it may get totally twisted - you may believe everyone's (out there) using it, everyone's talking about it, etc. (while in fact it's in actual decline) - a hub of the universe syndrome
- as information consumers, we naturally lean towards and stick to information sources we agree with - as recommendation algorithms boost this tendency, we get deprived of different perspectives - a uniformity of opinion syndrome
Healthy dose of skepticism
You may be skeptical. Engineers and other tech folks are smart people with a lot of professional curiosity. The risk of getting stuck in a narrow perspective while not realizing it doesn't seem very likely, does it?
Well, let me share my story then.
In the last few years, I've made few career moves - I've changed companies approximately every 1-1.5 years. It's nothing unusual these days, but in my case, the work environments differed a lot (in terms of organization type and technological focus), e.g.:
- enterprise consulting -> product company -> startup -> hyper-scaler
- .NET -> Ruby+Elixir -> Python+C++ -> "everything cloud"
Each change had some impact on my "digital footprint" (activities in the Internet space). I've:
- followed some new people
- started observing activities of new companies
- began reading some new media (blogs, newsletters, etc.)
I don't mean a full reset. I didn't "wipe" all my "previous (digital) lives" - quite the contrary. And yet, the algorithms caught up quickly — the information I was getting bombarded with swiftly adopted to my new interest. The reality I was living, has shifted, driven by aggressive tech marketing. E.g., DDD (tech-agnostic concept, praised by many .NET developers) stopped being a thing for me nearly overnight because it's far less popular among Rubyists.
It's not just my perception based on observing the streams on social media. As I've entered the new community and started speaking to its people, these observations (about the differences between "bubbles") were confirmed by what I've heard from them: their opinions, preferences, priorities, preferred approaches. Yeah, I realize that certain paradigms (e.g., Elixir being a functional, dynamic, compiled language) favor some approaches over other ones (design is strongly associated with OO approach). Still, in many cases, these folks didn't even know there ARE alternatives (because this information didn't get into their bubble).
Sadly, personalization technologies get better and better despite all the efforts to preserve our privacy. That means that the digital bubbles we live in get more and more hermetic. And as we quickly get used to living in them, we tend to forget about their existence - mistaking the bubble's interior with the whole world.
And that's what really scares me.
Outsmarting the bubble
Without further ado, some tips on how to avoid getting stuck in a bubble:
- use well-acclaimed privacy protection techniques and tools like privacy-friendly browsers, tracker/fingerprint-purging addons
- turn all the explicit personalization options off ("recommendations" and other shit like that)
- don't allow tracking activities across applications
- don't use public identity providers that trade your privacy for their service
- don't use social media that tailor "feeds" algorithmically (like LinkedIn or Facebook), instead use the ones that retrieve all the activity from the followed accounts only - like Twitter
- even if you're a specialist of a narrow sort, keep the connection with the general software craftsmanship community - to know (at least on a high level) what's going on, what are the trends, and what to (roughly) expect
- network with real people, outside of your work environment; listen to what they say, what they find important/valuable
- regularly gain new perspectives - once in a while attend an event out of your comfort zone, acquire 100-level (introductory) knowledge on a topic that appeals to you