
Software Engineer
- Denver, CO
- Permanent
- Full-time
- Design, develop, integrate, test, and maintain complex software solutions in telecommunications and IP/computer networking equipment in the cyber security domain
- Work with a product development team to develop concepts, identify creative solutions to user requests and assess feasibility of these solutions
- Consult on technical activities spanning multiple technical disciplines including security analysis, software/tool development, software test, lab environment, development environment and system infrastructure
- Act as the technical liaison to customers in representing key issues
- Operate effectively and comfortably in a team environment, as a team member and as a team leader. This includes the ability to work across organizational boundaries, as necessary
- Assist technical management in facilitating process changes needed to meet customer quality and schedule requirements
- Interact with product development teams, project managers and partners
- Prioritize work including meeting schedules, identifying risks and delivering high quality software
- Understand and adhere to all CACI Ethical and Compliance policies
- Proactively ensure a safe work environment and adhere to CACI EH&S policies and procedures
- Perform other duties as required
- Bachelor’s and/or Master’s Degree in Computer Engineering, Computer Science, Electrical Engineering or related technical discipline
- Minimum of 7 years of experience or an equivalent combination of education, skills, and experience
- Familiar with development in either Windows, Linux and/or Unix-based operating systems
- Software development skills in languages such as: C, C++, Python or comparable languages
- Use of development tools (e.g. editors and compliers)
- Willingness and ability to quickly learn new technologies
- Familiarity with software security concepts such as intrusion detection, cryptography, authentication, firewalls, secure coding practices.
- Understanding of network hardware, systems and software application.
- Knowledge of Internet routing protocols, TCP/IP stack and tools
- Experience developing software for embedded systems
- Familiarity with multi-threaded applications and multi-processor systems
- Familiarity with low-level programming such as device-driver and OS programming
- Understanding of processor architectures (ARM, MIPS, x86, PowerPC) and associated assembly language programming
- Experience with reverse engineering of binary applications, protocols and formats
- Experience debugging system-level issues with various lab equipment.
- Strong oral and written communication skills
- Ability to work both independently and as a collaborative team member
- Flexibility to adapt to new and changing environments
- Knowledge of telephony
- Familiar with software engineering process concepts from requirements reviews, code inspection to component delivery and sign-off
- Knowledge of Microsoft software applications and other software applications as required