Career - Matt Whipple

Site Nav

I've spent most of my recent time cruising somewhat aimlessly through my career. This is not to say that it hasn't been progressing, but simply that growth opportunities have been evident or presented themselves rather than needing to be planned or pursued. At this point in my career however the opportunities for non-negligible relative growth have thinned out significantly and therefore attention must be paid to seek out work which offers such promise or is otherwise fulfilling.

This invites deeper investigaion of the primary questions from both around job placement: would a particular position be a good fit for me and what value can I bring to the table.

Assessing Positions

My ability to assess companies is largely untested and underdeveloped; this is something that needs some bolstering if it needs use. I've spent time in positions that left me energized and satisfied and also those that have frustrated and sapped the life out of me. I'll work on capturing some of the properties that have sufaced that help distinguish the two environments but will likely need to do some research and guesswork to develop strategies to externally determine which traits are likely for a given role.

Offered Strengths

I strive to distinguish tool familiarity from less fungible skills, so identifying some of the more durable traits of being a proficient software technologist which are independent of technologies requires some care.

Long Sightedness

While paying undue attention to technologies rather than problems and concepts is likely to breed missteps, so too will disregarding industry trends. Solutions should be pursued which are likely to converge with (or at least won't be left behind by) any wider activity which could prove beneficial to the task at hand. While much of the risks around this (and change in general) can be mitigated by adhering to many of the agile principles, that is often easier said than done and an awareness of the wider space can help prevent inadvertently painting oneself into a corner.

This can take several forms. Most directly being aware of directions which are likely to offer significant ease or power to a solution currently being developed should he factored into the work to avoid wasted effort or premature obsolesence. Recognizing recurring patterns particularly in terms of accidental vs. essential complexity and the challenges or any possible remediations for fundamental problems is key in being able to recognize where attention should be paid and what may be possible or most sensible to delegate to a more packaged solution. Another important aspect in most organizations is to make sure that expertise is available to maintain any solution moving forward in whatever form that maintenance may take. Therefore any shifts in popularity or viability of technologies should be factored in to how support or staffing is to be approached.

The recognition of current trends and how they fit in to longer term patterns should be fostered through experience and reading relevant resources.


Mathemetics underlies most software engineering. While much of development may feel as though it does not rely on mathematics, pretty much anything worth doing involves modeling some form of external problem into a more formal isomorphism; mathematics provides examplary such translations and therefore even when not using what may be considered more obvious maths a deeper understanding of mathematical principles can help produce a more coherent model.

If developing an algorithm a solid understanding of discrete mathematics is also imperative to prove the correctness of the approach or to understand the algorithmic complexity. While these are tasks that may not present themselves often and may not require mathematical rigor when they do, they are also likely to carry high risk where such concerns are warranted.

Author: mwhipple

Created: 2020-10-27 Tue 19:36