Here at KUNGFU.AI we are building a terrific engineering-centric culture and continually work at creating an environment where everyone can learn and grow. And it’s not just us who are saying it. We are proud to be recognized as one of the Best Places to Work in Austin in 2020. Our machine learning engineers work in a variety of industries and software stacks alongside other KUNGFU engineers, clients, and our sales team.
Engineers interested in joining our team are emphatically NOT expected to know everything described below before applying. In fact, a diversity of skills, perspectives, experiences, and backgrounds is very important to us. And once you’re a member of the team, you will take part in our KUNGFU.U (i.e., university) program where you can take advantage of resources and mentoring to take your current skills further and advance your career.
With the above in mind, we take diversity and inclusion issues into perspective from beginning to end of our hiring and retention processes. We believe that our teams are stronger when they include people from a wide variety of racial, educational, and class backgrounds and that they are additionally stronger when they include people from all cultures, sexual orientations, and gender presentations, among the myriad of other ways people are different from each other. And, we strongly believe in building and promoting an inclusive culture where people can both feel free to be themselves and where norms counter to inclusion can be prevented from forming in the first place.
The bottom line, please don’t be intimidated about what we’re ideally looking for our engineers to know. If you’re passionate about machine learning then we want to hear from you!
Machine learning (ML) and data science are the core skills that an ML engineer needs in order to be an ML engineer at KUNGFU.AI. While everyone starts somewhere, in our mind an expert-level ML engineer is familiar with a variety of techniques and applications for machine learning. While we aren’t necessarily attached to keyword matching an exact set of techniques and competencies in order to say that you’ve “made it” to the expert level, some examples of techniques include traditional machine learning approaches like ensembles of decision trees, naïve bayes, logistic regression, as well as a variety of deep learning methods like basic feed-forward neural networks, convolution, and recursion. An expert level machine learning engineer should also be conversant with transfer learning techniques involving pre-trained publicly available models. Above all, they should be intelligent about how to apply various approaches, and whether an application is suited for, say, supervised or unsupervised techniques.
In addition to competency with algorithms, it is important for an ML engineer to be conversant with various techniques for cleaning, munging, and interpreting data. This should include some knowledge about feature reduction and augmentation, and ideally, some ability to do visualizations.
Finally, an expert-level ML engineer should have some experience with at least some of the major verticals of contemporary AI, which include, but are not limited to, natural language processing, computer vision, and time-series forecasting. The core reason for this is that having a specialty in a particular vertical will give the engineer the ability to assess the viability of a project, the applicability of techniques that they know to other projects, and will generally make solutions easier and faster.
Unlike software companies, we don’t build repackageable products over many years with little interaction outside of the engineering team. ML engineering at KUNGFU.AI is very client-facing, and project scopes range from short-term prototypes to longer-term full-scale development and deployment. We are generally involved in projects much earlier in the project lifecycle than many other engineers would be, taking on a lot of the initial data exploration, scoping, and “what is even possible?” questions that are often handled by-product management in product companies. With this in mind, an ideal candidate is one that has had some experience directly interacting with clients and rapidly getting projects up and running.
These competencies can come from a variety of places, and there is definitely no true platonic ideal resume. Some successful past paths to our team have involved candidates who worked at an early-stage startup that required a lot of direct communication with clients and product teams. Others have included performing a team lead role with onsite deployment experience. And some simply had previous consulting experience.
Irrespective of the source of the experience, working independently at KUNGFU.AI does require that an engineer have the ability to communicate directly with clients and to take a long view of how client engagements go, and a vision for a software lifecycle that goes beyond being a monster that eats JIRA tickets and spits out code. Regardless of where you are on your journey in working with clients, we’re here to support your personal and professional growth. One of the vectors of KUNGFU.U is focused on improving our team’s consulting and client engagement skills.
As a consultancy, KUNGFU.AI asks for more software engineering capacity from its engineers than is typical for a data scientist. Since we are on finite-time engagements with our clients, we typically have to deliver solutions that will either be readable by a client’s engineers or able to run on their own for indefinite periods of time without manual intervention. With this in mind, an ideal candidate should be reasonably fluent in at least one programming language and be able to communicate the core design concepts of that language. While the reality of the contemporary data science world means that this language is probably Python (and the attendant satellite system of supporting libraries for Python like pandas and numpy), we also do not mean to rule out competent engineers whose primary languages have been, for whatever reason, R, Go, Julia, Scala, Java, or C/C++, as all of these languages have useful applications to the ML world. More important than WHAT a candidate is good at as far as programming is concerned, it is important that they are good at SOMETHING in particular. It’s much easier for a Java programmer to learn Python than it is to teach a non-programmer Python, after all.
Also, with this in mind, we are different from most data science ventures in that we are typically not taking on projects where a client gives us a .csv file and tells us to find insights. We are very often connecting to production systems or mirrors of production systems, and being asked to create working subcomponents that will be used in production. So, with this in mind, it is important for our ML engineers to be conversant with various data extraction techniques typically more associated with production systems. This can mean that they are SQL experts, but it can also mean that they know how to do data munging via bash, that they can connect Kafka topics into working workflow pipelines, or that they are wizards with popular cloud frameworks. Irrespectively, it is important that they understand data very well, typically more than you would expect from a specialized data scientist at a large company.
Finally, this connection with customer production also demands that our ideal candidates should know something about software design appropriate to the frameworks that they already know. Knowing the advantages of various design choices like stateless systems, MVC, microservices, and object-oriented and functional programming would serve us well as clients will uniformly be using at least some of these paradigms in their existing systems.
Increasingly, the software industry is living in the cloud and operating at scale, and AI is almost inherently married to big data. With this in mind, an ideal ML engineer candidate should know something about modern DevOps, including familiarity with cloud frameworks such as AWS, GCP, or Azure, and have knowledge of virtualization and containerization, which would involve a system like VMWare or Docker, and deployment tools such as Kubernetes, Ansible, and Terraform. This subheading is probably the starkest in “you know it or you don’t” terms, but it is probably also the most learnable. Again, don’t hesitate to apply for a role at KUNGFU.AI just because you don’t know something as everyone at the company is engaged in continuous learning.
Engineering Title Descriptions
With all this as background, here’s how we think of the skill levels associated with the three tiers of machine learning engineers at KUNGFU.AI.
Principal ML Engineer:
A Principal Engineer is our senior-most engineer and is capable of running the technical side of a small to medium-sized client engagement on their own. With this in mind, a Principal engineer should have a high enough proficiency in at least one of the core ML skill sets to be able to add value with minimal help, but they also need to have enough generalized software engineering and ML knowledge and experience that they can reasonably bring a project from blank page to production. With all of this comes an expectation that a Principal will be able to directly communicate intelligently and responsibly with clients and be able to lead a team on the KUNGFU.AI side of an engagement. The most experienced Principal ML engineers would be candidates to eventually become consulting practice leads within KUNGFU.AI as well as contribute to our prominence in the industry through conference presentations and/or publications.
The education level can vary here, but a typical Principal level engineer will either have a doctorate in a relevant field plus a year of relevant industry experience. Or they will have a master's plus roughly five years of experience, or alternately, be able to contribute original research plus significant industry experience.
As a side note, it is traditional to think of a ‘relevant field’ as being the narrow sort set of “technical fields” like computer science, statistics, physics, or math. But, as statistical modeling has grown in importance, the techniques of data science and machine learning have come to intersect with a wide range of academic disciplines, including, but not limited to computational biology, genetics, physical chemistry, linguistics, economics, and political science. Basically anything where someone takes in noisy numerical data and has to come up with a statistically based model to look at the real world. We are open and flexible on educational requirements because we know people learn in different ways and can come to possess expertise from a variety of sources.
Senior ML Engineer
A Senior engineer is an experienced ML engineer or data scientist who is working their way toward the Principal level. This might mean that they do not have experience leading teams, are new to client engagements, are missing some experience with one of the core ML engineer competencies, or perhaps are not experts in any one single area. That said, Senior ML engineers can be team leads, and, as they gain experience, increasingly take more and more client-facing roles and manage more and more of the full stack. While they might not be able to handle a whole project end-to-end without supervision, Senior ML engineers will typically be able to generally work day-to-day without much help or supervision. Similar to Principal level engineers, Senior-level engineers will have varying levels of education and experience, but as a baseline, one would expect a Senior-level engineer to have a relevant master's degree plus a year of relevant industry experience, or to have a bachelors plus five years of industry experience. With this said and like we said above, we are open and flexible on educational requirements because we know people learn and can come to gain expertise in a variety of different ways.
An ML engineer is our entry-level engineering role. They may be fresh out of a professional certification course, or have recently transitioned to a data science career from some other part of the tech industry. They will often have one aspect of the job that they are very good at and other aspects where they are in need of more experience. As an ML engineer advances, they should be expanding beyond their core competencies onto the more generalized skill set expected of the higher-level engineers. Typically, an ML engineer will work on a team that will require some help on a regular basis, but at the same time, will often have a fresher perspective on the industry, and perhaps even a closer connection to recent research than the other engineers, due to the recency of their entering the field.
We want to hear from you!
If you are interested in what you’ve read and passionate about machine learning, visit our careers page and learn more about KUNGFU.AI and our terrific team. We look forward to hearing from you!