Article
Card image cap for article

Journey to Showcasing Coding Skills through a Public, Dynamic Website

Learning

7/7/2024

Introduction

Since March 2019, I have been immersed in the hobby of writing code in C# and using .NET libraries, yet I found myself at a crossroad, uncertain of how to display my expertise in a tangible way.

Nine months ago, I decided to develop my own dynamic website using the web framework ASP.NET Core MVC.

The Genesis of the Idea

The idea was born out of a desire to create something of value, something that could stand as evidence to the knowledge and experience I had accumulated since 2019.

ASP.NET Core MVC presented itself as the perfect web application framework to build upon.

It is well aligned with C#/.NET and is used by many big organisations or companies for complex, yet performant web pages. Stack Overflow and Dell have websites built on ASP.NET Core MVC, for example.

For me ASP.NET Core MVC promised a suitable level of abstraction, the flexibility and robustness I needed to craft a complex web application, but still understand the making of it, including all the necessary integration with HTML, CSS, jQuery, Bootstrap and javascript.

The Learning Curve

Despite my years of dedicated leisure programming experience, diving into web development with ASP.NET Core MVC was a steep learning curve. I had to familiarize myself with the MVC architecture, understand the nuances of routing, views, and model binding, and get comfortable with Entity Framework Core for SQL database operations.

The utilization of collection interfaces like

IEnumerable()
was a nice use case. Bundling requests by one user – to generate a list of results – required a session approach which needs to be carefully designed.

By mimicking a real project I wrote stakeholder requirement specifications and created unit tests with the library XUnit together with the session simulator implemented with Moq.

To make future changes easier to implement, and to follow the principle of loose coupling between software components I adopted dependency injection wherever possible.

Each step was a lesson in itself, reinforcing concepts and introducing new challenges.

Overcoming Doubts

Before this project, I often questioned what kind of application I could develop that would be worth showing to the public. My previous projects felt too niche or incomplete to share. However, as I pieced together my website, each line of code added clarity to my vision.

I realized that the value of an application lies not just in the complexity of building it, but in its ability to organize the display of the information given by user in an appealing, consistent way.

Instructing the user how to use two calculation examples and making him/her aware of erroneous input is as important as displaying a correct result (verified by unit testing).

The Result

The result is a dynamic website that represents the depth of my understanding of coding languages and a web framework. It serves as a portfolio of sorts, a place where I can direct peers and potential employers to witness my development prowess first-hand.

Finally, I can now better apprehend what challenges web app developers face in their daily work, with all the dependencies in a demanding project environment.

Next steps

I already have plans for new versions where RESTful APIs offer another pathway for retrieving data from the backend. This makes it usable also for mobile applications, without having to rewrite the backend code base.

A big leap that I leave for the future to take is the registration of users and giving them the possibility to comment articles, and having their comments written to the database. This requires the implementation of Microsoft Identity with authentication and authorization.

Conclusion

This journey has been more than just about building a website; it has been about self-discovery and pushing boundaries. It has taught me that the skills we acquire over the years can find expression in many forms, and sometimes, it takes a leap of faith to bring them into the light.

My dynamic website is not just a project; it's a milestone that marks the beginning of a new chapter of converging my hobbies and interests with knowledge I can use at work.

Go back