Previous Job
Sr. Software Engineer
Ref No.: 18-07286
Location: Reston, Virginia
The Senior Software Engineer is responsible for the design, development and testing of application software within the clients Information Technology Business group. The successful candidate will be a seasoned software engineer with extensive knowledge and experience in designing, building and testing complex, highly scalable and dependable application systems using cloud-based architecture and technologies and Java/J2EE based technologies. 

The candidate will interact closely with the Scrum Master and other members of the development team to shape, identify, prioritize, and realize the requirements in the delivery of business solutions. 

Successful candidates will have comprehensive knowledge of web front-end and back-end development tools, technologies, practices, and standards; proven ability to integrate large scale systems or third-party products; and a track record of delivering high-quality, web-based business solutions in a timely and effective manner. This position also requires proficiency in test driven development with automated testing tools. 

The candidate will work on a poly-skilled agile team. Therefore, the successful candidates will also have experience in full life-cycle development including testing and requirements gathering and documentation.

• While the primary focus of this role will be software development, the incumbent will be expected to perform testing and other duties appropriate to a poly-skilled agile team.
• Follows established coding and testing standards and other enterprise processes, both individually and at a team level. Must ensure proper code reviews are held for the project and that development processes and tool utilization (e.g.Jenkins, PMD, Checkstyle, etc.) are followed.
• Contributes to the development team's culture of high code quality. 
• Responsible and Accountable for the quality of code that is delivered to production and must ensure that appropriate code reviews and unit testing are adequately performed.
• Ensures that continuous integration is performed on the application source code and constantly seeks to enhance the continuous integration methods of the development team to ensure extremely high quality of code.
• Experience working in an iterative development environment such as Agile/Scrum.
• As member of an Agile development team work closely with Product Owners and Consumer to gain thorough understanding of requirements to ensure code is properly implemented. Also, must seek ways to meet the underlying business requirements with low-cost, yet highly re-usable patterns and actively escalate requirements that may cause unnecessary risk or cost.
• Experience developing REST API web services.
• Build, test, deploy, and maintain production code for complex web and cloud-based applications develop using technology stack comprising of programming/scripting languages and tools such as; Java/J2EE, Python, nodeJS, JavaScript, JSON, YAML, HTML5, XML, X/HTML, Spring, Hibernate, Maven, Gradle, etc.
• Experience and in-depth knowledge of web and application servers such as Apache Tomcat and Oracle WebLogic.
• Experience with SQL (Oracle, PostgreSQL) and noSQL (DynamoDB, MongoDB, Cassandra) database technologies.
• Experience with test-driven development. 
• Expert-level knowledge of object-oriented design demonstrated by implementing complex system using of custom API's, optimization techniques, and design patterns such as Inversion of Control.
• Experience building cloud-based software.
• Experience and deep understanding of cloud-based architecture and services in AWS. e.g. ECS, EC2, Docker, Lambda, S3, etc.
• Ensure that application code adheres to enterprise and industry standards and best practices, including performance and security standards.
• Gather feedback from design and technical staff on application development needs and patterns. Must be able to work with Enterprise Architecture group to propose and solicit approval of new architectural patterns including documentation and presentation of the architectural approach, benefits/limitations and other considerations (e.g. re-usability, security, performance, maintainability, etc.).
• Thorough understanding of implementing accessibility and progressive enhancement presentation layer coding practices. Ensure accessibility standards are met at a code level.
• Responsible for support of and coordinating with other teams such as Security, Technical Operations, Enterprise Operations, etc.
• Assists with project planning and estimating of project scope items. Reports hours daily to administration for billing purposes. 
Required Skills:*
Related Skills & Other Requirements:
• At least 5+ years' experience in Java development preferable
• At least 3+ years' hands-on experience developing cloud-based applications with AWS, Google Cloud, or Microsoft Azure.
• Expert-level understanding of the Java programming language, related optimization techniques, and design patterns.
• Expert-level understanding of an Apache, and Oracle tiered system environment.
• Must have deep knowledge of Java/J2EE, Hibernate, Spring, SQL/PL-SQL
• Deep knowledge of AWS services such as EC2, ECS, Lambda, S3, RDS, etc. are highly preferable
• Must possess and demonstrate test-driven development skills
• Strong knowledge of microservice and REST application architectures
• Strong knowledge of Continuous Integration/Continuous Development (CI/CD) and DevOps 
• Strong knowledge of Cloud application security models, protocols and tools (i.e., AWS IAM, AWS KMS policy, Azure AD, etc.)
• Strong knowledge SQL and NoSQL databases 
• Strong knowledge and skill set developing server-side JavaScript such as Node.JS.
• Strong knowledge and skill set using version control tools such as Git, Bitbucket, Subversion
• Strong knowledge and skill set using testing tools such as JUnit, Mockito, etc.
• Strong knowledge in one or more of the following: JSON, Dozer, DOM
• Knowledge of configuration management tools such as Ansible and CloudFormation 
• Knowledge and experience in developing SOA/Web Services based applications 
• Experience using and developing on Windows and Linux platforms 
• Experience working in an iterative development environment using Agile/Scrum/Kanban required 
• Experience in adhering to software development guidelines and in performing code and design reviews
• Experience in documenting design and architecture artifacts and presenting artifacts for architectural review
• Experience in creating test automated frameworks
• Effective communication skills (oral and written) are a must along with a strong customer service orientation, and the ability to clearly discern client needs.
• Ability to effectively coordinate multiple responsibilities simultaneously, with fast, flexible work style
Preferred Skills:*
• Knowledge of K-12 or Higher Education related software applications is a plus 
• Possession of AWS Certified Solution Architect or AWS Certified Developer certification a plus
• Possession of Java certification as plus 
Bachelor's degree required.
At least 8 years of directly-related work experience in a professional position in software development.