Ensure we build, scale, ship, and monitor our platform reliably, leveraging technologies such as Java, Python, MySQL, NSQ, Hbase, AWS, and Kubernetes
Partner with product managers, designers, and other engineers to define requirements and complete feature work
Work to improve the processes, systems, and tools we use to deliver quality products and champion technical initiatives and direction
Uphold project quality and planning through meeting deadlines, breaking down work, and ensuring proper testing and monitoring
Lift the skills of other engineers through mentorship, knowledge sharing, and providing feedback on PRs and technical designs
Completing Sprout’s New Hire training program alongside other new Sprout team members
Deploying and making changes to our production systems
Interacting with SQL or NoSQL data stores and NSQ messaging queues
Collaborating regularly with product managers, and other product teams to deliver value to our users
Getting regular team feedback on your work through code reviews and pairing
Proactively monitoring the health of our services in production to ensure our customers always have a world-class experience
Decomposing work into small, similarly sized units so that estimation is unnecessary
Working with your squad to create and prioritize quarterly team goals
Contributing to our Agile culture of continuous improvement through retrospective meetings and experimentation-oriented thinking
Building connections with members from other teams through guild meetings and chapter outings
Participating in technical design meetings with your teammates to walk through new feature ideas
Working with product managers, UX developers, and front-end engineers to come up with the MVPs of new features
Being the first line of defense against product outages and bugs while on support duty
Maintaining, scaling, and building upon systems that handle millions requests and messages a day
Integrating and using monitoring and alerting tools to know about problems before our users
Being “point person” on a project, including prototyping, writing design documents, coordinating dependencies, and acting as domain owner
Creating and managing concurrent, distributed systems
Building your engineering skills by attending in-house presentations, workshops, and training sessions
Forming a career growth plan with your manager and work towards it
Partnering with the Infrastructure team to improve your team’s ability to deliver reliable, highly available services
Actively mitigating risk of failed delivery and missed deadlines through courageous, transparent communication with colleagues and stakeholders throughout a project life cycle
Leading technical architecture meetings
Identifying technical debt and performance bottlenecks within our systems, come up with a plan to improve the code, and get it pushed to production
Mentoring junior engineers, helping them level up technically
Building connections with members from other teams through active networking and community building
Having opportunities to contribute to in-house technical presentations and workshops that share your expertise with large groups of Sprout engineers
Surprise us! Use your unique ideas and abilities to change your team in beneficial ways that we haven’t even considered yet
Of course, what is outlined above is the ideal timeline, but things may shift based on business needs and other projects and tasks could be added at the discretion of your manager