Software Engineer
TEKSYSTEMS INC.
Vista, United States of America
yesterday
Role details
Contract type
Permanent contract Employment type
Full-time (> 32 hours) Working hours
Regular working hours Languages
English Experience level
IntermediateJob location
Vista, United States of America
Tech stack
Agile Methodologies
Algorithm Design
Software Applications
Software Bug Management
C Sharp (Programming Language)
Client Server Models
Computer Programming
Databases
Continuous Integration
Web Development
Embedded Software
Object-Oriented Software Development
Real-Time Operating Systems
Software Engineering
Software Systems
Web Applications
Multithreading
Test Driven Development
Software Troubleshooting
Backend
Job description
- This Software Engineer will collaborate with other members of the Engineering Department (mechanical, electrical) to design, test, analyze, calibrate, maintain, enhance the performance of these Leidos systems/products. Group size is approximately 40 engineers.
- Software Engineering in C# code. Mostly desktop development. Design, develop, and maintain software solutions, delivering high-quality, secure software while adhering to best practices and contributing to team success
- Assist in the design, development, testing, and maintenance of services, simulators, and diagnostics using C# (ensuring alignment with best practices and coding standards). Utilize object oriented design principals, practices, and patterns to ensure the code base is reusable and maintainable.
- Develop software that adheres to industry security standards and contributes to the security compliance of the codebase and coding practices.
- Utilize object-oriented design principles, practices, and patterns to ensure the codebase is reusable and maintainable.
- Apply Agile development practices, including Test-Driven Development (TDD) and Continuous Integration, to ensure high-quality, continuously tested code.
- Collaborate with Electrical Engineering, Mechanical Engineering, and Scientists to meet customer requirements.
- Troubleshoot and resolve technical issues under the guidance of senior engineers.
- Communicate effectively within a small cross-functional development team environment.
- Report project status and issues to management as required.
- Daily stand up meetings, grabbing tasks from backlog, getting those reviewed and merged into the mainline code base and tested
- Use TDD to ensure the code base is tested and to enable refactoring in the future.
- Some of this work is sustainment of a existing systems with millions lines of code. Will do analysis of failures and look through the code base to find bugs, identify a solution, and fix the problem.
- Interact with Electrical Engineering, Mechanical Engineering, and Scientists to develop systems that are consistent with customer requirements.
- Be proactive in leading group design discussions and/or grabbing another developer to pair program on non-trivial features/code.
- Report project status and issues to management as required.
- Evaluate customer problems, troubleshoot and assist Field Service Engineers, and help customers through problem resolution utilizing effective written and verbal communication skills.
- Interfacing desktop software with embedded and PLC based hardware systems
- Need people on the backend who know C# and understand desktop and interfacing with embedded software. There is no web development in this role.
- Having experience with messaging like rabbitMQ just tells him that they've dealt with the middle and back end tiers and information going between systems,
- multithreading is a good thing to look for but not necessarily fully required
- He looks for people that have worked on products, for instance Medical device or other
- He looks for people with longer durations - like 2+ years at a company minimum
- He wants someone who's done some algorithm development, device oriented, is strong enough to understand some of the very complicated code base that is existing there.
Requirements
- 8+ years overall programming background (role requires a solid foundation in software development. Must have solid understanding of object-oriented design (OOD) principles and practices. Strong enough to understand some of the very complicated code base that is existing. Engineer who has done some algorithm development
- 4+ years of C#.net on production / products (i.e. devices, products, client-server software, not web). Multithreading would be nice to have. Must have strong windows/desktop development experience (and desire to primarily develop desktop applications rather than web applications). This type of software is typically client-server software, multi-threading, real-time software, software messaging, image processing.
- Strong grasp of how the C# code interfaces with the back end (whether it be a database or the hardware/sensors, etc.)
- Familiarity with Agile development environments, including Test-Driven Development (TDD) and continuous integration
- Ability to create basic design documentation and other technical documentation
- Strong troubleshooting and bug-fixing skills