Fast jet simulator developer
Location: Budapest, Hungary
Do you believe in the power of native programming? Are you ready to create software where execution time is important? Are you fluent in C++? If so, we have something interesting for you.
- Various C++ development tasks in an exciting domain
- Time-critical code required for the simulation modules
- Additional small Lua and Python tasks: scripting, automation, tests
- A working environment that makes the team stay and grow
- Usually we have enough time to make sure that every detail of your solution is perfect
- Family-friendly working hours, (overtime rare, and it's always compensated)
- We log our working time on daily basis. We have quarterly checkpoints, when overtime gets paid.
The world is not a perfect place, we have a list of things, which we are not perfectly happy with:
- Daily meetings - at least, they are short
- The codebase contains Fortran and legacy C code, and since there are much of it, we cannot replace or re-write these. When you touch legacy, you are encouraged to modernize it
- Our managers try to protect the employees, but it's still a large multinational corporation, we have on average 3 company e-mail accounts, and we have to complete pointless trainings
CAE Inc. is a Canadian manufacturer of simulation technologies, modelling technologies and training services to airlines, aircraft manufacturers, healthcare specialists, and defense customers. Rephrase )CAE was founded in 1947, and has manufacturing operations and training facilities in 35 countries.
CAE Budapest has several groups, most of us work on aircraft simulator modules. The team is split between Budapest and Stolberg (Rheinland), we are working on the Synthetic Environment Server for EuroFighter. This is a larger module, it's responsible for simulate everything but the aerocraft itself: weather, terrain, computer-controlled planes (bots) and their various features.
We take new employees to Germany where they meet the other part of the group, but software developers do not travel often, only 1-2 occasion per year.
For some years, inventors are officially and globally supported by CAE. If someone has a good idea, like a tool, or a product feature, he or she can just start working right on it without any permission from anyone. After given hours spent on the side project, the author should present his or her work to his manager, who can allocate further hours to it, or even convert it to a normal project.
What technology we use
- We use C++. Integration tests are written in Lua, and some code generators, converters are written in Python, but the server application is native. Legacy parts are written in Fortran (we don't have to touch it) and C, but new features are always written in C++.
- As we ship only one module of the simulator, we have to follow others, so that's why we are still using C++03. We are working on it to switch to C++11.
- SE Server is a server module, it's communicating with shared memory and PDUs sent on network. Lua integration tests are sending PDUs to the SE server as if they come from Instructor Station
- SE Server has a small tool written in C++/OpenGL which can show the scenario in wireframe 3D, and there's also a tool which is monitoring internal values. These tools are also developed by our teams
- We are using a dedicated version of OpenSUSE, but besides this, we don't have have restrictions which tool are we using. Hardcore folks prefer vi, others use QtCreator, VSCode, etc.
- We are using GIT/GitHub for VCS, Jenkins for CI, HanSoft for issue tracking
How we work
- A developer may have only one task open at a time
- Bugfix tasks have priority over features
- We have 2-3 week long sprints
- The team members are sitting in a single room, we help each other
What we need
- Strong C++ knowledge is required
- Some experience with shell scripting or any script language
- Understanding of CI concepts, experience with GIT/GitHub or other VCS
- Willing to enhance working environment in all level, from team communication to tooling
- We are happy if you have a GitHub repository full of interesting hobby projects, which we can talk about at the interview
Do you do unit tests?
We have some unit tests, and several integration tests for each feature. Upon a pull request, all test need to be run without errors before changes gets merged into the master branch.
Do you have a build server?
A dedicated set of machines run Jenkins to build the project and run the tests (upon a PR, or just started by hand).
Do you have coding conventions?
We have a written set of coding conventions. We do not change them often, and if we working on legacy code, we don't spend too much time to refactor it just to match the conventions.
What do you think about static code analysis?
Jenkins are configured to run some static checks, sometimes they helps to reveal possible errors.
Back to the job listings