Software Engineer

Location: Pittsburgh

Job Type: Full Time / Permanent

JOB OVERVIEW:  Our Software Team works closely with highly talented scientists, engineers, and designers and performs a full range of advanced object-oriented software engineering tasks, exercising all steps of SW development lifecycle, from requirements to implementation, including backend and frontend development.

GENERAL REQUIREMENTS FOR THIS ROLE:  BS in Computer Science or related field. • Minimum of 3 to 5 years of programming experience in JavaScript, HTML5, JAVA, Python, and similar languages. • Knowledge of both Windows and Linux operating systems. Linux command line skills and experience with text editor (such as vim) essential. • Good object-oriented design skills, RDBMS/SQL development skills, UI Prototyping, and proficiency in HTML5, CSS, and JavaScript. Familiar with various JavaScript frameworks, including but not limited to D3.js, jQuery, React, AngularJS, and Ext JS. • Experience with Key Value databases. Accumulo a plus. • Experience with various SW libraries/projects within the Apache Hadoop framework, mainly Zookeeper and HDFS. • Experience with GIS APIs, such as ArcGIS, Google Maps, etc. • Training and experience with CASE supported object-oriented software engineering methods (e.g., OMT, UML) and use of advanced OO techniques important. • Understanding of multiple programming paradigms (e.g., OOP vs Functional vs Procedural). • Experience building scalable applications using Node.js. • Experience building production level software for standalone and web-based solutions. • Familiar with AWS platform and services a plus. • Demonstrates strong analytical and problem-solving skills and the ability to communicate their technical knowledge effectively within the team and with the customer. • Excellent interpersonal, verbal, and written communication skills are essential, as well as tolerance for ambiguity at times.

OVERVIEW OF DUTIES/RESPONSIBILITIES:  Develop applications using HTML5 and various JavaScript APIs/frameworks including but not limited to jQuery, D3.js, Node.js, React, and AngularJS. • Support existing applications/prototypes in production/staging environments, troubleshooting and extending functionality as required. • Conduct rapid prototyping of key technology risk areas early in project lifecycle. • Conduct iterative evaluations of system prototypes and operational evaluations of fielded decision support systems. • Work as part of a multidisciplinary team, under the supervision of a principal software developer. • Develop innovative and useful GUI designs for these complex domains.