Master Software Engineer
Department: Information Technology
General Description
Parametric provides engineered financial investment portfolio solutions to institutional and private clients with a sharp focus on implementation excellence and client-specific customization.. Our team is composed of software craftsmen dedicated to building the software our company runs on. We rely on TDD, Continuous Integration, and Automated Deployments to consistently deliver stable software to our internal customers. What we offer is a chance to work with a group of people with a dedication to finding better ways of doing things.
We are looking for a smart, curious, self-motivated software developer to join our development team.
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 enjoy scaling your productivity through mentoring and coaching others.
– 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 consists of two developers, 1 QA representative, and a business contact. The business is in control of feature prioritization and scheduling. The technical team estimates work and decides how the features will be implemented. 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. In addition, you'll be guiding the design of the software you work on and showcasing professional development practices to others in the group along the way. You will be looked at as a leader in the group.
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 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., C#, Ruby, Java).
Here is a non-exclusive list of technologies we use:
– C#, Javascript, Powershell
– Git
– ReSharper
– TeamCity
– NHibernate, Entity Framework
– NUnit, NCrunch
– RhinoMocks, Moq, NSubstitute
– ASP .NET MVC, ASP .NET Web ApiKendo UI
– node, grunt, karma, jasmine (for javascript unit testing)
– Rabbit MQ
Contact Info:
Interested candidates should submit their resume online via the link below.
https://eatonvance.wd5.myworkdayjobs.com/en-US/Parametric/job/Seattle-Investment-Center/Senior-Software-Engineer_JR001359
Location:
1918 Eighth Avenue, Suite 3100
Seattle, WA 98101
www.parametricportfolio.com