A few years ago, a meeting was held about an issue the QA team was facing. The JIRA work-flow had become too overwhelming. It was tedious to create the hundreds of sub-tasks that sometimes accompanied each feature development. The summer was approaching, so the decision was made to use the resources from the summer internship programs to snatch one of those under graduate and have him build a new system, independent of jira, to solve the problem.

Of course, they didn't know what the program will look like or even how it would be built. But the great thing about having interns is that you can tell them to build anything and they will pour blood, sweat and tears to get it done. The intern was hired and they put him to work.

The notable thing about 2015 and 2016... and also 2017 and 2018, is that if you are trying to learn programming, the first thing that will come flying to your face will be JavaScript. Not just plain javascript of course, but a JavaScript framework. When Aaron was hired, changed name of said intern, the popular JavaScript framework was Angular.

So Aaron followed a couple javascript tutorials here and there, jumped onto nodejs, then was impressed by Angularjs. Naturally he chose these tools for his development environment. He was given complete autonomy over the project.

Right before the end of summer, he presented the project in a meeting and everyone was impressed. The QA team was asked to try to use the tool in parallel to get familiar with it until it is ready for a full transition.

Aaron completed his summer internship and went back to college with some fine recommendations. Months went by and a job was posted on a job board. It was for a full stack developer with experience in PHP, node, Apache, Nginx, expressjs, and expertise in Angular. I am by no mean an Angular expert but I applied and got the job.

I was surprised that the projects that I worked on day to day had no Angular whatsoever. But from time to time I would hear about the Amazing tools Aaron built for the team. One common thing that was being said is that he introduced modern tools into our work-flow. It's true, some of the tools I was working on were old things written in Perl, Bash and C.

One day, out of the blue I was asked "how is your angular?" I'm not a specialist in angular, but I sure as hell know JavaScript. So I answered "pretty good". That's when I was introduced to the project. It was chaos, no record was being saved in the database anymore and the QA team had a deadline the following Monday.

"I can do it by Monday" I said.

"Monday?" The manager said surprised. "No Monday is their deadline. They need it ASAP."

I had to fix it on the same day.

It was a PHP project. It was also a node project. It was running on Apache. It was also running on Nginx. It was running on a node web server. At least the database was only MySQL. Calling this an Angular project would only be a courtesy.

For a company with such rigid security, it was a mess. Every single line of SQL was prone to SQL Injection. One of the requirement for the project was for it to use Jira credentials to log in. So of course, when you log in the first time, your user name and password was saved in a cookie. Every single request had to be re-validated using the jira auth API. Security was a concern of course since your user name and password is in plain text in a cookie. So the solution was base64 encode them first before setting the cookie.

I was excited. Everything was broken, this is a developer's dream. I would throw away every other project I had just to fix this beautiful mess. But alas, I only had a day to fix the single issue of the database not saving new records. In his short internship, Aaron hadn't got the time to study database designs so he created lots of logical errors in the database. There were some primary and foreign key mismatches. It would have been so nice to sit down and properly redesign the database. But, the QA team was eagerly waiting for my fix. I had to use the timestamps of records to ball park which records were supposed to be related. I created new matching IDs, and instructed the QA team that I have disabled the delete button because deleting a record would break the website.

This allowed them to continue their work in the meanwhile. I created a bunch of jira tickets for improvements that need to be done.

"Thank God you are an angular expert or we would have been screwed." My manager praised me.

I had written hundreds of different MySQL queries to diagnose the problem. I ran very complex updates and manually modified some records to bring the system back online. Trust me, matching records based on close timestamps was an idea that only came to me at the last minute, it was not easy. But I was only praised for switching the state of a button to disabled in JavaScript and I became the Angular expert.

During my down time, I revisited the tickets I had created for this tool and fixed the most offending of problems. The base64 cookie credentials is now gone. And you only log in once!

Every daily stand up, I would tell the manager about an issue I have solved. He praised Angular. I explained the complexity that it took to run this very simple tool. He praised Angular. I told him about the 3 web servers that are currently running to serve a single application (Node for SPA, Apache to trigger php jobs, Nginx for the static assets). He praised Angular.

I told him that we need to have someone who focuses on improving this tool and remove the excess it took to run it. I even printed a list of things that this person needed to know to be a qualified candidate. He took the list and thanked me.

The following week, there was a new job post.

We are looking for an Expert Angular Developer.

Looks like this is being discussed on reddit!