About Me

My name is Mike Lankamp and I am currently a Senior Software Engineer 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.

There my responsibilities---aside from normal responsibilities as a senior 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.