View All Jobs

Principal Software Engineer

US-TN-Nashville
  • Apply
Job Description

Job Summary 

Creates, modifies, and maintains software applications individually or as part of a team.  Provides technical leadership on a team, including training and mentoring of other team members.  Provides technology and architecture direction for the team, department, and organization. 

Essential Duties & Responsibilities 

  • Develops software applications and supporting infrastructure using established coding standards and methodologies  

  • Sets example for software quality through multiple levels of automated tests, including but not limited to unit, API, End to End, and load.  

  • Self-starter and self-organized - able to work without supervision 

  • Develops tooling, test harnesses and innovative solutions to understand and monitor the quality of the product  

  • Develops infrastructure as code to reliably deploy applications on demand or through automation 

  • Understands cloud managed services and builds scalable and secure applications using them 

  • Creates proof of concepts for new ideas that answer key questions of feasibility, desirability, and viability    

  • Work with other technical leaders to establish coding standards, development best practices and technology direction 

  • Performs thorough code reviews that promote better understanding throughout the team  

  • Work with architects, designers, business analysts and others to design and implement high quality software solutions 

  • Builds intuitive user interfaces with the end user persona in mind using front end frameworks and styling  

  • Assist product owners in backlog grooming, story breakdown and story estimation 

  • Collaborate and communicate effectively with team members and other stakeholders throughout the organization 

  • Document software changes for use by other engineers, quality assurance and documentation specialists 

  • Master the technologies, languages, and practices used by the team and project assigned 

  • Train others in the technologies, languages, and practices used by the team 

  • Trouble shoot, instrument and debug existing software resolving root causes of defective behavior  

  • Other duties as assigned 

#LI-REMOTE

Skills & Requirements

Experience 

Education 

  • BA/BS in Computer Science, a related field or equivalent work experience 

Minimum Qualifications 

  • Mastered advanced programming concepts, including object oriented programming 

  • Mastered technologies and tools utilized by team and project assigned 

  • Able to train others on general programming concepts and specific technologies 

  • Minimum 8 years’ experience developing software applications 

  • Minimum 3 years’ experience architecting distributed systems 

 

 

Skills/Knowledge 

  • Must be expert in advanced programming skills and database technology 

  • Strong understanding of Computer Science fundamentals (Algorithms, Data Structures, Operating Systems, Networking concepts) 

  • Must be expert in at least one technology and/or language and proficient in multiple technologies and languages, including but not limited to: C#, C/C++, Java, Progress 4GL  

  • DevOps mindset with proven ability to architect and optimize an agile CI/CD pipeline including continuous testing 

  • Experience developing for Windows platforms is preferred 

  • Additional desired skills:   

  • Demonstrated expertise in SQL, JavaScript, Typescript, React, Angular, Python 

  • Experience with AWS/Azure or other public cloud platforms 

  • Test First approach, Test Driven Development (TDD) experience, Automated unit testing (NUnit, xUnit, MSTest) 

  • Experience with Agile and iterative development processes; i.e. Scrum, Kanban, SAFe  

  • Familiarity with VersionOne, Git, Gerrit 

  • Strong problem-solving skills 

  • Outstanding communications and interpersonal skills 

  • Strong organizational skills and ability to multi-task 

  • Ability to track software issues to successful resolution 

  • Ability to work in a collaborative fast paced environment 

  • Ability to learn new development languages and technologies quickly and apply that knowledge effectively  

    Text Box
Qualifications