Random thoughts about content curation…
An extremely relevant skill nowadays is the ability to curate content and being able to distinguish high-quality content from low-quality content. Unfortunately, there's no easy solution for this problem other than investing many many hours exploring the web, finding your favorite content curators, and finding good sources. You'll need to accept some time lost while making mistakes on irrelevant content and bad sources, but that's ok, that's the price you'll need to pay. It's impossible to get it always right. The most important aspect here is to keep exploring until you find a few creators that you like.
In the tech industry especially you need to balance new knowledge with fundamentals and principles because:
- As said by Nnamdi Iregbulem in his article Why We Will Never Have Enough Software Developers "Programming-related jobs have high rates of skill turnover. Over time, the types of skills required by companies hiring software developers change more rapidly than any other profession"
- As Peter Hagen from Lindy Learn says "Despite having more information than ever, we're chasing news, celebrities, or the latest trends for answers. Yet nearly all the best content was created years ago. Why aren't we exploring or learning from the digital libraries we spend so much time curating?"
So, how can we make the most out of this world full of information where it's easier than ever to learn pretty much anything faster than ever before?
Here are some guidelines I've followed to build my own library:
Try out at least one new tech per year
This forces you to get out of your comfort zone, learn something new and make some connections with the techs you're currently using. Maybe you don't find it useful or interesting, but maybe you do.
While learning about a new technology you'll naturally explore new sources that you might end up adding to your library.
That's how I learned about Ruby on Rails, which was the technology that feed me for around 3 years. After graduating from the University I only knew Java and a little bit of C++, but I decided to take an online course from edx.org about web development which happened to be though using Ruby on Rails. 6 months later I found a job as a Ruby on Rails developer and 1 year later I started to work as a freelancer for clients based in the USA while I was living in Colombia. This allowed me to have a great salary and save a lot of money.
Treat your library as an investment portfolio
You need to have a balance between low risk, mid risk, and high-risk assets. In the case of knowledge, the risk is how relevant that knowledge will continue to be in the future, or how much money, happiness, enjoyment, or advantage you'll take from it in the future. In other words the return on investment or ROI.
For example, learning Bash is very low-risk and has a decent ROI, as it's one of the most popular languages out there. It's almost omnipresent as it comes with every POSIX distribution and it's the standard de-facto for scripting.
Learning about Solidity (the programming language used to code smart contracts in the Etherium blockchain) is high-risk, but might come with a high ROI, as it's increasing its popularity thanks to the adoption of crypto, smart contracts, and web 3.0, but, it's a relatively new technology that no one knows how long will stay relevant.
To put it in perspective, learning about BlackBerry development made lots of sense back in 2008, and learning about iOS and Android was high-risk. Fast forward 10 years and Blackberry is almost inexistent, and the ones who decided to learn about iOS and Android at the time are now the few ones who can claim 10+ years of experience as iOS or Android developers or are the ones who created the first apps and are now millionaires.
Aim to be a T-shaped professional
"The vertical bar on the letter T represents the depth of related skills and expertise in a single field, whereas the horizontal bar is the ability to collaborate across disciplines with experts in other areas and to apply knowledge in areas of expertise other than one's own." https://en.wikipedia.org/wiki/T-shaped_skills
Find a set of technologies in which you'll go "all-in" and aim to master them. That'll help you build your brand, and grow as an engineer because the hardest problems require deep knowledge. But remember to pick just a few technologies to focus on. To become proficient you'll need thousands of hours of deliberate practice. If you don't focus, you won't have enough time to go deep.
Add lots of resources to your library related to those technologies you're betting on. In your knowledge portfolio, those are the assets from which you are expecting the highest ROI.
At the same time, understanding the principles is key. This will allow you to collaborate with experts from different areas. For example, if you're a backend developer working on a web product, it's important that you understand the basics of frontend development so that communication with the frontend team is fluid. It can also allow you to influence technical decisions or help you make better technical designs because you'll know the implications of them outside of your scope.
So, add some resources to your library about the basics of technologies adjacent to your expertise.
To end this post I'd like to share some of the resources in my library:
My favorite place to find high-quality content about fundamentals in computer science are MOOC platforms like Coursera, EdX, and Khanacademy. In there you'll find courses from top universities for free. You can optionally pay if you want a certificate. I've also heard good stuff about brilliant.org, but I haven't tried it myself.
From Coursera, I took the Algorithms course from Princeton. It helped me with algorithms and data structures which is a key foundation to understand many other advanced topics in computer science. It also helped me succeed at technical interviews with companies like Facebook, Uber, and Databricks.
A nice and relatively recent trend is the "awesome" lists repositories in Github. People have started to curate lists of "awesome" content related to different technologies. They include new, trendy, and classics. Some examples:
- The meta awesome list: The list of awesome lists
- Awesome Python
- Awesome computer science papers
- Awesome Go
Blogs and social media
Twitter has a vibrant community of tech geeks and professionals who share their insights. Blogs are another nice way to find tutorials or opinions about new technologies. On Youtube, you can also find some nice tutorials.
But, as these types of sources have a low entry barrier, the quality is all over the place, and as most of the authors don't invest a lot of time researching or digging into data before publishing, their posts will mostly be based on experience and intuition, so I think blogs and social media are for inspiration and should not be read as research papers or deeply thought studies. This article is an example. It's completely based on my experience, so take what it says with a pinch of salt.
Nevertheless, here are some of the people I like to read:
- Joel on Software - Software development, management, business, and the Internet
- Peter Hagen - Learning
- Gergely Orosz - Software engineering and management
- Mejibyte - Algorithms, data structures, and tech interviews
- Chris Laffra - Communication for engineers
Surveys and reports
When it's about trends, I like to read surveys and "state of" reports. Here are some that I consider trustworthy:
- The stack overflow yearly survey
- The state of JS report
- The TIOBE programming language index
- The Thoughtworks Technology Radar
I hope you find some of the guidelines and resources helpful.
Spend time exploring, build your own library, be your own curator.
Thanks to Cesar Diaz for inspiring, reading, and commenting on drafts of this article.