Mid-Level/Senior Software Developer (Python, Java, C++)
- Design, develop and maintain software architecture and associated tools and applications used to develop Software Defined Radio (SDR) solutions.
- Develops and applies advanced methods, theories and research techniques in the investigation and solution of complex and advanced software applications and problems.
- Plans, conducts, technically directs, and evaluates projects or major phases of significant projects, coordinating the efforts of engineers and technical support staff in the performance of assigned projects.
- Conducts investigations and test of considerable complexity.
- Reviews literature, patents and current practices relevant to the solution of assigned projects. Evaluates vendor capabilities to provide required products or services.
- Provides technical consultation to other organizations
- Direct experience leading teams of software developers
- Experience interacting with project customers and stakeholders to report project status, and manage subsystem requirements
- Linux/Unix experience
- Java development experience
- XML/XSD experience
- Scripting language experience such as Python or Perl
- Java Graphical User Interface (GUI) development experience
- Direct experience with Service Oriented Architecture (SOA)/middleware technologies such as enterprise service bus (ESB), COREA, SOAP, or Internet Communications Engine (ICE)
- Experience using IDEs such as JBuilder and/or Eclipse
- Direct experience with EMF tools such as Subversion/Trac or GIT
Technical Skills Required:
- Python or Java or C++ development experience
- Linux development experience
Special Technical Skills Desired:
- Experience with basic Linux administration skills (bash scripts, rpms, yum, systemd, etc.)
- Experience with Google Protocol Buffers
- Experience with Software Defined Radio concepts
- Experience with building and installing Linux RPMS
- Experience with shell-scripting such as bash
- Experience with software build tools, such as Autotools build, Makefiles, etc.
- Experience with automated software testing including unit testing
- Experience with continuous integration tools such as Gitlab, CI or Jenkins
- Experience with client/server architectures and RPC mechanisms (Redis, GRPC, etc.)
- Experience working in an Agile development process
- C++ development experience
- Eclipse RCP or EMF training or equivalent experience
- Direct experience in the design and development of collection systems and components within the IC
- Web framework experience such as Ruby on Rails, Django, SpringFramework, or Zope
Minimum Experience Required:
- Bachelor’s degree in Computer Science or Computer Engineering with 8-15 years of applicable software design and development experience; or
- 14-19 years of applicable software design and development experience
- TS/SCI with Polygraph Required