Job Description :
Job Title: Principal Software Engineer
Location: Cary, NC
Duration: Fulltime

Job Description:
A Principal Software Engineer will design, develop, maintain and support new or existing software products while evangelizing and applying the best practices of software development. Responsibilities include the ability to identify areas for improvement, provide innovative solutions and work both independently and as part of the leadership group of a larger team to deliver quality solutions across all phases of the software lifecycle.

Responsibilities / Essential Functions:
Development:
Understand and apply software design principles and architectural best practices in creating best-in-class enterprise software solutions and implementations
Estimate story sizes and task out development for a given story
Complete stories within estimates and with quality to ensure release dates are met
Conduct necessary analysis, design and prepare technical documentation
Work with infrastructure services to make configuration changes and deploy applications
Quality:
Support or conduct system testing, performance, volume, and stress testing
Conduct or coordinate code reviews and address code quality issues
Conduct unit testing and help create unit testing patterns
Collaborate with security team to ensure secure coding practices

Usability/User Experience:
Collaborate with business and UX team to create appropriate application User interfaces
Provide feedback to UX team
Product Reliability & Response:
Ensure system can meet or exceed defined SLAs
Troubleshoot complex problems– for example, performance optimization, system reliability and concurrency issues
Resolve production issues and communicate resolution to appropriate stakeholders
Leadership (Technical):
Partner with Application Architect to act as a"brain trust” in the organization
Evangelize Railinc common practices and development procedures
Exhibit technical leadership in given technical subject domain
Identify new technologies and approaches that may improve our quality, productivity, and capabilities
Mentor peers and junior developers
Delegate and coordinate functional development tasks as needed
Drive innovation in the development, release and operational processes
Able to balance multiple priorities
Coverage, Production escapes
Customer satisfaction score
System SLA, # of outages
Release scope, schedule, budget
Releases
Non-Essential Functions
Secondary tasks and duties (desirable, but not primary focus of position)
Miscellaneous duties as assigned
Values
Collaboration: We collaborate with our teams and our customers to get the job done, respecting individual ideas and contributions and moving forward in pursuit of shared goals.
Results: We deliver on our promises to create value for the freight rail industry through talented people, good ideas, business leadership, and great technology.
Service: We serve the changing needs of our customers and our industry to enhance the value they bring to our community, the environment and our economy.
Success Factors: Knowledge/Skills/Abilities and Minimum Requirements
Work under deadlines and subject to heavy project load
Ability to provide technical expertise to others and explain concepts to technical staff and leadership teams
Ability to operate independent of supervision with accuracy and attention to detail
Ability to quickly learn and master recent technologies and various business applications
Ability to build business acumen and understand business domain
Experience in designing and illustrating process flows and training users
Ability to communicate and follow up professionally (written and oral) both internally and externally within the organization– including documentation of application requirements
Demonstrated ability to identify and resolve issues effectively
Ability to mentor others
10+ years of software development experience
Comfortable with front-end, middle tier and backend technologies
Experience with cloud architecture/infrastructure and container-driven development tools (such as Docker)
Expertise in front-end technologies like Angular JS or HTML 5; hands-on experience a must in last 3 years
Expertise in Spring and Hibernate or equivalent ORM; hands-on experience a must over the past 5 years
Web Service SOAP/REST expertise, especially as a service provider
Messaging technologies development experience in last 2-3 years is a plus
Experience with authoring rules in any rules engine preferably drools is a plus
Experience with Spring Integration or Apache Camel is a plus
Expertise using servlets/application containers
Experience using Spring boot deployable
Experience with Agile software development methodology
Strong understanding of deployment processes, deployment environments, production application trouble shooting techniques
Strong understanding of architectural best practices, design patterns, distributed design principles
Additional Requirements: Education , Experience and Certification/Training
Bachelor''s degree in Computer Science or equivalent field and 10+ years of technical experience
or
Master''s Degree in Computer Science or equivalent field and 7+ years of technical experience
Physical Requirements
Sedentary work: assignment involves sitting at workstation (desk) most of the time (up to 8 hours) with only occasional walking and/or standing
Keyboarding: Primarily using fingers for typing
Talking: Expressing or communicating verbally through use of spoken words (accurately conveying detailed or important spoken instructions to others)
Hearing: Ability to receive detailed information through oral communication and to make discriminations in sound.
Visual: Through close visual acuity, required to perform activities such as: preparing and analyzing data and figures; transcribing; viewing computer terminal; extensive reading (with or without correction)
Environment: work is performed within an office setting and therefore no substantial exposure to adverse environmental conditions (i.e. extreme heat, cold, noise, etc