Background

The Evolution of My Coding Journey

My coding adventure began with C#, where I crafted console apps and later transitioned to graphical user interface (GUI) applications using Windows Forms. As I gained confidence, I ventured into the world of web development with Microsoft ASP.NET.

However, I soon felt constrained by being tied to a single language and sought to explore other domains. My curiosity in mobile app development led me to Java, where I discovered Android and learned its ins and outs alongside Java programming. The similarity between Java and C# was like finding a long-lost sibling!

My computing background should have started with Assembly Code, but instead, I took a Digital Systems Fundamentals course that introduced me to transistors, logic gates, and integrated circuits (IC). This foundation led me to learn Assembly, which initially seemed daunting due to its procedural nature and lack of object-oriented programming (OOP) paradigm. After overcoming the initial challenges, I successfully applied my knowledge and even developed an application using Assembly.

As I continued developing mobile apps, I encountered issues with inherent bugs that caused unexpected crashes. To overcome these obstacles, I delved into debugging strategies like unit testing and test automation to ensure my code was robust and reliable.


Behind the Scenes: The Power of Abstraction

As developers, we often focus on the user interface (UI) – the visual representation of our work. But behind every UI lies a complex system of dependencies and behaviors, orchestrated by encapsulation and abstraction.

Unified Modeling Language (UML) helps us prototype and design systems that are robust and scalable. Meanwhile, Test Automation ensures our code is reliable and free from bugs. This invisible work allows users to enjoy seamless experiences without worrying about the intricacies beneath.

In a world where Artificial Intelligence (AI) and Machine Learning (ML) will soon simplify development for us, next-gen developers must be creative and collaborate with AI as a partner. It's no longer just about coding; it's about designing systems that work harmoniously together.

The software development life cycle paradigm needs to evolve to accommodate these changes. By embracing explicit design and implementation, we can build more intuitive and user-friendly systems that are ready for the challenges of tomorrow.

"all software developers must know their compiler". A fact I won't dispute, it's weirdly beautiful; how it's able to process our complex code. I'm getting to know Java in an intimate way, this love affair started with a crush, and developed; into what it is today... 

GitHubLinkedIn