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.
- 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
- 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)
Please forward resume with cover letter to: