Software Engineer
JOB DESCRIPTION
The Software Engineer will design, develop, code, test, and debug complex software products, or make significant enhancements to existing software. The ideal candidate is: a hands-on platform builder with significant experience in developing scalable data platforms, with experience in business intelligence, analytics, data science and data products; or a specialized hands-on performant frameworks builder with the know-how and modern experience of the most marketed products in business intelligence, analytics, data science and data products in the world. A successful software engineer must have strong, firsthand technical expertise in a variety of configuration management and big data technologies and the proven ability to fashion robust scalable solutions that can manage large data sets. They must be at ease working in an agile environment with little supervision. This person should embody a passion for continuous improvement and innovation.
QUALIFICATIONS
Bachelor’s Degree in Computer Science/Engineering and related technical discipline, or the equivalent combination of education, technical training, or work/military experience.
At least five (5) years in software engineering or related/equivalent experience.
REQUIRED KNOWLEDGE/SKILLS
Demonstrated experience in a combination of the following:
Modern programming languages like with Java, Python, and SQL.
One or more of the following technologies: Java/J2EE, JavaScript, SQL, XML, XQuery, XPath, HTML/XHTML, CSS, Python, Shell Scripting, JSON, Elasticsearch/OpenSearch.
Server operating systems: Windows, Linux, Distributed Computing, Blade Centers, and cloud infrastructure.
System administration of Red Hat/Linux servers to include Ansible, Chef, or Puppet.
Cloudera CDH/CDP or Hortonworks Hadoop platform to include services like HDFS, Kafka, HBase, Spark, NiFi, etc.
Familiarity with Continuous Integration/Continuous Delivery systems such as Jenkins.
Ability to write in one or more scripting tools: Python, PowerShell, Bash.
Operations, to include Git, Jenkins, Rundeck, Jira, or Confluence.
Strong desire to learn including but not limited to new data, methodologies, and applications.
Excellent organizational, coordination, interpersonal, and team building skills.
Team focused, willing to develop and implement solutions in a dispersed team environment
Available for off-hours deployment and off-hours system repair.
DESIRED KNOWLEDGE/SKILLS
Experience deploying code in AWS utilizing solutions such as Terraform, Ansible, and CloudFormation.
Familiarity and/or basic understanding of NiFi workflows and functionality.
Experience delivering and/or integrating software solutions using cloud technologies (AWS/C2S).
Familiar with the concepts of Site Reliability Engineering (SRE) and a desire to explore their application to a successful and established program.
KEY RESPONSIBILITIES
Research, design, develop and/or modify enterprise-wide systems and/or application software.
Develop complex data flows or make significant enhancements to existing pipelines.
Resolve complex hardware/software compatibility and interface design considerations.
Provide ongoing maintenance, support, and enhancements in existing systems and platforms.
Conduct investigations and tests of considerable complexity.
Research emerging technologies to determine impact on application execution.
Provide input to staff involved in writing and updating technical documentation.
Troubleshoots complex problems and provides customer support for software systems and application issues.
Advise hardware engineers on machine characteristics that affect software systems, such as storage capacity, processing speed, and input/output requirements.
Prepare reports on analyses, findings, and project progress.
Provide guidance and work leadership to less-experienced software engineers.
May serve as a technical team or task leader.
Provide recommendations for continuous improvement.
Work alongside other engineers on the team to sustain and advance our organization’s capabilities.