A day in the life: Joshua Johnson and Bhavik Bhagat at work
Can you give us a picture of what your days tend to be like?
Each day is unique: some days are focused on planning and scheduling business needs and the speed at which we can deliver new solutions for our internal engineering teams. Others will be actively debugging issues with the teams, mentoring members across the organization, reviewing pull requests, or working on reviews of architecture designs for new solutions products.
My day starts with a standup with the team, which are distributed across three different time zones. Post-standup, the first half of the day is mostly spent on planning activities, cross-team coordination, feature grooming sessions, etc. The second half of the day is spent with the team on various activities such as 1:1s, debugging problems with them, reviewing code, discussing functional requirements or technical designs, and more.
How did you get involved with this work?
Well, going far enough back, Open Source was the cause of my getting into engineering as a profession. I started leveraging it for my own growth and learning, then eventually submitted fixes to projects. This led to becoming a developer for Gentoo Linux, which snowballed into the career that I’ve been fortunate to be in for the past nearly 20 years.
The passion for computers started early with computer games and animations in the movies. As a curious teenager, I wanted to know how these animations or graphics were made and how I could make them. One of the first things I learned was a graphic design tool called Corel Draw 8, which allowed me to create 2D graphics.
Though my initial interest in graphics and animations faded, it led to my interest in programming. I started my programming journey by learning C, Visual FoxPro, and eventually Java, which helped me land my first job as a backend developer. Most recently, I’ve worked on Objective-C and Swift.
What feeds your interest in your work?
There are a few things that drive my interest and passion for work. Having a variety of daily challenges and needs keeps each day unique and interesting. Mentorship—both received from my leadership and that I provide to others in the organization—certainly informs my joy my work.
I’ve also been fortunate to work for companies that impact people’s lives. In the case of Jobvite, what we do enables folks to find the next opportunity to grow in their profession. It also allows companies to find that perfect candidate to help them grow and enhance their local communities, and those both drive a desire to continue to make that process better for everyone.
There are a few things that keep me interested and motivated in the work that I do. First: being able to build things that help our customers (small or large) succeed.
The second is solving the unique problems and challenges the team faces day in and day out. Both result in learning and growing as an individual, as a team, and as a company.
The last thing is company culture and values. I have been fortunate to work for companies with great cultures, with values that align with what I believe in.
Using AppDynamics in your work
AppDynamics is a key component in our ability to ensure the Jobvite solution’s reliability for our customers. It’s the first spot we’ll look to when there’s a customer report of slow performance. We can look at the application tiers as a whole, or get deep down into the customer session-level to see if the issue is specific to them, their location, or other potential causes.
One of the most interesting use cases was during our migration from MSSQL to Amazon Aurora. We did a huge amount of testing and partnered with AppDynamics to drive a decision-based understanding of the performance. This allowed us to identify particular functions and use cases where things were underperforming. The rollout would have been impacted if we had not had the data to prove where our issues were occurring.
The other more recent one has been leveraging Rookout, which allows us to create breakpoints within the app that capture object contents in the live running system without interrupting customer workloads. It’s been a huge driver in resolving issues quicker.
AppD is the first place we start investigating when our customers report a performance issue. We use AppDynamics as a key tool for continuous monitoring of all our microservices. We have extensive health rules and policies set up to alert our engineering teams whenever any health rule is violated, or when an anomaly is detected, using Anomaly Detection provided by AppD.
Apart from using it for continuous monitoring and debugging, we use AppD Dashboards very heavily to look for improvement areas.
For example, a couple of our critical microservices had a 1.5% errors-per-minute ratio during peak hours. We had never noticed this until we created a dashboard to look at the health of our tiers. After actively working on this, we brought the ratio down to be less than 0.1%. Now we have dashboards created for each team, which are projected on TV screens throughout our offices.
What are your top 2 AppDynamics hot tips?
Leverage automatic heap dump/thread dumping capability triggers when performance reaches a level that shows signs of problems. Those traces are critical for success in identifying intermittent issues.
Create deployment events within AppDynamics to allow you to review behavior changes over time. It’s not always obvious when performance changes. Being able to work through it backwards via data to a specific release, where you can subsequently use VCS tools to identify the root cause, goes a long way to quickly getting to the root cause.
Create custom dashboards to drive visible improvements in the critical areas of your application
EnableAnomaly Detection. It works well and catches the issues that you are not actively monitoring
Tracking Tech Trends
What’s your best way of keeping up with industry news?
A lot of things tend to come from different sources. Social media — such as Twitter, Linkedin, Reddit, etc. — certainly pulls info. Documentation from other projects also drives some learnings. Apart from those sources, it’s a matter of curiosity and wanting to understand the next things coming out and how the business could be heading towards using them in the future.
I follow key technical folks on Twitter, LinkedIn and look for updates from them. Occasionally, I attend conferences around the topics I am most interested in. Apart from that, I read The Hacker News.
What have you learned in the past year that you wish you had known when you started your career?
Test-driven development — while it can feel like a slowing down — actually drives long term speed and capabilities you might not otherwise have as a team.
Documenting your classes and methods is critical to ensure a future understanding of why things might have been done a certain way.
Delegating sounds simple, but it’s a tricky thing to master.
Is there anything you’d like to shout out or elevate?
Never stop growing. As people, we are on a constant journey of personal improvement. We can find the right career or position for you, but you never stop growing as a person.
Be kind, be empathetic; don’t judge. Also, don’t stop learning.
How—or where—do you find inspiration?
Gardening and Cooking/Baking are probably some of my favorite things to do outside of work. They allow me to use different capabilities, and one feeds into the other.
My family/friends are the drivers of my inspiration. I ultimately do what I do for and because of them, and wanting to make a better world/place for them and the next generations.
I mostly get my dose of inspiration from books, blogs, and the people around me. The last book I read was Trillion Dollar Coach. It was a great read on how to become a good leader and not just a manager.
Insights to Share
What advice would you give someone who is up and coming in your field of work?
It’s okay to fail or ask questions. There is no such thing as a stupid question. If you don’t understand, ask for help.
Lean into challenges and the unknown. As Bhavik mentioned, it’s alright to fail and not to know everything.