Rediscovering the Passion for Coding

Rediscovering the Passion for Coding

This year has presented several challenges. At the end of last year, I received adverse news that significantly disrupted my work as a programmer for several months. Consequently, I took an extended hiatus from coding. During this period, I engaged in a thorough reflection on my professional identity as a developer. This introspection revealed that I had lost my enjoyment of coding for some time.

I decided to use this period to rekindle my passion for programming, as I remain committed to pursuing it as a long-term career. To achieve this, I took a step back from my usual programming activities and frameworks. I began to assess the skills I was lacking and contemplate the type of programmer I genuinely wanted to become.

Throughout my career, my programming efforts have primarily focused on securing employment and improving my financial situation, often at the expense of personal fulfillment. This approach, while practical, led to a lack of consideration for my own professional aspirations and interests. Over time, this focus on job acquisition rather than personal growth resulted in work becoming tiresome and unfulfilling.

The Origins of My Love for Coding

I reflected on why I initially decided to become a developer. It started when my cousin sent me a coding puzzle and asked me to solve it using a programming language. I chose C++ and spent hours poring over the documentation, never once feeling bored. Each new feature I discovered excited me, and I vividly remember my enthusiasm when I learned about generics, often sharing my newfound knowledge with my sister.

A few years later, after graduating, my primary concern shifted to securing employment. This practical need led me to focus on learning skills that would enhance my job prospects, particularly JavaScript and web development. Eventually, like many others, I discovered ReactJS. This framework proved to be a valuable asset, enabling me to secure numerous job opportunities. However, this journey, driven by employment considerations, eventually led me to the current point of reassessment.

Coding problems

To rekindle the love and excitement I had as a teenager learning about generics for the first time, I decided to adopt a similar approach. I started with LeetCode, tackling coding problems every day. This experience quickly revealed that I was lacking in several fundamental coding skills. While I continued to solve the problems, I realized that my time and space complexity often left much to be desired.

To address these gaps, I enrolled in data structures and design patterns courses from Mosh Hamedani, which I highly recommend. These courses were taught using Java, a language I used to enjoy but had stopped using over time. The courses provided a comprehensive understanding of essential programming concepts, but the most valuable lesson I learned was the importance of continually improving the speed and quality of my code. Striving to write better code today than I did a few months ago reignited my enthusiasm for programming.

Get with the trends

In addition to taking courses, I expanded my horizons by exploring social media content from programmers outside the web development sphere. This exposed me to a broader and more captivating world of programming, where I discovered the diverse opinions programmers hold about their favorite languages. Through this exploration, I encountered tweets from Haskell programmers praising the language's virtues. Intrigued, I began following Haskell enthusiasts on Twitter, which led me to discover numerous other influential personalities in the programming community.

Indeed, it might come as a surprise. When I learned about the concepts of ownership and lifetimes in Rust, I was immediately drawn to delve deeper into the language. Not only did I find the challenge of mastering Rust appealing, but I also saw it as an opportunity to test and expand my programming skills.

In addition to studying Rust, I decided to broaden my knowledge by exploring the Go programming language. This decision was influenced by a friend who recognized my background in C++ and recommended Go as a language worth exploring. I delved into the default Rust book available on the website, and alongside it, I dedicated time to reading several books on Go to gain a comprehensive understanding of both languages.

You can check out more golang books here.

Solopreneurship

Despite my desire to create useful products for people, I never quite felt like a CEO. My career trajectory primarily consisted of being an employee, with a brief stint attempting entrepreneurship as a founder. However, I quickly realized my lack of understanding in critical areas such as market analysis and customer development, which left me feeling clueless and overwhelmed.

Determined to bridge these knowledge gaps, I decided to focus on improving my skills in product management. Enrolling in another course proved to be transformative, as it provided valuable insights into various aspects of the IT industry that had previously eluded me. I gained crucial knowledge about product development, generating and refining product ideas, identifying target audiences, and understanding competition dynamics.

As I immersed myself in the course material, I began envisioning numerous product ideas and features that I aspired to develop and eventually launch. This newfound enthusiasm was further fueled by discovering the journey of Marc Lou, a highly successful solopreneur renowned for creating lightweight yet immensely valuable applications. His story inspired me greatly, offering invaluable insights and practical tips on how to transform ideas into viable products—an area where I had previously struggled.

Conclusion

Life is a unique journey for each individual, marked by highs and lows. What truly matters is the commitment to continuous improvement and growth, both personally and professionally. By consistently striving to elevate our work and our lives, setting realistic goals, and diligently working towards them, we pave the way for progress.

It's crucial not to dwell on past setbacks or worry about unmet expectations. Instead, we should focus on the present moment, embracing the journey with enthusiasm and determination. Every step forward, no matter how small, contributes to our overall growth and fulfillment.

Ultimately, the key is to keep moving forward, learning from experiences, and finding joy in the journey itself. Embracing this mindset allows us to navigate life's challenges with resilience and optimism, leading to a more fulfilling and rewarding journey overall.