From personal experiences, I want to reduce friction during Software Development
I have always been drawn to technology, it was a natural career choice. Over the course of working for many projects and companies, whether a small startup or international company, the biggest issue I repeatedly faced wasn't technical. More often than not, simply getting started is where the most issues occur. I categorize the main difficulties due to one or a combination of the following:
- A lack of materialWhen there is no reference point to start from, you have to reach out for help for every unknown. Typically, you are paired with someone during this time; that means you absorb their biases, method of work, and their own knowledge gaps
- A lack of timeUnless the company has made onbording a priority, the existing (often overworked) team already has priorities and deadlines to fulfill. This can result in a situation where you are waiting on others for seemingly trivial information.
- A lack of motivationCompanies typically hire developers with the idea (and mandate depending on the position) to improve velocity. For the existing team, that might mean adjusting their modus operandi. If you are marked as a disturber of the peace, people will do everything in their power not to help you
Based on the above, regardless of ability, the onboarding experience can turn in to an uphill battle which has negative impacts on both business and staff. The worst case was joining a company where the original developers had left, the existing team had built multiple layers using a variety of technologies on top of the platform because they didn't understand how it worked and were aggressively unhelpful.
At the end of the very first day, paired with the marketing team, I was pulled in to the owners office, and labeled useless because I hadn't deployed a task set to me to production along with the demand to be immediately dismissed.
I survived the meeting, put in a lot of time to reverse engineer the system, and began to get work done. I was there to try and make a positive difference but was spending an inordinate amount of time under attack so, chose to leave after a few months. Discussing the situation with the owner, they understood my decision and we discussed how to improve the situation but, the company ended up shutting down within a few months.
Unfortunately, this kind of problem isn't isolated. I have experience these kinds of issues wherever I worked; the simple result is that time and resources for both employer and employee are needlessly wasted. Throughout my career, the desire for a system that could make the onboarding experience simpler without requiring constant maintenance or attention grew in my mind but, was never addressed. It's a complicated issue that ultimately revolves around empowering people along with the transfer of knowledge.
It was after I became a father, I started valuing my free time more. I love my profession but, I no longer had the motivation or energy to just live to work, I wanted to work to live. After my last position, where I faced a combination of issues with multiple teams at the same time, I was feeling mentally drained and needed a break. I vowed to take a year spending as much time with my daughter as possible but also researching, experimenting, and trying to figure out a better way of technical onboarding so that others could avoid the hassles I faced.
By the end of that year, I had a quite firm idea in my mind of what was required and how to achieve it. People don't prioritize onboarding, it is widely accepted that achieving peak performance takes months and aligning with the internal politics of existing teams regardless of appropriateness. I would need to create something that benefits teams on a daily basis and structure it in such a way the generated artefacts could be used to craft an onboarding experience as a result. I felt confident that was I was building could help others so, made the choice to productize my idea, JoyDX was born.