What I learnt developing a system in a couple of days.
Tags: dotnet, javascript, tailwindcss, react
Published: 2021-10-24 17:05:23

So, being as bored as I was this weekend ( *not really* ), I saw a picture of a database schema while browsing the net. I then asked myself, how long would it take me to implement that thing as an entire system? 🤔
Considering I'm totally notorious with *not* finishing projects, I decided to give myself the **Ultimate** deadline of two days ... (*lol*), just to make sure I wouldn't spend anymore unnecessary time on it.
You know what the funny thing is? I actually managed to finish the project this time 😅. I mean, that's the purpose of the article 😅.

Anyways, for the curious, the project can be found on github, the user interface [here](https://github.com/kudzaitsapo/hr-manager-ui) and the API [here](https://github.com/kudzaitsapo/hr-manager-web-api). 

I made the API using Asp.net core, and the user interface, I used react + tailwind (*an awesome combo apparently*). I tried to make the system as simple as I could, but then stuff happened and it ended up being somewhat ... *complex*.

After meeting my weekend deadline, there are a couple of things I learnt:

### As you approach the deadline, code quality decreases
Some times, when you're about to reach a deadline, and there's still a ton of features left to develop, you start saying "SCREW IT" to some of the coding conventions. You start copy/pasting code, completely violating *D.R.Y.* principles. Readability? Who cares when there's a deadline approaching? 

### Thanks to pressure, some features get left out
I was giving myself so much pressure, I ended up leaving out a lot of features undeveloped. I know what you're thinking, how did I finish the project if I left out some features? 🤔

...

Anyways, I ended up prioritizing some features over others, and hey, who can blame me? 🤷‍♂️

### Bugs
The only code without bugs ... is code that hasn't been written yet. In reality, every code has bugs, and as you approach a deadline, the pressure makes you to introduce more bugs. Some are noticeable, and some of them you only notice them when in production ... and something is burning.

### Performance
What's that?
....

Just kidding. As you approach the deadline, you stop caring about performance. Of course, the code can be refactored later when all the servers are on fire, the client is yelling, and the users are calling non-stop.

I know most of these things are probably common, a lot of you have experienced them beforehand. That doesn't mean of course, that there isn't anyone who hasn't.

Here are some of the screenshots of what the system looks like:
![login page](https://raw.githubusercontent.com/kudzaitsapo/hr-manager-ui/main/screenshots/login-page.png)

![dashboard](https://raw.githubusercontent.com/kudzaitsapo/hr-manager-ui/main/screenshots/dashboard.png)

![employees page](https://raw.githubusercontent.com/kudzaitsapo/hr-manager-ui/main/screenshots/employees-page.png)

![employee details page](https://raw.githubusercontent.com/kudzaitsapo/hr-manager-ui/main/screenshots/employee-details-page.png)

Right, I know what you might be thinking ... What's with this guy and HR funny systems? Who knows?
...
Anyways, Just thought I could share what I learnt during the weekend, for the benefit of others who haven't.