Instrumental makes intelligent engineering tools that help product companies find and fix issues on their assembly lines using data. We are working to improve the manufacturing of millions of things every single day. We value diversity and our team is collaborative, supportive, transparent, and pun-tastic.
Our engineering team primarily uses TypeScript, Scala, and Python. We value good tools, robust tests, frequent deploys, and learning. We’re all highly energized by the opportunity for such a large impact.
Join us to modernize manufacturing!
What you’ll do
Instrumental provides a web application to our customers where they can explore their data. The Software Engineering Intern - Dashboard will be responsible for implementing a new aggregated data visualization dashboard to help our customers gain even more insights from their data. As a simple example, this dashboard could have charts visualizing how many units an assembly line is producing each day.
We’re looking for someone who:
- Has strong communication skills
- Is self-motivated; can break down broad tasks into actionable pieces and take them on independently
- Has demonstrated strong attention to detail
- Enjoys the energy of a small team working in a dynamic environment
- Obsesses over the user experience
- Loves data and has a basic understanding of statistics and visualization methods
All candidates must have an unrestricted right to work in the U.S.
We believe that the best way to predict the quality of someone’s future work is to evaluate a sample of existing work. To that end, we request that applicants complete a short assignment.
Evaluation Criteria for the Assignment
We will assess your work on these dimensions:
- robust, meaningful tests
- robust, clear documentation
- readable, well-structured code
Our hiring process involves a discussion of your design decisions and ways to extend your work to support additional requirements. We take the above criteria seriously; it is the most direct way we have to evaluate your technical ability. We expect the code to be at the bar that you consider "production quality."
Assignment: Image-Processing Microlibrary
For the purposes of this assignment, the library only needs to support two transformations:
- Convert the image to grayscale
- Any one of these transforms (we respect your time -- please only implement one):
- Crop the image
- Resize the image
- Or just surprise us with an image transformation of your choice!
Q: Can I use third-party libraries?
A: You may use libraries for any part of the assignment except the core image transformations.
Q: Is it okay to use core language features like the Canvas API to perform the transformations?
A: No, please implement the transformations by operating on pixel data.
Q: What inputs / outputs / interface should my library use?
A: Your interface is up to you, as long as it is documented and straightforward for us to test. For example, if you choose to write a library that accepts a nonstandard data structure as input, it helps to include a client script that accepts an image in a standard format (e.g. an <img> or <canvas> element in a browser context, or a file path in a Node.js context), transforms it to the appropriate data structure, and calls your library.
Q: Does performance matter?
A: We do not explicitly evaluate the performance of your code, although if it is particularly slow, this likely means you have made design decisions that could be improved.
Q: This assignment is underspecified in some other way; what should I do?
A: You can make your own design choices. If something was unclear, it helps if you can document what decisions you made, why you made them, and what alternatives you considered. If you make a decision that introduces constraints (for example, the image types your library supports) please document those.
Submitting your work sample
You can submit your code in one of two ways:
- Package it in a .zip file with your resume and upload it in the resume field on our application form
- Package it in a .zip file and upload it to Google Drive, Dropbox, or a similar service, and then include the link in your application (e.g. in the “Anything else you want us to know?” field)
Please include your name in the name of the packaged folder and .zip file.