August 12, 2020
A love for learning is a quality that I have always looked for in peers and teammates. It’s one that I’ve had the opportunity and privilege to invest in daily over the past nine months here at Ippon Technologies USA. To me, a commitment to learning requires humility to accept that we often have far more questions than answers to a problem.
When we commit ourselves to learning, we are promising to always seek self-improvement: to honor our questions, seek better understanding, and be a better version of ourselves today than we were yesterday. In the workplace, a love for learning means we are honest and accountable with our teammates. More importantly, we support and believe in each other’s growth. It was this exact quality that drew me to working at Ippon.
In fact, it was around this time last year that I accepted an offer to intern over the summer with Ippon in the Richmond, VA office. Thrilled to return to my hometown for the summer, I also marveled at the idea of finally getting hands-on experience in the software industry with talented folks whose values aligned with mine. However, as was the case with the rest of the world, the global pandemic quickly uprooted my plans for the future. Faced with growing uncertainty about the year ahead, I decided to delay my senior year of college, and I was extremely fortunate to extend my remote internship with Ippon into a full-time student software engineer position.
I cannot express enough gratitude to the many mentors who have taught me over the past nine months, especially my managers Ben Scott and Amine Ouali Alami, whose humility and leadership I can only hope to emulate one day. This blog post chronicles my nine-month deep-dive into the industry and reflects on the challenges I’ve encountered, as well as the lessons I’ve learned.
During my internship with Ippon, I had my first introduction to several software engineering concepts and tooling, which, to the average software engineer, are run-of-the-mill household names. I learned about and gained experience with Agile software development, version control, layered architectures, and continuous integration/continuous development (CI/CD) processes. If that wasn’t enough, I was also introduced to numerous technologies such as AWS cloud resources, React, Redux, Spring Boot, PostgreSQL, and most importantly, Ippon's in-house platform, JHipster.
I spent the summer working alongside a team of three other interns developing an in-house application to collect results on clients’ assessments of their design, CI/CD, and testing processes, among other areas of software development workflow. While we each set out working on our own stories in our relative comfort zones (front-end versus back-end), we had all stepped into full-stack development roles and even began designing new components for the application within a few weeks.
As the application progressed, I had the opportunity to design the user experience for authoring a new assessment from scratch, which involved creating hierarchies of categories, questions, and answers. I ended up developing both the front and back ends of the component for creating questions and answers, so I was able to watch my ideas evolve from conception to implementation into production. It was immensely rewarding to not only design a user experience for the first time, but then enable its full development, knowing the final product would serve the company in a meaningful way.
When I first pictured myself working full-time in fraud prevention for a banking client, I imagined myself pouring over database records, constructing complex queries to catch fraud. I was intimidated, to say the least. While there are indeed analysts in the trenches running queries to discover new patterns and sources of fraud, I was naive to my role as an engineer in the process of stopping fraud.
The team I worked with for the past nine months in fact maintains the engine that runs analyst-authored rules to detect fraudulent transactions in real time. My team also developed and maintains a platform for enabling A/B testing of such rules against near-real data before sending the rules off to production, eliminating the risks of releasing mal-authored rules and enabling intent = execution
validation. While the team and organization still devote a considerable amount of developer time to ‘keeping the lights on,’ much of my work over the past nine months contributed to a larger effort to automate various processes and unlock more developer bandwidth to continue iterating on and innovating the next version of the platform.
My first engagement with this team involved upgrading our rule testing platform to a higher tier of resiliency, by making the infrastructure “active/active.” Despite the intimidation of my first assignment, I was still excited to put my abilities to learn on-the-fly to the test. I paired with a teammate who joined the company at the same time I did, and together we learned about Jenkins pipelines, AWS Lambda/ELB/EC2/Route53 and their interactions with one another, as well as how to deploy them all using the company's custom deployment processes. These technologies were just the tip of the iceberg-sized tech stack that I worked with over the next nine months: among others, I got hands-on experience with Docker, Kubernetes, and Maven (maybe even a little too much experience with Maven dependency management... if you know, you know).
More recently, I was able to wipe the dust off my skills designing user experiences while redesigning components for our rules testing platform. As the company matures, a common goal among leaders has been the idea of convergence. As such, other organizations have begun looking to this rules testing platform to accelerate and streamline what tends to be a clunky and time-consuming validation process. Whereas during my internship, I was only designing for one user, I quickly realized how much more of a balancing act it is to design for multiple use cases – some of which we don't necessarily realize exist yet. Many of the questions we asked led to dozens more questions asked than we started with, and some of the assumptions we had made ended up flipped on their heads. But what helped guide us through every complicated discussion and change in plans was calling out risks early on, readiness to adapt, and sticking to a concrete set of design principles.
If I had to pick the most surprising component of my work with this client, it would be the few times I went "on call" for 24 hours at a time as the first line of defense to answer any alerts triggered by issues in production. While I won't miss being woken up in the middle of the night by mysterious robo-calls, there was a certain level of importance and impact that I felt in being that first line of support. Type 2 fun, let's call it.
If you’ve ever researched how to learn a new skill efficiently, you may already know that the best way is to practice every day. Ipponites are encouraged to invest a little bit of time every day to learn something new, and it’s almost impossible to not be inspired by new curiosities with all the resources and opportunities that Ippon makes available. As an intern, CLIPs (short learning modules) helped me accelerate my learning, especially around testing Java microservices. Even as a full-time engineer, I still come back to them, but by far my favorite opportunity to learn has been Ippon Day: a full day ‘conference’ dedicated to presentations and workshops hosted by other Ipponites. I had the opportunity to demo integrating Amazon Alexa with an external API, and I especially enjoyed just listening to colleagues talk so passionately about their personal projects, various interests, and learnings from them.
While I (and everyone else working from home) have been extremely privileged to work from home for the past year, it has also presented its own set of unforeseen challenges. For me, focus (or lack thereof) became a daily obstacle, which became difficult to decipher from general burnout. And what became particularly difficult was the accompanying imposter syndrome, the feeling of not seeing oneself as ‘fit for the job,’ when we all owe ourselves so much more grace than that. Contextualizing our circumstances has become so important to maintaining self-care during the pandemic, especially when it comes to our definitions of productivity and worthiness. If there’s one lesson we can all take away from this experience of working remotely, I hope it is this idea of grace and reflecting internally on how we measure success and sense of worth.
Taking time off from school to gain experience in a professional work environment has taught me so much more than I was expecting to learn, not only in my technical skills but also in my time management, workflow, and goals for the future. These past nine months have given me the chance to pause and reflect on what I’ve accomplished in college so far, and what I want to accomplish in my last year with the experiential context of what life can look like after college.
As I look ahead to the next year, I know I will miss all the amazing resources, knowledge sharing, and engaging work that defined my experience with Ippon. What I will miss most, however, is not a what, but a who: The folks at Ippon are a special community of people who jump at the opportunity to uplift one another because they care deeply about people, not just work. I’m immensely grateful to have been a part of this community and to have benefited from the graciousness of so many talented people.