Parametric, headquartered in Seattle, WA, is a leading global asset management firm providing systematic, rules-based investment strategies and customized exposure management to institutions and individual investors around the world. We take an engineer’s approach to asset management - mathematical, pragmatic and testable. Parametric portfolio managers act as investment "engineers," creating portfolios with explicit risk and return targets and continually measuring and managing the impact of relevant costs. Our approaches are, at their roots, quantitative and rules-based. They evolve slowly, as they don’t require repeated tactical insights into valuations or market direction. Parametric is a majority-owned subsidiary of Eaton Vance Corp. and offers these capabilities through investment centers in Seattle, WA, Minneapolis, MN and Westport, CT (home to Parametric subsidiary Parametric Risk Advisors LLC, an SEC-registered investment adviser).
About You
Most of the points below resonate with you.
- You care about quality software development. For you, it's more than a job.
- You understand that there is more to software engineering than just getting it to work--that keeping it working over time is a greater challenge.
- You believe good software development is not just a technical exercise. Great software teams are composed of people working well together. This is something you strive for and help facilitate in many of the teams you have been on.
- You are committed to TDD and Continuous Integration.
- You want to share your experience, judgment, and wisdom with up-and-coming developers.
- You care about clear communication with the business and your team to make sure you are building the right thing in a reasonable time frame.
- You are interested in full-stack development. You want to feel your impact on the entire application stack from the databases, the services used, to the UI.
- You follow the activities and opinions of other developers through books, blogs, podcasts, local communities or social media.
- You want to work with people that you can learn from, and who will learn from you.
- You have one or more side-projects in various stages of completion.
- You enjoy the challenge of migrating a code base from its current state toward something better over time.
Maintenance
We use the software we write to run our organization. There is some new development, but most of our work is maintenance-oriented. The challenge we face is to add or change features in an existing application that you didn't write without breaking existing functionality. To accomplish this, we rely heavily on automated testing encompassing both unit and integration tests.
TDD
We are committed to Test Driven Development as an integral part of our development process. How much experience do you have with TDD? How did you discover TDD? How have you used TDD in a recent project? What problems have you faced? How did you solve them?
In this role you will be expected to cover as much of your production code as possible with tests. You'll be expected to work with developers and QA to make sure we have adequate automated test coverage of new work. You should have in depth of experience in TDD. You haven't just 'read about it', you've been there with your fellow developers learning what works / doesn't work and when. Other people will look to you for guidance on how we test our applications and how it should be done.
Continuous Integration
We believe that "it works on my machine" is not good enough. Many software problems for organizations are deployment-related. We minimize these issues by being sure that we can build and test our software using automated processes from Day One.
Are you familiar with the concepts behind Continuous Integration? Have you used a build server in a previous project before? If so, which ones? What kinds of issues did you encounter?
Software Craftsmanship
We are committed to not only building software that works today, but that will remain stable in the face of change for years to come. For us, Software Craftsmanship is not about pretension, but about always doing the best job possible. We practice a "leave it better than you found it" attitude with legacy code, and ensure new code meets modern standards and practices.
We are committed to being a learning and teaching organization. We have an internship program in which we teach college students how to be professional developers. We share knowledge and ideas through pairing, weekly developer meetings, and one-on-one conversations. Your manager is your mentor, and will spend one-on-one time with you every week talking about your career and your aspirations.
Mentorship
We are committed to improving the development team we have through the sharing of knowledge and ideas. As a Senior Engineer, you are an example to your peers on how to do things. You model the behavior and attitudes you wish your peers to emulate. As a leader, you will ensure that your team is clear about what they're building and why. You communicate best practices, ensure clear communication, and adequate test coverage.
Leadership and Vision
As a Senior Engineer, you should have experience leading teams and projects. You will be the point person on a team, learning and understanding the business requirements. You will often be responsible for the design of solutions to problems. With this comes the requirement to effectively communicate your decisions, designs and work with your team, the business and everyone involved in the project.
The Role
Our average team size is 3-5, composed of developers, testers, and business representatives. The business decides which features should be implemented and in what order. The technical team decides how the features will be implemented and provides feature estimates. The whole team signs off on the software before it is released using our automated processes. You'll pair with developers and testers to write unit and integration tests and to implement features. You'll have your changes tested in a production-like environment with a complete set of services, databases, and applications.
We try to always do the correct thing, however we're aware that there are room for improvements, things change, technologies evolve. You'll spot opportunities for improvement and efficiency gains, evangelize your solutions to the team, and see them implemented. You can affect change at Parametric.
Your Professional Growth
Your professional growth is important to us. To that end we:
- Give every developer a PluralSight License.
- Maintain an internal lending library of technical books.
- Meet weekly with all of our developers to discuss issues before they become problems and to share what we have learned.
- Send every developer to the conference of their choice each year.
- Give flex time when developers go to local conferences or meetups.
- While most of our software is proprietary, some of our projects are open-source. We also encourage developers to submit pull requests to open source packages they are using.
Technologies We Use
Most of our stack is MS SQL Server and C#. Our oldest applications are WinForms over SQL Server via NHibernate or WCF Web Services. Our newer applications are built using ASP .NET MVC and Web API. We are currently building some developer tools in Ruby and are considering an experimental project in Clojure. We do not require that you are proficient with the specific technologies we use (we can teach that), but we do require that you have command of at least one Object Oriented programming language (e.g., Ruby, Java).
Here is a non-exclusive list of technologies we use:
- C#, Ruby, Javascript
- Git
- ReSharper
- TeamCity
- NHibernate, Entity Framework
- NUnit, NCrunch, rspec
- RhinoMocks, Moq, NSubstitute
- ASP .NET MVC, ASP .NET Web Api, Sinatra
- Kendo UI
- node, grunt, karma, jasmine (for javascript unit testing)
- Rabbit MQ