After finishing my Dual Degree (BTech+MTech) at IIT Madras; after working on problems involving scientific computation for a couple of years, getting placed at MathWorks was a dream come true. I joined MathWorks India and started working out of Bangalore office on July 4th, 2016. Starting from minor projects with one of the Simulink Teams, within a few months I graduated to a full-time software engineer doing some serious code-wrangling. I learned and sharpened most of the software engineering as well as computer science related skills at the job.
Being part of one of the major development teams based out of India, which worked on the development of core features of Simulink – one of the two flagship products of MathWorks – I was required to leverage knowledge of data structures; design patterns; key concepts of operating systems like memory management, runtime optimization, etc. Working mostly with C++11 and a bit of java, I finished two major projects which went out as features in two separate releases of the product.
I developed the following skills during this time:
Expert level proficiency in C++11 and C++17 including the newest features of the language.
Deeper understanding of core concepts of computer science: Operating Systems; compilers, debuggers and binaries (ELF)
Understanding of various stages of stable development workflow (requirements-specs-development-testing-deployment)
During this time, in order to gain some insights into the working of operating systems, compilers and debuggers, I worked on some pet-projects in my free time: a tiny C++ debugger directly using the ptrace system call on linux systems; a binary introspection utility like objdump/dwarfdump using LLVM library.