
Principal, Full Stack Software Engineer
- Dallas, TX
- $135,300-170,000 per year
- Permanent
- Full-time
- Design, code, test and debug complex software while developing new functionality, and enhancing existing functionality, in order to satisfy customer requirements, both internal and external. Design work encompasses a broader project/system scope. Work is assigned via broad guidelines. Work includes developing detailed specifications from which applications will be written, designed, coded, tested and debugged.
- Consult with product owners/business partners to define requirements and software design. Evaluate feasibility and make recommendations, considering things such as customer requirements, time limitations, system limitations. Mentor less experienced team members in learning this process.
- Define scope and develop testing methods, collaborating with QA team and other developers. Work with QA team to improve all levels of testing efforts, developing and enhancing testing methods and processes. May also perform testing.
- Support, maintain and document software functionality. Makes recommendations on and influences engineering processes and methods.
- Provide operational support on complex/escalated issues to diagnose and resolve incidents in production systems. Incidents tend to be fewer but more complex, requiring analysis of issues, determination of additional resources to resolve the issue, and an in-depth system perspective.
- Explore and research new and alternate technologies and platforms. Evaluate, recommend, and apply these alternate/new technologies, disseminating information throughout the team/department. This includes documenting large and complex assignments for knowledge transfer and developing expertise in multiple areas. Mentor other team members on area(s) of expertise. Provide technical guidance on a wide range of systems/projects.
- Bachelor's degree in computer science, software development, or related field preferred
- Java JDK Strong understanding of Java fundamentals and object-oriented programming (OOP).
- JavaScript: Proficiency in JavaScript, including ES6+ features.
- Understanding of asynchronous programming, promises, and callbacks.
- Spring Boot 2.x-3.x and Spring Framework 5.x-6.x, including Spring Boot for creating stand-alone applications.
- Knowledge of dependency injection, aspect-oriented programming, and Spring MVC.
- Familiarity with Spring Data, Spring Security, and Spring Cloud.
- Understanding of asynchronous programming and event-driven architecture.
- Angular: knowledge of Angular framework for building dynamic web applications.
- Experience with Angular CLI, components, services, and dependency injection.
- Understanding of reactive programming with RxJS.
- TypeScript: Proficiency in TypeScript, including type annotations, interfaces, and generics.
- Experience in integrating TypeScript with Angular and Node.js.
- Version Control: Proficiency with Git for version control.
- Testing: Experience with unit testing (JUnit for Java, Jasmine/Karma for Angular) and integration testing.
- Build Tools: Familiarity with build tools like Maven/Gradle for Java and npm/yarn for JavaScript.
- Database Knowledge: Understanding of relational databases (e.g., MySQL, PostgreSQL) and ORM frameworks (e.g., Hibernate).
- DevOps: Basic knowledge of CI/CD pipelines and containerization (Docker).
- Problem-Solving: Strong analytical and problem-solving abilities.
- Communication: Good communication skills for effective collaboration.
- Adaptability: Ability to learn new technologies and adapt to changing requirements.