Position Overview -
Our company has a proven track record for designing and building world leading controls for industrial engine equipment such as generators, pumps, and compressors. Our team is made up of experienced engineers who challenge conventional methods and have a thirst for engaging in real world problems with game changing solutions. We are recruiting a talented and innovative-thinking computer science professional to be our in-house language development expert.
The selected candidate will lead the development of an exciting new software tool-chain that will help engine control experts to rapidly implement and
test applications that will run on the company's line of engine and generator control units. Your task will focus on the design and implementation of Domain-Specific Languages that will include mixed programming notations in textual, graphical and tabular formats. You will use language workbench platforms to implement DSLs, and to build and optimize code generators.
You will work closely with our controls engineering experts to deeply understand customer requirements and constraints in order to design tailored language constructs with end user-friendly notations.
Responsibilities -
Map control engineering expert knowledge to appropriate and easy-to-use language vocabulary and concepts
Write and test code to implement DSLs
Write, test, and optimize code generators
Work with the management team to test internal and external use-cases
Research and implement formal verification methods where applicable
Analyze resource constraints and overhead of various DSL and code generation approaches
Help resolve and diagnose toolchain issues from the field
Stay current on the technology and research roadmaps of DSL software tools and the field of model-driven development
Required Experience and Skills -
BS in Computer Science or closely related field
5+ years experience with object-oriented software development and
Java
2+ years experience with development with C or C++
Demonstrated ability to abstract domain concepts and create models
Knowledge and experience in using model-driven software development approaches
Experience with development tools such as git, gcc, gdb, IDEs such as Eclipse or IntelliJ, unit testing, and debugging tools
Ability to effectively interface with in-house engine control experts
Have superior communication skills, both written and verbal
Possess the flexibility and bandwidth to deal with a novel, dynamic and fast-paced environment
Preferred Skills -
Graduate degree in Computer Science or closely related field.
Experience with language development using language workbenches
Familiarity with embedded micro-controllers
General familiarity with hardware architecture such as analog and digital sub-systems
Experience with Real Time Operating Systems
Developer experience with general purpose scripting languages such as Python or Lua
Experience with JetBrains MPS
Experience using formal verification tools (e.g., NuSMV)
International applicants are encouraged to apply. Work visa assistance may be provided.
To express your interest please email enigmapaul (AT) gmail (DOT) com