Experiences of a User-Centric Software Engineer
By working on projects with clients based outside my home country, I gained an wider and deeper understanding of the nuances of the global web development scene. Ensuring that global projects were completed on time was often a major challenge. Clients communication with representatives from my side often had to be managed very carefully because of different levels of technical know-how at both sides. This also meant that inaccurate progress updates were made, leading to mismatch of clients’ expectations somewhere down the line into the project. The ultimate mismatch of expectations led to lost time (and sometimes also clients) in fire-fighting.
After three years of rigorous technical learning through the endless slogging for delivery timelines, I was ready for a change of career. Being with companies delivering software services, it started to feel that I was repeating the similar software implementations and using similar programming languages. I did learn things and felt that my skills were improving, but I was limited to a specific range of programming languages and technologies. It felt like being a cog in an assembly line.
Transitioning into Product Development
I moved on and joined a product development company UXArmy. Day one, I was introduced to the online user testing product by an existing colleague. It was fascinating to hear that description although at the inside I was cautiously suspicious about it — simply because such a product was technically complex to realise. If all that were told here was true, there was definitely a steep learning curve to overcome. I was also secretly hopeful that I’d learn something beyond acquiring different programming skills.
First steps into product development
During my first few months at UXArmy, I was handed over exploratory assignments on things which were seemingly expert topics e.g. Amazon virtual private cloud hosting. I did wonder if I’m getting to the right conclusions however, when I looked around to what other colleagues were doing, everyone seemed to be taking on responsibilities than task based assignments. Within two months of my understanding of the product I was appointed team lead for product development for a major part of the product.
By now and based on my interactions with colleagues and business owners it started to feel I was doing something significantly different than in the past. Here I was, in a “product-based company” as we call it in our software engineers’ gossip.
The Change has begun
After submission of my deliverables for each of my responsibilities, it was becoming clearer by the day that ‘survival by delivery of tasks’ was not an option — delivering excellence and creating winning product was! I had started to work with a different mindset — broadening my technical horizon and ability to see the “helicopter view”.
Since I now worked with advanced technologies, started to look at the product features from users’ perspective and business representatives, I had to learn to communicate at varying levels for instance, a business manager was unable to understand a programming constraint that needed high effort to overcome but, was easily able to appreciate the alternative user facing solutions from me. Obviously because these alternative solutions needed lower effort to overcome that very difficult programming constraint.
My Product management journey
Technically management was so different. The team here has several skilled engineers working on different platforms for instance iOS, Android, Python, Angular, Ruby-on-rails, Social media integration, Video processing, and the list can go on. As a team lead, it was expected of me to provide solutions to new engineers at times. At the same time, it was not a possibility to become expert at each of these technologies. So this got me into research of different job profiles on several skills and learn important parts of these technologies, at a high speed. I had to invest endless hours in researching on each of these ‘important’ topics and some problems faced by us did keep me awake at nights.
Over the course of my stay at UXArmy, it’s been a gruelling but hugely satisfying journey. Starting to step into Product management, I have started to see the three aspects of a product clearly — User Experience, Technical Feasibility and Business viability. I am constantly familiarising myself with several aspects of product development besides the programming languages: For instance, creating Feature Roadmaps and doing Proof-of-concept projects.
For sure I have to keep an eye onto the competition and while creating or suggesting anything, I have learnt to ask few most important first questions to myself — Does User need it? Would user be happy using it?
Learning from handling software vendors
It’s smart to not make everything. “Buy” where it makes sense. Based on this belief that comes from our business leadership, I did have the opportunity to work with software vendors.
An interesting experience is worthy of sharing. This experience was nothing short of illuminating. Vendors specialise in labour-intensive services/solutions that are often prohibitively costly. For example, this Software Vendor, let’s call this vendor “Vendor A” allows organizations and universities to record, share, manage, and edit videos on the cloud.
With “Vendor A”, I procured a Cloud API based software solution that would allow websites to capture user behaviour via desktop video recording. This was a critical functionality of our online user testing product. I had to understand their software architecture which was very well documented. I had to endure communication difficulties with developers of this vendor because the developers used to suddenly go quiet, putting my product release deadline at risk. As a unique experience, this “VendorA” changed their policy of interaction via emails which left me wondering if the Vendor itself has chosen a new business. It turned out that all communication was now starting to happen via integrated “chat” on the website..”What a relief!”.
The communication resumed however, the journey forward was increasingly challenging. To make our product more user-friendly, I needed to ask for a small software change to “Vendor A”. By going through various blogs and Stack Overflow, I was finally able to arrive at a solution that required a simple adjustment in their software. This change in software, for a developer like me, would take 30 minutes. When I asked with this vendor, he offered me a quote running into 5 digits US Dollars. That was jaw-dropping and also an eye-opener for me — I did realise that how hard it is for SaaS companies to be flexible. Scale shouldn’t mean inflexibility. At least UXArmy is not, being part of the team which is so agile, I can vouch for it.
By this time, it was clear that we were unable to proceed with “as-is” software of “Vendor A”. With a high-intensity technical feasibility study (Research, software proof-of-concept and benchmarking), I designed an alternative solution that could be developed by our own team and would come to more easy-to-use that the solution of “Vendor A”. By tapping into the Browser framework’s platform for app creation, I devised a Browser extension solution. It achieved the objective of recording desktop videos and incorporated all the features that were part of the solution form “Vendor A”. This experience taught me the importance of having an in-house capability of achieving the desired functionalities without being overly dependent on third parties or vendors. This incident also reinforced the old saying that “Adversity is the mother of Invention” :-)
The Importance of Soft Skills
As a Software Engineer Manager now responsible for a team of 14–15 bright programmers, I also had to develop my leadership skills. In the past, arrogance, anger, and egotism had often clashed with my personal growth and effective teamwork. With dedication and patience, I have been able to maintain consistent success.
I continue to encourage each team member to develop a sense of ownership of the work by helping see how their role contributed to the product and its purpose(s). This has led to improved dedication and motivation, as well as better outcomes. Determination and Patience helps me to focus on the work — and the path forward.
I never expected to see my team size continuously increase over time. In the near future, I feel inspired to come up with ideas that further optimise our workplace — an environment that eliminates the need to monitoring or frees new engineers from being caught in the “experienced” false-belief. Everyone at UXArmy has great ideas on how to improve on team productivity, stress management, and the scope of learning — I feel an ownership to translate these ideas into practical implementation. By continuous sharing my knowledge of latest updates in products, technology, and user behaviour and needs, I strive to keep everyone’s motivation levels high.
My challenge now is to keep sharpening my own programming skills while also contributing towards a greater work culture. A well-circulated proverb stays in mind: “If you want to go fast, go alone. If you want to go far, go together.” At the end of it all, it’s all about self-development and teamwork.
To summarise, just coding skills/programming languages doesn’t take one far in their career, it’s the soft-skills e.g. thoughtfulness, communication and other skills like process optimisation and deployment, helping to create a great work culture in a company that get you leaps into your career. Having said that, the individual’s key skill of programming must be kept shining. So keep ‘sharpening the saw’!
Pramod Kumar is the author of this article. Pramod is part of the incredibly passionate team at UXArmy. He has driven his team to craft an online user testing feature that allows clients to perform usability testing of websites in a whole new way. Besides being a full-stack software developer, he regularly creates technology projects and owns the product feature roadmap. He can be reached at his Twitter handle @pramod1892