Software Engineer 3 - (Python, Java, Apache Spark)The Software Engineer designs, develops, tests, deploys, documents, maintains, and enhances complex and diverse software systems based upon documented requirements. These systems might include processing-intensive analytics, novel algorithm development, manipulation of extremely large data sets, real-time systems, business management information systems, and systems which incorporate data repositories, data transport services, and application and systems development and monitoring.The Software Engineer shall possess extensive expertise in dataflow design, data transport mechanisms, and Apache Spark based distributed processing. In this role, the Software Engineer shall be responsible for designing, implementing, and optimizing data ingress/egress pathways to ensure efficient, scalable, and reliable processing of the organization's analytics workloads.Responsibilities include:Designing, developing, testing, deploying, documenting, maintaining, and enhancing complex and diverse software systems based upon documented requirements.Reviewing and testing software components for adherence to the design requirements and documents test results.Resolving software problem reports.Utilizing software development and software design methodologies appropriate to the development environment.Providing specific input to the software components of system design to include hardware/software trade-offs, software reuse, use of Open Source Software (OSS) and/or Commercial Off-The-Shelf (COTS) Government Off-The-Shelf (GOTS) software in place of new development, and requirements analysis and synthesis from system level to individual software components.Analyzing user requirements to derive software design and performance requirements.Debugging existing software and correcting defects.Designing and coding new software or modifying existing software to add new features.Writing or reviewing software and system documentation.Integrating existing software into new or modified systems or operating environments.Developing simple data queries for existing or proposed databases or data repositories.Serving as team lead at the level appropriate to the software development process being used on any particular project.Developing or implementing algorithms to meet or exceed system performance and functional standards.Developing and executing test procedures for software components.Developing software solutions by analyzing system performance standards and conferring with users or system engineers; analyzing systems flow, data usage and work processes; and investigating problem areas.Modifying existing software to adapt to new hardware or to improve its performance.Designing or implementing complex algorithms requiring adherence to strict timing, system resource, or interface constraints.Performing quality control on team products.Recommending and implementing suggestions for improving documentation and software development process standards.Overseeing one or more software development teams and ensuring the work is completed in accordance with the constraints of the software development process being used on any particular project.Conferring with system engineers and hardware engineers to derive software requirements and to obtain information on project limitations and capabilities, performance requirements, and interfaces.Coordinating software installation on a system and monitoring performance to ensure operational specifications are met.Recommending new technologies and processes for complex software projects.Serving as the technical lead of multiple software development teams.Selecting the software development process in coordination with the customer and system engineering.Ensuring quality control of all developed and modified software.Delegating programming and testing responsibilities to one or more teams and monitoring their performance.Required Skills include:Experience developing in UnixAbility to perform shell scriptingWorking knowledge of Configuration Management (CM) tools and Web Services implementationAnalyze user requirements to derive software design and performance requirementsDebug existing software and correct defectsDesign and code new software or modify existing software to add new featuresWrite or review software and system documentationIntegrate existing software into new or modified systems or operating environmentsDevelop simple data queries for existing or proposed databases or data repositoriesSoftware development using languages such as C, C++, Python, Ruby, Perl, JavaScript, etc.Has experience with source code control systems, such as GitDesign and development of relational and non-relational database applicationsUse of orchestration frameworks such as Spring and KafkaFamiliarization with queue management systemsDevelop or implement algorithms to meet or exceed system performance and functional standardsDevelop and execute test procedures for software componentsDevelop software solutions by analyzing system performance standards and conferring with users or system engineers; analyzing systems flow, data usage and work processes; and investigating problem areasModify existing software to adapt to new hardware or to improve its performanceDesign, develop, and modify software systems using scientific analysis and mathematical models to predict and measure outcomes and consequences of design decisionsJava development using the Eclipse IDE (Integrated Development Environment)Development of Java 2 Enterprise Edition (J2EE) applicationsExperience using collaboration and software development tools (ie.
Atlassian)Software development using continuous integration practicesExperience with container technologies (ie. Docker)Unix shell scriptingDevelopment of event driven, or data driven analyticsDevelopment of cloud-based solutions and technologiesDesign or implement complex algorithms requiring adherence to strict timing, system resource, or interface constraintsPerform quality control on team productsRecommend and implement suggestions for improving documentation and software development process standardsOversee one or more software development teams and ensure the work is completed in accordance with the constraints of the software development process being used on any particular projectConfer with system engineers and hardware engineers to derive software requirements and to obtain information on project limitations and capabilities, performance requirements, and interfacesCoordinate software installation on a system and monitor performance to ensure operational specifications are metRecommend new technologies and processes for complex software projectsServe as the technical lead of multiple software development teamsSelect the software development process in coordination with the customer and system engineeringEnsure quality control of all developed and modified softwareDelegate programming and testing responsibilities to one or more teams and monitor their performanceExperience using the Linux CLI and Linux toolsExperience developing Bash scripts to automate manual processesRecent software development experience using Python and JavaExperience using Apache Airflow (DAG design, scheduling, operators, sensors) to orchestrate, schedule, and monitor complex workflowsExperience with Distributed Big Data processing engines including Apache SparkFamiliar with SQL technologies such as MySQL, MariaDB, and PostgreSQL for querying, joining, and aggregating large datasetsExperience using Jupyter NotebookExperience with data wrangling and preprocessing using tools such as pandas, NumPyExperience working with structured, semi-structured, and unstructured data such as Parquet, JSON, CSV, XMLFamiliarity with data quality concepts, data validation, and anomaly detectionExperience with Git Source Control SystemDesired Skills include:Familiar with HPC Job Scheduling tools including SlurmExperience using the Atlassian Tool Suite (JIRA, Confluence)SWE3 Qualifications:Master's degree in computer science or related discipline from an accredited college or university, plus five (5) years of experience as a SWE, in programs and contracts of similar scope, type, and complexity.Bachelor's degree in computer science or related discipline from an accredited college or university, plus seven (7) years of experience as a SWE, in programs and contracts of similar scope, type, and complexity.Nine (9) years of experience as a SWE, in programs and contracts of similar scope, type, and complexity.**$218k-$266k (Annually)**The range displayed above is a likely salary range for this position. This is not, however, a guarantee of compensation or salary.
Rather, salary will be set based on experience, geographic location and possible contractual requirements and could fall outside of this range.Akina is a Woman Owned, Service Disabled, Veteran