- 🎉 2020 was a great year, thank your sticking with me!
On 2021 I want to cover even more topics in the blog:
- Let me know what topics are you interested in by filling the survey.
Table of Contents#
2020 was a weird year to say the least. We were to stay in our houses more than usual and that changed our lives.
Besides the bug that most of you are already familiar with, 2020 was a special year for me because 3 out of 4 members of my family moved abroad. This was planned for 2020 but the stay-at-home situation delayed it and we had extra opportunities to spend time together. It is not the end of the world, we are going to see each other and there a lot of way we are still connected but it is a massive change from having a walking-distance between each other. They are happy and so there’s no point in dwelling in much else, but it was definitively a big change.
It has been a great journey so far and I hope you stay for the ride with me. We have exiting plans for the future!
This post has two purposes:
- A public statement of the plans for 2021.
- A personal commitment to do more and never falter.
This post might also interest you if you yourself are building an internet business like this one.
A look back at 2020#
The community has grown exponentially, we are still small but at this pace we are going to become huge!.
This is the list of the most successful posts this year:
- React is slow, what now?
- Bitbucket is developer hell
- Secrets of a Tech Lead: Programming Principles
If you haven’t checked them out be sure to do that, they have valuable content.
A look forward to 2021#
The plan is for next year to include some of those technologies into the blog and hopefully we can extrapolate universal programming truths into our day to day work and whatever technology we use in them.
Let’s cover the topics I am planning on covering next year:
I want to talk more about Rust, teaching Rust to front end developers, talking about Wasm (Web Assembly) and simply writing more Rust just for fun.
I have been a long time fun of Rust and an early tinkerer of the language, even before it reached v1 which was a very chaotic epoch.
Since then Rust has consolidated as a real world programming language with revolutionary guarantees in a niche that has been dominated for a long time by arguably old and sometimes outdated languages: C and C++.
WARNING! I don’t have anything against C and C++, please don’t take it personally, there are a lot of things
those languages have brought to the table and they are super valuable and they will probably
be for a long long time, BUT, they have widely accepted flaws like exposing themselves easily
to memory attacks and being highly unsafe by default, and they also have some pretty old-fashioned
idioms such as header files instead of regular modules. The build system and package ecosystem
is far from ideal in my humble opinion, one can say a lot of bad stuff about NPM
and crates.io but they
have provided a community standard to publish and share reusable packages across all environments, something
that up to this day is not trivial with C and C++. I know there are solutions, but none of them are standard like
NPM and crates.io are. Additionally, Rust’s build system: cargo,
is a standard tool that replaces all the configurations
you would otherwise need to, sometimes manually, dump into makefiles
and other configuration files of sort. Cargo is a modern solution
for this problem and makes the barrier of entry to Rust almost null in that respect.
Finally, Rust acknowledges
that in order to be productive programmers
need to high level constructs such as
Option, mutability helpers, and so much more.
Rust has a lot of virtues, briefly:
- it is a low level language with high level APIs.
- it does a lot of help you make programs that are safe.
- the community is outstandingly good both with hard skills (technicals) and soft skills (management, communication, problem resolution).
- a holistic approach towards building a programming language: Rust understand that a programming language is so much more than the syntax and the compiler, it involves build systems, package repositories, installers, configuration management, good quality packages, etc.
- is statically typed.
Thanks to learning Rust early I have understood, probably the hard way, a lot about Statically Typed languages, idioms, techniques, patterns, etc; which I extrapolated without much effort to Typescript when I started using it professionally. Additionally I finally understood the benefit of statically typed languages with Rust, the experience of getting the compiler to help you find the problems with your program is a humbling and enlightening that if you endure (sometimes it can be frustrating) it will teach you a lot.
There is so much more to Statically Typed languages than what Java has to offer.
IMPORTANT: I do not hate Java, in fact I respect it a lot, I have felt foreign when looking at production grade Java code, because of its natural verbosity and because of common idioms used but my experience might be biased, so I do keep and open mind and I do acknowledge that Java in 2020 is a completely different beast than what Java was 2 or 3 years ago.
Web Assembly and Rust#
Imagine reducing the times it takes to compile for your large scale production application when using webpack? Isn’t that a big win?
Well, in any case Rust has lot of tooling (although a little bit immature last time I checked) to seamlessly integrate Wasm code into Node.js, webpack, and front end applications in general, so once this tooling is mature I expect the integration to be quite easy and the only real barrier will be Rust it self. So we might as well be ahead of the curve and start getting really good with Rust!
Rust has a great future ahead but learning it can be frustrating depending on your background, and I would love to help the community with that learning path since I myself have already been there and done that.
Machine Learning and Artificial Intelligence#
ML and AI are becoming widely used techniques to solve a wide variety of problems, an although right now we see them in a lot of big companies as part of their main products I expect that while the technology advances we are going to see more and more day to day applications in customer support bots or a smarter searches and with things we currently don’t even imagine.
I do expect ML/AI to have even more impact and be life-changing in the near future as technology evolves and we learn more about what is possible with them.
I have been reading two books this year and I am planning on finishing them and reading more. A lot of the ML/AI ecosystem is based around Python and I really enjoy working with one of the most loved and used languages in the world, so there’s a bonus point there too. These are the books I am currently going through:
- Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow: Concepts, Tools, and Techniques to Build Intelligent Systems
- Deep Learning with Python
I would love to cover topics related to ML/AI in this blog and also to have an excuse to learn more about them in the way.
Soft skills and Mental health (for developers)#
The idea of software developers being black boxed hermits that accept coffee, pizza and requirements as inputs and they output working software is an outdated one that I believe is detrimental to us developers.
On 2021 I want to break the spell and talk about Soft Skills and Mental Health for developers.
Developers are far from hermits, although they do need to have a good chunk of their time available for coding with deep concentration and focus they also need to communicate well with others, not only other developers but superiors, underlings, people from other areas such as HR, management, stakeholders, QA, graphics designers, etc.
This type of communication requires a lot of soft skills to be efficient, effective and productive, so we, as developers need to be socially capable, we need to be able to express ideas concisely to non technical people, we need to understand how technical decisions impact the business goals and vice versa, we need to be emotionally intelligent to understand other people and their swinging moods, we need to be empathetical to other’s emotions and stages in their lives.
Developers can no longer be awkward geeky people, we need to be regular people with technical skills, we need to understand ourselves (see next section) and others, understand how social interactions flow and we can navigate this complicated space. Nothing too fancy, it is just another problem space we need to figure out which is something we do on a daily basis.
The main idea is to write about effective communication, emotional intelligence, empathy and any other soft skills required for developers while understanding that there are different people with different backgrounds that have different experiences being socially able in the workplace.
I believe that in the end this will not only impact your work life but it will also impact your personal life like it did to me.
If soft skills refer to how we handle ourselves with other people and their emotions, Mental health is all about us and how we handle ourselves with and within ourselves.
Developers sit down right in the junction of neurosis (we are over thinkers), anxiety (am I going to be able to pull this off?) and stress (we need this work finished by tomorrow) and this situation is a severe attack to our mental health. Anxiety is a pervasive sickness in the modern world but combined with stress and the dangerous neurosis can mutate into much worse symptoms like panic attacks and elevated anxiety periods.
This is why before understanding other people we need to understand ourselves and our emotions (emotional intelligence), we need to be observers of our own mind and have the clarity to auto regulate our selves, we need to be able to say “that’s enough overthinking for today, tomorrow I will be able to solve it” and sleep with a quiet mind.
These things are not only problems of developers but I believe that since our primarily task is to think that we are particularly susceptible to these problems.
Fortunately there are a lot of both old and new tools to deal with these situations and the society as a whole is much more comprehensive and understanding and open about them than it used to be.
The core idea is to be able to help others with my own experiences with this subject, with feeling sad, anxious, depressed, etc. and what tools I have used to deal with them, and in the way acknowledging that you on the other side are not the only one with these problems.
One particular subject I am super excited to talk about is stoicism, it is philosophy and has helped me a lot to cope with these problems and I believe they can help other people too.
🎉 THANK YOU! 🎉
Thank you so much for sticking with me and my project, I couldn’t be more happier and excited for the future.
Let me know in the reddit discussion what are you most excited about on 2021.
Or even better, fill this survey and let me know what are you interested in for 2021.
Like the content? Consider subscribing, buying me a coffee or even becoming a Patreon below.