Justin Wernick - Curriculum Vitae

Justin Wernick <>
Curly Tail, Curly Braces

Skills

Software Engineering

I first put software that I had written on the internet in 2006. This sparked a passion for writing software that eventually lead to me being a professional software engineer in 2012.

I have worked professionally in a number of languages and platforms, including JavaScript for web application frontends and browser extensions, Scala and C# for web server backends, and Ansible and shell scripts to write and deploy developer tools. I've also used Rust for a wide variety of platforms, including WebAssembly web frontends, web server backends, and command line applications.

Web Development

One of the areas that I have spent a lot of time in is creating web applications. These range in complexity from static websites all the way up to single page web applications that connect to a REST API. In these projects, I have been involved in the full stack, from the front end to the database, as well as the scripts and continuous delivery pipelines used to push it out into the world.

Collaboration using Version Control and Continuous Delivery

I am well versed in the Git version control system. I have also set up and worked with continuous integration builds and single click deployments using several CI platforms including GitLab CI, GoCD, and TeamCity.

Public Speaking

I have experience in presenting my designs and ideas to groups. This includes informal settings like discussing ideas over coffee, more formal presentations like internal brown bag sessions, and public speaking at events like conferences and meetups.

Technical Writing

Public speaking is good for spreading information, but I find it is useful in the long term to have a written reference for technical concepts as well. I am able to explain technical concepts in writing, and I maintain my own website where I write about programming.

Agile Project Management

I have found agile project and team management techniques to be effective. It is especially useful to work in such a way as to be continuously releasing small pieces of code, collaborating closely, and regularly discussing how to improve the process of developing software in the current context. I have experience in prioritizing what to work on next, incremental design, and running team retrospectives.

Working Remotely

I have been working remotely full time from my home office since 2020. I am effective at managing my own time, and communicating both asynchronously in text and synchronously in video calls.

Employers

2021 to present - EyeO - Senior Software Engineer

I joined EyeO in 2021 to work on their advert filtering web browser extension platform. Initially this was only on the shared SDK backend that performs the ad filtering. Over time my area of responsibility has expanded to include both the AdBlock and Adblock Plus browser extensions that use this SDK as well.

Working remotely in a larger organization

EyeO is a remote company. Unlike my previous remote role, EyeO is a large organization and so required coordinating with multiple teams, all remotely.

Maintaining stability in a product used by millions

The projects that I am working on at EyeO have hundreds of millions of active installs. This makes stability and thorough testing before release essential. It also adds additional interesting challenges during development, since any servers that the products connect to need to be able to scale to accomodate this many concurrent users.

Technologies

The primary technologies that I use at EyeO are:

2020 to 2021 - Panoptix - Software Engineer

I joined Panoptix in 2020 to work on their Hotrod product. Hotrod is a system for creating and managing distributed data pipelines, allowing data to be transformed at the edge. These data pipelines are defined using a domain specific language which we created.

Juggling many roles on a small team

At Panoptix, the company was four people including myself. With a small team, everyone has to juggle many different responsibilities. Some of the areas where I had an impact were maintaining our CI pipelines, setting up an automated deployment process based on Git tags, and spearheading the creation of a web browser based administration GUI.

Working remotely in a small company

Panoptix is a remote first company. I helped to establish and maintain rituals for communication, including having daily catch up meetings, retrospectives, and occasional in person social gatherings.

Technologies

The primary technologies that I used at Panoptix are:

2017 to 2020 - Jemstep by Invesco - Software Engineering Squad Lead

I joined Jemstep in 2017 as a Senior Software Engineer to help build their web application for offering automated investment advice.

In 2018, I joined the Developer Productivity team. In this team, I was responsible for improving Jemstep's internal tooling and performing large scale refactorings of the code base. In late 2019, the team structure in the organization shifted and I took on the role of team lead for the Platform and Tools team.

Team leadership

I'd taken on leadership responsibilities in my previous roles, but Jemstep was my first official leadership position.

Technical leadership in a larger team and project

During my time at Jemstep, I was involved in shaping the technical direction of the company and implementing some of the core parts of Jemstep's product.

With Jemstep being a large, and growing, company, this required me to take many other people into account. This included a variety of personal preferences, experience levels, and backgrounds.

Self-directed exploration to find ways to improve tooling

In the Developer Productivity team, I was tasked with finding ways to improve the internal development tooling. Within the team, we had a large degree of autonomy in defining our own backlog. I was able to do large refactorings of the codebase to improve its compilation time, and rewrite some of our internal tooling to be both more reliable and more efficient.

Technologies

The primary technologies that I used while working at Jemstep are:

2012 to 2017 - Entelect Software - Senior Software Engineer

I joined Entelect as an intern software engineer while I was still studying. After I completed my degree at the end of 2012, they hired me as a software engineer.

Entelect is a software engineering consulting company, and while working for them I saw several projects through to completion in many different business domains and technology stacks. I was promoted to the position of senior software engineer in 2014.

Getting up to speed with new business domains quickly

