About Me
My name is Mike Lankamp and I am currently an Expert Software Engineer and Tech Lead at TomTom.
In TomTom, I am the tech lead of the team responsible for addressing system-level issues and implementing system-level features in NavKit, TomTom's navigation engine that lies at the heart of all their navigation products.
My responsibilities—aside from normal responsibilities as an expert software engineer such as helping design and implement new features, understand and communicate their impact and analyze, investigate, prioritize and fix reported issues—include representing our team at product-wide alignments, ensuring technical readiness of upcoming features, guarding the quality of the team's code and communicating with customers and product architects about the team's features and architectural future.
I strive for perfection in what I create, but realize that pragmatically, that is not always attainable. I have an eye for detail and can consider the border cases of programs and solutions. When presented with a problem, I can readily see the best way to utilize the programming language of choice to implement a solution. I understand and am well-versed in Object-Oriented design and most of the programming paradigms and software development patterns.
As a result of my interest and experience with processor architecture design I understand the operation of a program from top to bottom and understand how seemingly trivial design decisions could have significant performance impact. I understand concepts such caching, virtual memory, paging and its effects on performance, yet I believe in the saying that "premature optimization is the root of all evil".
Coming from a research background, I am capable of out-of-the-box thinking and independently investigating solutions to a problem; yet from an engineering point of view, I also understand that complex solutions raise additional challenges in readability and maintainability. As is said, "Keep It Simple, Stupid!"
I thoroughly understand the operation, issues, benefits, pitfalls and complexities of multithreaded programming because of my experience with multi-core processor architecture designs and debugging them.
I have worked in a team, in various roles. I have implemented new features and fixed bugs. I have researched solutions to problems and I have guided members of the team in understanding and using those solutions.
In conclusion, I believe that my enthusiasm for, and history of software development make me a good software engineer and that my background in academics makes me a good computer scientist.