Location
Remote
Compensation
$170K – $190K
We are searching for a talented, hands-on full-stack software engineering lead to help take our university career center SaaS platform to the next level! If you are a self-motivated, team player with a great attitude, excellent communication skills, strong work ethic, and a passion for building great products, we’d love to hear from you!
YOUR ROLE
- Lead a 3-5 person engineering sub-team (all remote), actively participating in design/architect discussions/decisions, code reviews, product iteration, and mentorship activities. Great communication skills and strong attention to detail is a must!
- 30%-50% of time doing hands-on coding
- Work with two other leads to help guide the infrastructure and architectural decisions to ensure our platform is secure, maintainable, and scalable over the long term.
- Collaboratively work to solve complex, technical problems with a small, tight-knit team of smart, highly motivated developers in an agile environment, where code is released multiple times per week
- Architect, develop, code review, and support high-quality code and automated tests in a detail-oriented manner with software engineering best practices in mind. Deliver clean, maintainable code within a large, complex, and established code base.
- Refactor and redesign existing code to maximize performance, scalability, and maintainability, while building out comprehensive automated tests to reduce the risk of regression
- Effectively and respectfully communicate and collaborate with other members of the team – Devs, Product, and QA – to build innovative and intuitive features that our users will love
- Provide recommendations on ways to do things better; mentor and inspire team members to elevate the team and our code
- Take ownership and have accountability over modules and features
- Work in a fast-paced, fun environment with an eclectic group of people from all over the world
- Continue to learn and grow and apply those learnings to improve the team and organization
YOUR EXPERIENCE
- 7+ years of full-stack data-driven web application software development experience with C#; demonstrated ability to lead and inspire teams
- Bachelor’s or Master’s degree in computer science or related field
- Expertise with unit and integration testing and TDD concepts to build high quality, reliable code
- Experience applying software engineering best practices and design patterns for a SaaS product across a large codebase, multiple modules, and complex business rules
- Experience with SPA development and working with JavaScript frameworks/libraries like Angular or React
- Comfortable working in a fast-paced, agile environment, with frequent deliverables
Engineering Team Structure/Processes
We work in two week sprints, but deliver continuously. Our engineering team currently consists of ten devs, broken up into two subteams. Developers work closely with their teammates and the Product team to ensure we build with useability, maintainability, and scalability in mind. We put a strong emphasis on quality, automated testing, and clean code.
OUR DEVELOPMENT PROCESS
- Iterate upcoming stories with Product and the team
- Engineer and lead work through a design review as needed for higher-level design decisions
- Engineer develops and thoroughly tests their own code, via both manual and automated tests
- Code is reviewed, first by a peer, then by the lead before it can be merged
- QA team manually tests the story
- Code is deployed twice a week or as needed
The majority of our code is in a single solution with dozens of projects. While the codebase and architecture is mostly monolithic, we do have a few microservices as well.
Infrastructure: mostly on Azure, including App Services, SQL Database, Service Bus, Redis, Functions, Virtual Machines. We also use Cloudflare and AWS S3.
Tools we use: GitHub, JIRA, Confluence, Slack, and GSuite for our day-to-day tasks.
Our tech stack: C# (.NET Framework 4.72), Web API, MVC, AngularJs, Typescript, HTML, Less, Sql Server, Dapper, EF, and other technologies, including some legacy query and knockouts.
Technical Challenges
We are a small team working on a large number of modules and integrations across the platform, including job postings, on campus interviews, events, appointments, custom reporting, analytics, calendar sync, and single sign on.
We are continuously refactoring and improving the existing codebase, implementing design patterns and best practices as much as possible to build scalable infrastructure that is manageable and maintainable. However, our codebase is relatively large and long running.
There is a lot to refactor and many patterns to consolidate. We are always balancing delivering direct value to the customer with repaying technical debt and ensuring we build for the long-term.
UPCOMING PROJECTS
- New products built on top of our framework within our existing platform, including are build of our student-facing outcome analytics platform (which has helped some schools close the gender wage gap for post graduation offers!) and extensive improvements to our alumni platform to help alumni connect and network.
- Product enhancements to existing modules and features, which may include extensive refactors
- Infrastructure improvements within Azure to ensure security, scalability, high availability, and general reliability (e.g. scaling out our database, making better use of Redis and Service Bus, and improvements with observability and monitoring)
- Better reorganize code and dependencies to better encapsulate modules
- Upgrade to .NET 6 from .NET Framework
- Rewrite our AngularJS code in React
TEAM VALUES
- Communication: offer suggestions, ask questions, be open; give and expect honesty, transparency, empathy, and respect
- Collaboration: work together to find the best solutions
- Continuous Learning and Improvement: always be looking for opportunities to improve both yourself and our product/code/team
BENEFITS & PERKS
- Competitive salary + commission
- Generous PTO policy
- Full benefits, including 401(k)
- Regular team happy hours and activities
- Remote work flexibility