Hi, its Faisal here, having around 15 years of solid experience working mainly on enterprise level projects.
I have been working mostly on the development of distributed systems, where I have to work across the whole stack including frontend, backend, infrastructure setup, setup up CI/CD etc.
I believe that I am the best fit for the Java related roles like Senior Software Engineer/Tech Lead/Engineering Manager.
Why? Some of the reasons are given below:
I’ve been doing all of the above and more in my day-to-day life. More importantly, I do not follow these practices just because I am instructed to do so, rather I follow them cause I can see some real value and importance of them. I also strongly believe that to get the real value out of anything, one should first understand the importance rather than blindly following (e.g., Mechanical Scrum vs. Professional Scrum), and then he/she can use that practice/principle with passion.
I’ve been in the software industry for last 15 years. Apart from technical skills, I’m certified professional Scrum master, scaled professional scrum as well as certified Agile practitioner from PMI. I’ve worked across different domains like land management, visa processing, healthcare, telecom etc. It’s been a steep learning curve where I just did not learn but also shared what I learnt whenever I got the opportunity.
I’ve started my career as Software Engineer and since then, had been playing different roles. My cost effective solutions with high quality deliverables as well as delivery oriented track record got rewarded with the career progression such as, leading the team and project, or becoming the Software Engineering Manager (as they knew that I’ve never been scared to take up bigger challenges).
There had been tight deadlines, challenging requirements and complex issues from time to time, but have been meeting the expectations through the use of tools like communication, transparency, staying calm even under huge load and pressure; and then, “the approach” towards development and delivery, which means, follow the divide and conquer technique to split the complicated problems into small, measurable, achievable, testable and manageable ones, and follow Moscow technique to prioritise them to ensure delivering the best value all the time.
Apart from that, I’ve also been focusing on looking for opportunities for automation which could either be project related or process related as well.
I finished with Atlassian in 2021 and below are some details related to the gap/break since then.
I went on a normal couple of months holiday in February 2021, but then some unfortunate series of events kept happening at sort of regular intervals which forced me to keep prolonging my stay to take care of family overseas. Apart from other family related responsibilities, I also helped my brother setting up his property business.
I had a personal project developed with Java 10 and springboot 2.0.5, which I upgraded last year to Java 20 and springboot 3.1.2 release. There were lot of other components and libraries which got upgraded as part of that major upgrade.
I also joined some IT/software related groups with the intention to help/answers others. I see it as another way of learning too.
There had been quite a few examples but I’ll use the implementation of API Gateway as an example. Problem was, our B2B gateway at that time was facing issues including long downtimes, which was not acceptable at all. So I was tasked to come up with the plan along with a Proof of Concept to have our own API Gateway. No further direction or supervision was there as that’s all I was told. So, I did some research and shortlisted an off the shelf product named Tyk which I could use to build my gateway on top of that instead of reinventing the wheel. It was developed in house to avoid purchasing expensive product from the market. So, I developed a proof of concept and started thinking about productionising it and that’s when I introduced tools like docker, ansible, vagrant, packer, nginx, log rotation etc. After having bits and pieces connected together, presented the whole solution to the platform head, the approach as well as the PoC was well received and as a result, I was given a team to work on it properly and make it production ready. Got the team up to speed and they got the opportunity to learn tools like ansible, docker, etc. It was deployed on AWS with all the latest techniques like scaling, load balancing etc. at that time. The project later became a product in the organisation and got used by multiple teams.
We usually work on projects and the timeline is always sort of packed with tasks or stories. Its just one of such project we were working on, when we out system got attacked by hackers. So, security definitely has got higher priority than whatever else is in development. To tackle that, we had to work extra hours but still had to cut some corners from out next project. Also had to reprioritise to ensure that the best value will get delivered by the end of the project and within the timeline. That’s what had happened, but in general, conflicting deadlines can be almost avoid with the right level of communication, transparency and dependency management. So that, in most of the cases, no one else is waiting for the work to be delivered by someone else. It’s all about keep unlocking others before the other get to that stage. So, I’d say its about having the right culture and discipline in the organisation. Sure, that won’t eliminate the conflicts 100% but you’ll see that they can be avoided in most of the cases.