My First Ever Professional Code
The first project at my first job was exciting and came with lots of key learnings which have been useful through out my career.
My first job was at a project based company, they had multiple types of clients and they used to build solutions for them. Clients varied from single person companies to big corporates. Hence the requirements were also varied. From fuzzy one sentence requirements to detailed documents.
First job I was given to build resume and job description matching app. It was not really clear what the client wanted. But we knew they wanted to match resumes with job descriptions and communicate to either candidate or employer.
First challenge was what we were looking for in resumes, client very conveniently answered the keywords from job descriptions and resumes. so, all we had to do was read the resumes in docs or pdfs, extract defined keywords and emails. then match them with the job descriptions and send emails to the emails extracted from resumes.
How do I do that? My mentor told me to open Visual Studio, create a new project, and start coding.
It was .NET shop. so, tech was never a choice other than that.
What type of project did I ask? The desktop app may be, he replied.
I, in my enthusiasm to apply my learning to my first paid job, started coding immediately. but what? read a resume, how? some libraries should do it, search online how to read the doc, pdf, etc. my mentor replied.
Quickly found the library, started reading documentation, and was able to parse and read doc and pdf by end of the day.
Key learning, libraries are awesome but there are limitations to them, what if you find a bug or limitation and nobody is there to support?
Now I have text from resumes but How do I get keywords and email out of it? the magic word regular expressions. You can search strings with patterns like email has some words with @ in the middle and some words then a dot(.) with some words after that.
Rejex are awesome, but very hard to get it right. and can be very hard to read.
and about techs, I had a list of them from the job description. so, I had to search Java, c#, etc in resumes.
But first I have to develop UI for emails what job descriptions to send to which email addresses. because you just can’t send every job description to every email. Some human has to decide. So, for every job description, you see all the emails that match. now a person has to select the multi-select component for emails and hit the send button.
How do we come to the design? My mentor/manager drew that on paper and showed it to the client, who made some amendments and I got the paper and started learning how to do that on a Microsoft desktop. It was probably Winforms and you could just drag and drop components.
As soon as I finished up the app, we demoed it to the client and he said we needed a web app. In all that paper design we forgot to ask and neither did he mention. Are we developing a desktop or web app? Mobile wasn’t that big at the time.
And surprise surprise!! he wanted a web interface, I had to redraw my design with ASP.NET.
Key learning, always ask what type of interface you are developing for, desktop, web, mobile, etc.
And Keep your business logic separate from UI so, you can change UI or use them in multiple UIs.
It was all fun and awesome, I really enjoyed working on my first project and we delivered on time. So far learned about desktop and web development, how to validate interface and iterate over requirements.