A scientist will thrive at Enthought if their passion for software is as deep and ingrained as their scientific interests.
The developers at Enthought come from varied backgrounds and have taken many different journeys on their way to their current role. There is no typical developer at Enthought, but one quality they all share is that their passion for software is as deep and ingrained as their interest in science. Many of our developers chose to pursue a science or math degree in school, but were strongly tempted by the CS route. In the end, they figured they could pick up the CS on the side more easily than the physics, math, and engineering.
A few of our developers shared their stories about coming to Enthought and how their careers have evolved since they have been here.
Throughout my academic career in Physics I had always been looking for projects that involve lots of computing. Every new programming language is like a new toy to me and I took every opportunity to learn them, even if they may be the wrong tools for the problems: C++ for simulating photons in a tank; PHP and R for displaying figures on a webpage; Java is not designed for scientific computing, but I went to learn it anyway. When I eventually came to Python, I loved it. Soon enough I would think not just about time and memory optimisation (the usual suspects) but design patterns, reusability, automated testing, maintenance, backward compatibility, so on and on. I decided that it would be better for me to do this full-time.
Enthought is where I can do lots of computing professionally while staying close to science to keep my scientific self happy. At Enthought, I have worked on projects related to material sciences and fibre-optic sensing. I also had the opportunity to build GUI applications with Qt and Wx, use VTK for 3D visualisation, build a web application with Tornado, deploy using Docker etc, all of which I found very satisfying. I also advanced from dealing only with Linux to having to build softwares for Windows and OSX. Now every new skill is a new toy to me and I keep finding new ways to play with them.
Despite an academic background in pure mathematics, I've always been at least part developer at heart. From writing Mandelbrot set explorers in 68000 assembly language in the late 1980s, through implementing probabilistic component-failure models in Fortran 77 during the summers while I was an undergraduate, to using Python, Magma, OCaml and many other tools and languages for mathematics research, there's rarely been a time when I wasn't programming in one language or another.
I started exploring Python as a graduate student in the late 90s, using it for both day-to-day administration tasks and experimental computations, and finding that the language "fit my brain". While using Python to teach a lab course in elementary number theory as a postdoc, I found and submitted fixes for several bugs in Python's (then relatively new) "decimal" module. One thing led to another, and I joined the Python core development team and the Python Software Foundation in 2008, and since then have made thousands of commits to the Python core and been involved with much of the mathematics and floating-point-related parts of Python.
When I eventually left academia, I was looking for a software development position (ideally using Python) that nevertheless offered me a chance to make use of my mathematical and scientific background. Enthought's mix of Python-based development and scientific consulting projects seemed like a perfect fit; as a bonus, I also found the opportunity to teach our intensive Python and data analysis courses immensely satisfying. Since joining Enthought, I've been involved with around a dozen different projects, from electron microscopy, to collating and analysing alternative energy source data from around Europe, to nanopore DNA sequencing, to distributed acoustic sensing using optic fibers, and much more. Every single one of those projects has had something more to teach me about a new area of science, new ways of thinking about software architecture, or new technical tools, and I'm still learning.
The path to my current position as a product manager at Enthought has followed a meandering route fueled by long-held interests in science, mechanical things, and computers. From an early age I was disassembling and reassembling my toys, "fixing" anything I could get my hands on, and learning whatever I could about programming, starting with my brother's TI-99/4A. My formal training has all been in Mechanical Engineering, and while I enjoy woodworking and working on cars, on the job, I was always "the engineer that could program" and tended to gravitate toward coding projects. This was the case during my college years, in my role as an engineer for Michelin R&D, and again during my return to graduate school for a doctorate. It was as a postdoctoral research fellow that I fell in love with Python programming and taught myself the basics of scientific computing with NumPy and SciPy and GUI programming with Traits and Chaco. It was at this point that I joined Enthought.
My skills as a developer improved rapidly in the first few months as I made the transition from grad-school style solo projects to professional coder and learned about code review and software architecture and mastered version control and collaborative coding. The engineering content has been more than I experienced in my previous R&D job but less than in the university research environment. I rapidly became a contributing member of a project team and worked on a number of interesting projects. I also expressed an interest in teaching and began to deliver our Python for Scientists and Engineers course, which has brought me in contact with a lot of bright people working on interesting projects. Eventually, I started to lead project teams and develop my project management and leadership skills. Today I manage the development of several of our products and continue to have an active role in a number of interesting engineering projects.
I joined Enthought in May 2015 after getting a PhD in computational condensed matter physics. I had decided to leave the academic world in search of a new challenge and, since software development was a major part of my work, I was looking for opportunities in this direction. When I heard about Enthought I immediately thought it would be a good fit: I would be able to grow my technical skills while working on interesting scientific projects with a great team.
After joining the company as a Scientific Software Developer, I worked on developing data analysis and visualization tools for a new single-molecule DNA sequencing chip. It has been very rewarding to learn more about bioinformatics and state-of-the-art DNA sequencing and to have the opportunity to explore new tools and technologies, from getting a deeper look at machine learning algorithms to GUI programming, from learning how to design a robust architecture to front and back end development. After about a year on the project, I also took over Project Management duties.
Being part of Enthought has been very exciting, I have been able to grow as a developer and have felt that my contributions have really helped shape the company and contribute to its continued success.
If you've played with Erlang to see what all the fuss is about, good. If you've ever answered that your favorite language is Lisp or Haskell, pat yourself on your back. Now, please come use Python.
The day-to-day at Enthought revolves around making high quality architectural decisions about how we structure client projects so that they are extensible and maintainable — UI frameworks that simplify building "pluggable" applications, display libraries for highly interactive visualizations, and domain-specific scientific tools that are comfortable for specialists to live in and flexible enough for them to mold around their ever-changing jobs. It rarely, if ever, centers on squeezing 10% more out of some signal processing algorithm.