While working at Entelect, I tackled several small projects that covered a variety of business domains, including finance, importing, and medicine. I had to be able to get up to speed with the business domain and its terminology quickly.

Running meetings with clients

A core part of running a successful project was keeping the client and end users involved. I ran regular meetings with clients where the current progress of the project was demonstrated and feedback was gathered to improve the project in the next sprint.

Mentorship and technical leadership in small teams

The teams I worked on at Entelect were typically small and focused on a single project. Especially towards the end of my time at Entelect, I would take on the role of technical leadership of the project. This included overseeing the technical decisions of the project, mentoring junior developers, and always being available to discuss the technical aspects of the project.

Technologies

The primary technologies that I used while working at Entelect are:

Voluntary Organizations

2018 to 2021 - Johannesburg Rust Meetup - Organizer and Facilitator

The Johannesburg Rust Meetup was a monthly social gathering for South African Rust enthusiasts. I joined the meetup when it was just three people meeting in a coffee shop. I negotiated with my employer at the time to sponsor the meetup by providing a venue and refreshments. Later, when Covid lockdowns prevented meeting in person, I took the event online.

Education

2012 - University of the Witwatersrand - Bachelor of Science in Engineering

I studied Electrical Engineering through the University of Witwatersrand. At Wits, this degree has a split in the third year between the heavy current option and the information systems option. I took the information engineering option, and so my degree covered more software engineering and communication systems.

I graduated with distinction at the end of 2012.

Professional Interests

Open Source

I believe in the value of free and open source technology, and try to use it wherever possible. I am much happier including libraries in my own projects if I'm able to inspect their code, see how it works, and fork the project or provide fixes upstream if necessary.

I have published code that I've written in my personal capacity with open source licenses, including a popular JavaScript library for validating South African ID numbers.

Solving Challenging Problems

I have a special interest in solving computationally challenging problems. By this, I mean problems that have strict requirements in terms of performance and throughput, problems that need to manage large amounts of data, or problems where an optimal solution is not obvious or may not exist at all.

Responding to Real World Problems

When working on a software system, I believe that the value of the software is in what it allows people to achieve with it. Keeping the people that use the system in mind, and the actual task they are trying to perform, results in a much better end product.

Testimonials

I've had the privledge to work with many incredible people in my career. These are a few references that others have written about me. Contact information is available on request.

Sandra Passetti - Colleague at Jemstep

I worked with Justin at Jemstep, where we started as engineers in the same squad and later moved on to leading squads of our own. Justin is kind and empathetic to those around him. He has a real passion for and an amazing wealth of knowledge about software development. I think he would be a great addition to any team.

-- Sandra Passetti

Louis Lotter - Colleague at Jemstep

I have had the distinct pleasure of working alongside Justin Wernick, and I can affirm that his skill set and professionalism place him among the best in the engineering community. His ability to produce high-quality work consistently sets him apart and has a magnifying impact on team productivity.

During our time together, Justin's enthusiasm for programming and technology reignited my own passion for the craft. His proficiency doesn't just extend to his coding skills; he also excels in teamwork and communication. We built an incredible product, participated in coding challenges, and the level of sportsmanship and camaraderie he brought made every interaction a fun learning experience for all involved.

Justin is not merely a standout professional; he is also someone who makes lasting impressions on his colleagues. Any organization would benefit greatly from his technical acumen and exceptional team spirit.

I highly recommend Justin Wernick for any engineering role, confident that he will continue to excel and inspire those fortunate enough to work beside him.

-- Louis Lotter

Edward Steere - Colleague at Entelect and Jemstep

Justin deeply understands the fundamentals that lead to robust, effective software. His attention to detail is second to none that I've worked with, and I benefitted greatly from working with him.

Over the years that I worked in his team, I looked forward to enthusiastic discussions about the pitfalls of systems programming that Rust intends to address, the algorithms that each of us discovered and researched for competitive programming competitions and the blind spots in the way our team handled the company's needs. Justin has a passion for the craft. His patience to research and understand problems improves his software and offers learning opportunities to those around him.

I wouldn't hesitate to recommend Justin wholly. Any team that takes Justin on can expect him to engage with the problem space and apply himself to understanding and improving the team, product and development process.

-- Edward Steere

Mercia Malan - Colleague at Jemstep

I worked with Justin on an enabling team (see team topologies) in Jemstep. It was a tough team to be in as our purpose was to create tools and standards that will enable other teams to go faster, increase code quality across the board and technically support other teams. This means that it's not a team driven by client deliverables but rather requires knowledge of what other teams are struggling with, where the largest technical debt in the system is and then figuring out how best to improve that and also communicate improvements to everyone.

Justin was the tech lead of this team and did an amazing job at finding out what the rest of the teams are doing, found interesting and engaging ways to communicate to other teams what improvements we've been doing, and on top of that was an awesome team lead. His technical abilities are inspiring and I learnt a lot from him while we worked together! He also looked after our team and bonded us together, so much so that we still keep in touch 4 years after we’ve all left the company.

I would work with Justin again any time!

-- Mercia Malan