Being a jack-of-all-trades does not pay in terms of satisfaction nor deep knowledge, here you can find my experience as a front-end developer that chosen to focus on one thing for at least one month.
About the cover image: Me teaching at the Italian ReactJSDay conference. Thanks to Jaga Santagostino for the photo.
As a front-end engineer, I am used to reading a lot of articles, study something new almost every day, and suffer from FOMO. It is a good part of my job but as a result, a lot of time I am driven to know just the surface of a lot to topics, deepening none of them.
Back in January 2019, I needed to introduce a solid testing strategy for a back-office I was working on, and the idea of seriously deepening the testing world was in my mind for a long time… That’s why I made a clear choice: studying just one thing for a month.
I spent a whole month just studying Cypress and the UI Testing world, without caring about all the big front-end news. I did not care about the React releases, nor the React Hooks announcements, nor the hundreds of posts I usually did not want to miss. Only Cypress and UI Testing, for a month.
Please remember: —not only but especially—in the front-end world you do not have to choose what to study but what not to study. Concentrate on one topic at a time, getting back in what you have missed is a matter of minutes/hours and does not make you a better developer! And even if you do not miss anything from your Twitter feed, you are keeping you updated with an extremely limited portion of what happens every day in the development world, so accept the idea that FOMO is unavoidable 😉
About Cypress: a strong passion for learning, for granting a high and always higher quality of the products, for automating manual checks and browser actions, for entering the testing world, made my journey amazing.
I was eager to try a new learning path too, composed by:
- Answering on Stack Overflow
- Intensifying public speaking
- Starting teaching
I am not good at creating side-projects just for learning because I care too much about the quality of the end result since the beginning. Hence I lose myself thinking and designing the details of the project instead of focusing on the topic that drove me to creating the project itself.
So I asked myself: what allows me to learn if I create a side-project? Errors and issues, obviously. When something does not work you realize that knowing the documentation of the frameworks and the tools you use is not enough. So you start googling, mixing information from Stack Overflow questions, GitHub issues, Medium posts, etc. In the end: I need use-cases and the related issues!
Guess what? There is a giant site where people give you their issues for free, both from production projects and side ones! Its name is Stack Overflow!
Just some notes about Stack Overflow: ~40% of the questions could be answered just by knowing the documentation, ~20% of them require the same “please, provide more details and an isolated example” comment again and again (and the solution come to the author just by isolating the error), ~20% are extremely particular cases, and the remaining ~30% are the ones that allow you to learn.
The Stack Overflow approach embraces a more general trend: Learn in public (Hi, Shawn 👋). The essence is
- other people do not know the stuff that you have just learned, exposing it (on Twitter, on Medium, speaking publicly, etc.) help them
- exposing stuff makes you realize that you do not know a lot of important details, you will study them before exposing yourself to the public
- if what you are exposing is wrong… The readers help you fix it! As a result, you are going to fill your knowledge gaps!
I was used to public speaking way back when but since 2012 I had not spoken anymore. Before jumping on the Cypress journey I re-started to talk at meetups but the Cypress period gave me a boost. The product is attractive for a lot of developers and the experience I made on the field has proven to be really valuable for the attendees of my talks.
Public speaking is the natural evolution of helping people on Stack Overflow and boosts your network. I met a lot of people in the last year and knew a lot of good companies. Networking is probably the most interesting part of the game. Speaking at meetups is easier and allows you to connect directly with a lot of people, speaking at conferences is great but harder because they receive a lot of proposals.
Anyway, public speaking is a good gym, explaining stuff to other people forces you to care about a lot of details that attendees are going to ask you. Remember that you do not really know something if you are not able to explain it to others.
This had been my final goal since the beginning, it is the most time-consuming activity but one of the most rewarding, because of:
the learning process: telling something publicly forces you to study but teaching forces you to completely master a topic. The course preparation got me to ask myself a lot of details that I ignored before and deepen everything that the attendees could ever ask
the design process: preparing a course is amazing because you have to care about how to explain the topics the clearest possible way, how to keep the attention high for more than six hours, and preparing everything in advance because you cannot know what could happen on the stage (ex. the code you know could not work but you cannot allow yourself to lose the attention of the participants)
the earning: we all work for money and I cannot ask anything more than mixing having fun and earning money. All other activities have not a direct impact on money, teaching has.
The main goal of the journey was studying, the by-products have been the following:
- I have spoken at 10 meetups, most of them in Italy with some exceptions for Lugano, London, and Vienna
- I have spoken at 3 conferences
- I taught at 3 courses, one of them for THE Italian React conference
- I have written 12 articles, they got 50k views until now
- I committed myself to create a “book” on GitHub about UI Testing Best Practices
- I have shared 10 packages on NPM, currently downloaded more than 300k times/month
- my OSS projects received more than 700 stars
- from ~200 to ~600 followers on Twitter
- I raised a lot of PRs on GitHub
- I moved to a new company after having spoken at an Italian meetup and knew my current colleagues ❤️
- I learned a ton of things, most of them are now stuck in my mind
- I met hundreds of people and knew tens, most of them are high-level professionals
- I helped thousands of developers, a lot of them have contacted just to say hi and to thank me ❤️
- I made relationships with the Cypress team, they even wanted to hire me but bureaucratic reasons stopped the thing
- Quincy Larson’s skills/reputation/network tweet
- Shawn Wang’s Learn In Public
- Kent C. Dodds’ Intentional Career Building
Nothing comes for free but I do not want to call them “sacrifices”, they are just efforts because I had a lot of fun achieving what I listed above. Anyway:
- I commuted one hour earlier, from 7 AM to 9 AM I was super concentrated on studying, helping people, preparing meetups, etc.
- commuting to home was the same, from 6 PM to 7 PM
- to do so I had breakfast with Jimmy Joy (a brother of Soylent) instead of my usual healthy breakfast
- during the weekend I dedicated from 2 to 4 hours to the various activities
- the month preceding the first bug course required me a lot of extra hard work
Well, I think that studying something that you use at work is pretty important and currently the product I am working on is huge and we have a dedicated QA team. As a result, I cannot use Cypress at work. I continue to be a Cypress Ambassador since I love the product and because of my knowledge and my exposition to production-related problems that come from the developers that I help. So I have to choose the next topic to study, AST attracts me but I have not decided yet 😊. Whatever the topic I choose, the studying path will be similar to what I have described above.