Join the MathWorks Infrastructure and Architecture team, to help design and implement the next generation of tools and technologies used to build the MathWorks family of products.
Typical projects include software build automation, cross-platform abstraction layers, systems programming, and optimizations to build infrastructure for performance.
Optimize the existing build infrastructure workflows for performance.
Innovate to improve existing infrastructure and architect system-wide solutions.
Design and implement solutions to profile and measure the software build performance.
Participate in porting the codebase to newer compilers, platforms, and C++ standards.
Design and develop infrastructure to prevent software build problems.
Contribute to the development of distributed build infrastructure.
Work on enhancement to infrastructure that helps modularize MathWorks software.
Document work to help train and educate developers about the build system.
A bachelor's degree and 7 years of professional work experience (or a master's degree and 5 years of professional work experience, or a PhD degree, or equivalent experience) is required.
B.E / B.Tech or M.E / M.Tech in Computer Science, Engineering, or relevant technical field.
Prior experience with developing build systems for a large codebase.
Be comfortable with multiple operating systems, development environments, and languages (C++, C, MATLAB).
Experience working with build software distributed systems such as distcc, Incredibuild, Ccache.
Experience using GNU make.
Experience with Microsoft Visual Studio, Clang, or GCC.
Exposure to internals of Compiler, Linker or Debugger, etc.
Experience with programming and debugging in one or more languages like Perl, Python, or Golang.
Experience with software configuration management tools such as Perforce or Git
Attention to detail, Critical thinking, good problem-solving skills
Toolsmith" attitude, craftsman, enjoys writing utilities and automating processes to streamline development
Excellent project coordination skills, planning skills, verbal and written communication skills.
Independent learner and self-directed takes initiative while working within a team context.
Able to handle multiple tasks simultaneously, and balance priorities with good time management.