Learning proccess to become a top notch developer
February 11th, 2019 · 8 min read
Today, a developer needs to be aware. Aware of the rising technologies, aware of the security vulnerabilities, aware of the business opportunities. It can be overwhelming if you don't have a daily routine when it comes to finding the right information and, more generally, learning.
I've bee working for years now, I've read more than 2000 articles and I'm now ready to share how I've developed my "learning stack". I took the time to analyze my learning process because I think it can be very helpful for many young developer.
In this article, my definition of developer is
> The developer's role is to transform, link and connect information to create value (product/feature/time saving tasks...).
## Learning ? Why ?
When I'm learning my goal is to ensure I choose the best algorithm, techno, tool within the context I know to respond to business needs. The feeling when I understand something new is awesome, the "world" around me become clearer, I love learning new things. If you're looking for a job it's interesting to add some keywords on your resume, it may help you to get interviews.
Learning is a valuable skill, computer science is moving fast, it's important to be updated. A lot of developers share their work, you can use it, all this work is accessible and free, via social network, Open Source projects. All this information help you to see the big picture, don't reinvent the wheel, use your time to create value (self-fulfilment, business). It's also easier to give precise response to a problem with more context and knowledge.
After some research you can respond to:
* Do I need this techno ?
* Is there a better alternative ?
* How to become visible to recruiters ?
* Can another solution will help me ?
During a debugging session it's occurred to me to use an idea from an article I read two weeks ago. I read the article only by curiosity after some time it helps me a lot.
It's important to know what you know but the most important it's to know your unknown for becoming an expert. Nobody knows everything, don't be put too much expectation on you learning. A well-known developer Dan Abramov (Redux co-author, React developer) shared recently [an article](https://overreacted.io/things-i-dont-know-as-of-2018/) listing things he doesn't know. It's normal to switch between confidence and "imposter syndrome".
![Matrix of knowledge](/blog/matrix_of_knowledge.png)
## Step 1: What's your objectives ?
> Be pragmatic
You can't be an expert on everything.
It's easier to learn things you like, that's why you must select some subject, else you'll find yourself overwhelmed very fast.
Themes I choose :
* Golang a promising language interesting new concept for me + type safety.
* Linux I love the philosophy / mechanisms.
* Frontend framework mostly React.
* Software Architecture currently CQRS/Event Sourcing + microservices debate.
* Startup ecosystem / organisation / self-improvement.
My goals vary I like to have update on Kernel development but I will not spend too much time on this. Learning kernel mechanisms helps me to understand "how computers works" but doesn't help me much in my day to day job.
Don't be obsessed by new/shinny articles and technologies. It's good to have an opinion on them, but your time is precious so you need to be sure it will give you valuable informations before deep diving.
You can find tendency from the annual [StackOverflow Survey](https://insights.stackoverflow.com/survey/2018), it can help you to choose subjects.
## Step 2: Where to find good informations ?
> You must select trusted sources
Finding good sources of knowledge is a long term work.
My main source of information is Twitter where I follow people and enterprise account (I don't rely on aggregator).
My Criteria for finding a good source of information on twitter:
1. The account tweets about subject I'm interested in.
1. Quality over quantity, Don't spam (10 tweets a day max).
1. The account is the author of a video/source I liked.
1. The account is author of a framework/tool/product.
1. The account share interesting articles.
You can view my [following list](https://twitter.com/sviande/following)
For aggregated data, I prefer to go on platform like Reddit where community can share/upvote articles.
In this type of platforms communities pre-filter information and you can grab the best.
There's some subreddit from my list:
* [/r/linux](https://reddit.com/r/linux)
* [/r/golang](https://reddit.com/r/golang)
* [/r/archlinux](https://reddit.com/r/archlinux)
* [/r/php](https://reddit.com/r/php)
I use other tools but Twitter and Reddit are my primary sources. They provide me with enough information/links.
You can find relevant information on other platforms:
* HackerNews: same as Reddit
* Github: You can find some topics on it, using trends
* Medium/Youtube/Podcasts: Like Twitter you can follow entities and find it via hashtags.
* RSS (not dead): Some people consider them as deprecated but are really useful and you don't rely on one platform. Unlike on Twitter you can find days/weeks old article.
* Podcast from Itunes/Spotify
## Step 3: How do I manage all the inflow ?
> Filter, Pick, Trash
Now you can browse all your sources to find articles, when you find an interesting article you can do a rapid scan but don't read them. I recommend saving somewhere your findings and you will read them afterward.
Your time is precious it's preferably to create a queue, you may not have the time to read them all. I recommend separating discovery, from consuming/learning because you will need to choose which articles to read, it depends on your time, mood, goal.
For me, chasing new articles is an everyday routine.
I save all my discovery in my Wallabag instances.
Wallabag has nice functionalities:
* Save articles, reading view (remove ads/bloat).
* You can add tags.
* List Read/Unread articles.
* Web + Mobile sync for offline use.
You can use other services to save your finding:
* Pocket a proprietary alternative to Wallabag.
* Use social media features: likes, Github start...
* Todo app.
* Browser bookmarks.
## Step 4: Consume your queue. The fun part!
> Happy time!
Congratulation after multiple steps, here it's time to enjoy.
First you must schedule a time frame.
Personally I read articles every-day.
When I work remotely I read 10-15min after lunch, I choose short articles.
Twice a week a take the train to Paris and use the travel time 45min to 1H to read long articles.
When I'm not om my computer I use the Wallabag App on my Smartphone it's my primary tools for reading.
I like the experience, the reader view with the main content and without all the ads.
It depends on your constraints, you can choose different time frame:
* Morning routines.
* After lunch routines.
* Transports.
After checking my consuming habits, it's likely a FILO (First In Last Out). I prefer to read the latest finding, they are the most appealing to me.
Don't forget to take note, write comments. They will be useful in the next step.
## Step 5: Share your knowledge with others
> Spread the world
Congratulations you learn something new. It's time to give back. I identify 3 ways to give back to the community.
The first one is to thank the article's author: like/applause or DM only takes a second.
People take time to share with you, lets them know you appreciate it.
The second one is to take part/promote the content you like.
If you use some social networks to find (Reddit, Twitter), an upvote or a retweet will help authors to gain visibility and others like you to find the best resources.
After an interesting reading I often tweet about it via the share button in Wallabag.
Don't be shy to share your experience/knowledge with others.
"Last Friday Talk" session are perfect for sharing your finding, knowledge within your team.
I share each week what I've read. At this time it's a list of link but I plan to add score and some comments.
You read my first blog post 😀
## Step 5++: While alive goto step 3;
> And voilà!
Don't forget to repeat from step 3.
This is all my habits tips for learning and become a top notch developer.
Learning everyday it's something really important to me.
If you want to go further I recommend you:
* Imposter syndrome
* [One article from Julia Evans](https://jvns.ca/blog/senior-engineer/) on the role of a senior engineer
* [Another article from François Zaninotto](http://www.redotheweb.com/2014/01/20/why-I-tweet-three-links-a-day.html) why he tweet 3 times a day
* Dunning Kruger effect
![Dunning-Kruger effect](/blog/dunning-kruger-effect.png)
> Unskilled and unaware of it: how difficulties in recognizing one's own incompetence lead to inflated self-assessments.
> Kruger & Dunning (1999)
You are not born expert but you can become an expert.
Enjoy !
Thanks to Wallabag developer to create a useful application.