OVERVIEW
The Senior Software Engineer is a significant and autonomous contributor. You solve complex problems, applying appropriate technologies and best practices. Your focus is on a major portion of existing or new team software (e.g., large, or significant component, set of features, mid-size application or service). The Senior Software Engineer works with your team to invent, design, and build software that is stable and performant. You write code that an SDE unfamiliar with the system can understand. You are proficient in a broad range of design approaches and know when it is appropriate to use them (and when it is not). You do things with the proper level of complexity the first time (or at least minimize incidental complexity). The Senior Software Engineer considers the legacy of the code you produce, limiting the use of short-term workarounds. You create flexible software without over-engineering. You make appropriate trade-offs, re-use where possible, and are judicious about introducing dependencies. You are efficient with resource usage (e.g., system hardware, database, memory/CPU, etc.)
The Senior Software Engineer works on project ideas with customers, stakeholders, and peers. You help balance customer requirements with team requirements. You help your team evolve by actively participating in the code review process, design discussions, team planning, and ticket/metric reviews. The Senior Software Engineer focuses on operational excellence, constructively identifying problems and proposing solutions. You take on projects and make software enhancements that improve team software and processes. You work to resolve the root cause of complex problems, leaving software better and easier to maintain than when you found it. You can train new team-mates on how your team’s software is constructed, how it operates, how secure it is, and how it fits into the bigger picture.
KEY TASKS & RESPONSIBILITIES
- Design, implement, and deploy software components that solve complex problems generating positive feedback
- Solid understanding of design approaches (and how to best use them)
- Work independently and with your team to deliver software successfully
- Consistent high-quality work (e.g., secure, testable, maintainable, low-defects, efficient, etc.) and incorporates best practices
- Code reviews tend to be rapid and uneventful. You provide useful code reviews for changes submitted by others
- You focus on operational excellence, constructively identifying problems and proposing solutions, taking on projects that improve your team’s software, making it better and easier to maintain
- You make improvements to your team’s development and testing processes
- You have established good working relationships with teammates and peers working on related software. You recognize discordant views and take part in constructive dialogue to resolve them
- You can confidently train new team-mates about your customers, what your team’s software does, how it is constructed, tested, operates, and how it fits into the bigger picture
- Other duties as assigned
CANDIDATE’S PROFILE
Education & Experience
- Basic Science/Bachelor of Science or Master of Science degree in Computer Science and/or equivalent work experience preferred
- Excellent knowledge of English
Professional Skills
- 2+ years in software design and development using the Microsoft technology stack, including C#, ASP.Net MVC and SQL Server preferred
- Experience in design, implementation, and deployment of software components that solve complex problems generating positive feedback
- Solid understanding of design approaches and how to best use them
- Can work independently and with your team to deliver software successfully
- Demonstrated experience where work is consistently of a high quality (e.g., secure, testable, maintainable, low-defects, efficient, etc.) and incorporates best practices
- Your code reviews tend to be rapid and uneventful. You provide useful code reviews for changes submitted by others
- Experience in operational excellence, constructively identifying problems and proposing solutions, taking on projects that improve your team’s software, making it better and easier to maintain
- Demonstrated leadership in making improvements to your team’s development and testing processes
- Experience in establishing good working relationships with team-mates and peers working on related software. You recognize discordant views and take part in constructive dialogue to resolve them
Technical Skills
- 2+ years of experience with Microsoft ASP.NET; C# and MVC framework preferred
- Extensive experience with JavaScript, JQuery, HTML5, CSS3 and AJAX
- Experience with database design and T-SQL programming
- Extensive knowledge of web evolution and architectures
- Solid understanding of the fundamentals of information technologies including networks, servers, and operating systems
- Ability to write optimized code that emphasizes application performance
- Experience with secure development including knowledge of known vulnerabilities and countermeasures
- Experience with reporting or business intelligence applications such as QlikView, MicroStrategy or Business Objects is a plus
- Experience leveraging Cloud Services in the design and development of scalable application(s) is a plus
- Strong Software Development Lifecycle experience (Agile methodology experience is preferred)