Downsides of being an enthusiast

Introduction

Being fascinated by something is great. It gives you the motivation you need to start something. Maybe something that becomes big in the end or that motivates you to deliver real good work in general. I think many people describe themselves as ‘enthusiast’ like in their LinkedIn profile. When you google it you get results like: “intense and eager enjoyment, interest, or approval of a person”.

In this post I want to talk about the downsides of being fascinated or maybe a bit too enthusiastic for certain things. In my case it is for anything that is kind of IT related. Therefore an example:

Between Christmas and New Year (2024) I found this guy on youtube called ThePrimagen. I was amazed at how fast he was on the keyboard, how he could navigate in Neovim and being so fast in creating stuff by having much knowledge about many programming languages or coding in general. So there it was, the idea to become a software engineer like him in addition to some other things… because you know, it all looks so nice.

And there we go, the journey went off with the start of the new year. I had a short session in my notes app and noted down what I want to learn to become someone as good as him. Quickly I found several things on my list like: setup neovim, learn to type using all 10 fingers, learn vanilla javascript to build a dynamic web application without a framework and learn Go for the backend afterwards. I prioritized all the items on that list and started. I wanted to start with the typing improvement first to gain some speed, because I can use this skill on every further step, move over to JavaScript, setup neovim, and then learn the Go language to naturally grow my knowledge and experience with different things.

What can I say? Of course I started to setup neovim by reading a bit of the documentation, watched some youtube videos from TJ DeVries, did the JavaScript course on boot.dev, tried to learn 10-finger-typing using edclub.com and tried different things on my raspberry pi like Technitium, Gitea and Caddy. Everything almost at the same time… I felt like a puppy in a pet store full of toys and tasty things. I am a tech enthusiast who is not able to focus in a world with almost infinite possibilities. I really love tech very much as everything is so appealing to me and I jumped from one topic to another and back. After like three weeks I recognized something. This behavior I had almost all my life and it prevented me from being an expert for something. I’m a quite good all-rounder but currently I am in need of something different. So I needed to change something.

How it went with each project

So what did I do and how did I proceed with each of the above topics? First, I crossed off all the open source tools and services I found on my long list of OSS tools and services. Next, I decided to focus on software engineering because it offers almost infinite possibilities, is very flexible and I can apply all the knowledge I acquire in this area to others. That was my all over goal. And the rest?:

10-finger typing

I started with a German qwertz keyboard layout and it went pretty well, with a few hiccups, including neovim, which threw me out of the flow. I used edclub.com to learn. I wanted to type as fast as before with only 4 fingers. The hardest part is learning the special characters that you absolutely need for programming. I had to come to terms with the fact that I wouldn't be nearly as fast as before in my daily work and would make lots of mistakes until I reached the same speed as before. At the moment, I'm about 80% as fast as I was before, and counting. I also came across the website monkeytype.com and sometimes type for 30 minutes at a time. It has cool features like word count per minute and excluding special characters.

Neovim

Neovim was and still is a world of its own. To be honest I was amazed as I saw at how fast you can edit text and especially code with it. It is pure efficiency with nearly unlimited possibilities with the use of the Lua programming language and its plugins ecosystem. I went deep down to replace my current setup (vscode) with neovim and was ready to become the guy who you have a look on and you do not understand every action as he types and does changes so rapidly that you can not follow along. Right there I lost myself in tutorial hell (again). This went on until I stopped myself from going further and decided that this makes no sense at all and discontinued for the time being. This makes more sense when I was able to do each keystroke without even looking at the keyboard and come back to it later.

JavaScript

For JavaScript I took a course on boot.dev. This covered at least the basics. Then I learned JavaScript by creating an entry in my knowledge base repository with examples for each aspect. This I did as I was able to create classes and handle async operations. Until then I only knew python which sometimes made learning a bit easier for me. I think the more languages you know (or have seen), the faster you learn new languages or can read other languages faster, or at least recognize the concepts. From there, I've started to create a GitHub action for which I'll write a separate blog post to report how it went. I know, not as planned for the web app, but I had this use case and then couldn't stop myself, but at least I learned a lot from this real-world use case.

What I learned (during 1.5 months)

After being in this year for 1.5 months now I learned a lot. Let me tell you in the following in more or less detail:

  • Define one thing: Having one thing you really want to learn helps you to stick to your plan. And this is by far the most difficult thing from my point of view. To build up a mindset which is able to endure all the other cool things which appear everyday and that you discover on your way.

  • Identify and discontinue topics early: If you have multiple things on your plate it is important to let most of them go or put it on a separate list so that you may get ideas for later or pick up the excitement later again. You cannot learn all at once in such detail that will satisfy you in the end.

  • Prioritization of things to learn: After sorting out, prioritize the things you want to learn. What is maybe a thing which accelerates the learning process of other topics? You may be able to combine certain things or need to parallelize like I did and still do using 10 finger typing and javascript.

  • Flexibility: In programming having endless possibilities is a blessing and a curse at the same time, for example it can lead to your own structure and style of coding, but can also lead to multiple rewrites (which you can also learn from).

  • Static types: I like static typed languages more as it gives me guidelines when building new things and helps me identify problems early. Maybe this will change over time when I get to know more about JavaScript.

  • Time slots: Use time slots to dedicate time to one thing like typing using monkeytyping.com or edclub.com. It is like physical exercises. A bit of exercising is better than no workout. Start slow and take like 5 minutes everyday and increase the time over time.

  • Frustration: It can be frustrating as you are not that fast, make mistakes or encounter several errors in the beginning (e.g. typing).

  • Say no and let go: Starting new things is fun for sure. It is appealing to create something new and the progress at first is massive, so it is hard to let something interesting go. Sometimes you need to say no to new things and to yourself, as in the end you shouldn’t say (or make a youtube video about it) “what I would do differently if I could start over” because you already did early on. I think this is one of the most valuable skills when being a natural enthusiast. I admire all people who have the discipline who can say no to themselves and their inner voice.

  • Fun: Not only learning new stuff is fun, actually building and knowing things really well is fun too. In addition, it gives confidence. Also when you talk with others about these things that excites you, the best talks are the ones where you can talk in-depth about these and not just scratch the surface. These are the discussions we want to have. It can help to have a person who is doing what you like and he or she kindles the fire in you again and again with his or her skills (like ThePrimeagen who does this to me).

Conclusion

I am astonished how many things I’ve learned during this short period of time. Again, being enthusiastic and full of drive for new stuff when reading an article, watching a tutorial on youtube or getting told about a new project at the job is a wonderful thing but can also lead to much frustration over time. I was frustrated and disappointed in myself because I started many things and then moved on to the next. I was caged in tutorial hell or just reading “Getting Started” guides again and again which builds up even more stress. It summed up over time and it felt like I saw a lot of things but either could not remember them or had the feeling I don’t know something in-depth.

I have decided that I can't go on like this and that I want to change. I want to be able to say no to my inner child who wants to play with the next fancy toy. I want to do the one or two things that I really like or that have always fascinated me over a long period of time. Programming is that for me.

Maybe you see yourself while reading this. Eventually this helps you to stay focused on the thing you really want to learn and get rid of this feeling of frustration you may have. Just have fun in the topic you really like and it feels good to be an expert. And sometimes it is also alright to take some time to explore all the things you’ll find along the way as long as you return to your path.