From youth to adulthood.

You ever have a conversation with someone, and think, “Hmm, I should probably write this down, I actually made sense just now.” Well that happens to me all the damn time.

Take for example how occasionally in conversations back home, people will ask what I enjoy about being a software engineer. Sometimes they ask how I started or ask for guidance getting into in software engineering themselves. For each conversation, I try to provide a genuinely sufficient answer.

Most of the time, what ends up happening is I respond hastily and poorly. I never think clearly enough to piece together all the important points comprising my narrative and which would give them a satisfactory answer. Sometimes if I am pressed on time or just feeling lazy, I respond with, “I don't even know how I came into it, I guess just randomly.”

And if, I'm lucky enough to say something halfway intelligent, which is rare, I think to myself, “I should probably write this down. But not now. Maybe later...”, (cut to a week later, and I still wouldn't have written anything down). This is just on example of many, where I'm too naive. I'm always too naive when it comes to thinking my future self will actually take action to write down or even remember such thoughts. This cycle, of trying to remember, remembering, then forgetting again, has played out dozens of times.

But now is the time for me to break this cycle. Written below is the result of me finally finding the time and energy to collect and summarize my thoughts. Even more than just breaking the cycle, putting into words has helped me in the following two ways:

  1. Personally its helped to gather up all thoughts I have had on separate occasions. And collect them up into an easier to understand, more linear narrative. In doing so I forced myself to reflect on how far I've come and what I have done. Ultimately I feel I have gained a deeper understanding of my own experiences.
  2. The second way writing this has helped me, is in fulfilling my goal of being more open and candid about all my painful mistakes and other hard-earned experiences. This beneficial personally as it is partially therapeutic. And it is also beneficial for you, dear reader, as you will at least be able to laugh at my mistakes, or you might even learn how to avoid similar errors for yourself.

With all that said, read on and enjoy. Thanks, Matthew

Youth

When I was young, I enjoyed being active playing hot lava tag, soccer, hockey. I loved building with legos, reading books, drawing with crayons, roleplaying with Rokenbok, and many more things I have unfortunately long forgotten.

What I know for sure, is everything I enjoyed forced me to be active, creative, and imaginative.

I remember vividly how much I loved building spaceships out of Legos. I would start with a rough idea of what I wanted to build, I would then go scavenging through the lego bin, enjoying the process of finding parts to use for wings, weapons, engines, etc. As I would get close to building up a complete spaceship, instead of playing with it, I would become upset at the configuration.

So instead of sitting back and enjoying the creation, I would become annoyed at the lack of symmetry of my ship. Or be frustrated my ship was missing a feature due to my limited supply of unique lego pieces. At some point my frustration would reach a critical point where I would break the ship apart, start over again and begin anew saying to myself, “this time I am going make it better and cooler than that last one". I would do this again and again. Repeating the pattern of enjoying the building, becoming dissatisfied with the result, and constantly trying again.

My affinity to this cycle of building, becoming dissatisfied, and creating again, would eventually lead me latter in life, to seek activities that afforded me a large degree of autonomy and creativity. Unfortunately this pattern has negative consequences too. A dark side which is also equally important to elaborate on.

I'll get to the darker side latter, but for now I want to acknowledge how fortunate I was and still am. For I am acutely aware of how important and lucky I was to be born into a family which valued education and would consider spending so much on interesting toys as rational.

What do you want to be when you grow up? — every teacher ever

However I didn't really start getting serious into programming until I switched my major from business and marketing over to computer science.

Now, just backing up for a quick second, to give a little context as to why I switched, it's important to know that I had played ice hockey all through growing up, and during high school a large group of my friends were interested in sports marketing. But I was also friends with some of the more geeky kids who were interested in woodworking, video games and tinkering on computers.

Imagination, Redux

My personality was somewhat split on what I wanted to do. And I was like this all the way up until I took a computer science class my first semester in college. It was in this class, where I actually started understanding code and experienced once again, my early childhood creativity.

In this class I begin to program up cool little visual sketches. Creating characters bouncing around on the screen, creating animations, and I was just really just loving the whole ability to bring to reality whatever I could imagine.

From that point forward I was enamored on the idea of being able to code and write software programs which let me realize again some of that early childhood ingenuity and creativity.

First Real Gig

Fast forwarding through a few semesters, I took on a campus job working for the campus IT department. It was just part time considering I was still taking 18 plus units of classes, but in those 20 hours a week I crammed down and consumed as much experience as I possibly could.

2x Bonus XP

Now before I list out what I did, I want to preface it by saying that I believe this job really accelerated my growth as a software developer. So much so that I felt like I was light years above my peers in terms of experience and professionalism by the time I graduated.

The reason I feel confident in this statement is when talking to my classmates and asking them about what their internships or jobs were like, almost none of them( a few exceptions, one being an hardware internship) described anything close to the intensity of what I was doing.

Campfire Stories

To give you an idea of what kinds of novel(for me at least) situations I was thrust into heres a collection of notes I saved:

  • "The student health messages are served from a mainframe, and the output is in a jsp page I believe. We will probably have to create a few cron jobs and some html scrapers to pull the messages. No one has docs."
  • "The meeting with IT from the WELL (campus gym) was useful, for a change. He can provide access to the SOAP api giving data on how many students are currently at the gym. Next steps: Creating the chart, D3.js would be fun, and dashboard to eventually surface this data. 2.Mock endpoints. 3 Read api docs for card swipe system."
  • "We setup a dropbox-esque endpoint for the student government to upload pictures for their student life component yesterday, but problem is they broke it by uploading a bunch of other random crap besides decently sized images. Now I'm gonna have to both setup some scrubbers and validation for that folder, as well as come up with better documents for them."
  • "These meetings have been going on for way to long, everyone is talking around the problem and not actually getting to any plan we can act or actually deliver on… campus and office politics… are they a necessary evil, I sure hope not?"
  • "Student government is really passionate, I'm glad we collaborated and prototyped ideas with them, for it really gave us good direction and some concrete timelines for this project. Mental note, make sure to communicate our status with them."

So as you can see this was a big wake up call for me in that I had to learn so much more than just the technical issues, but I also I learned to:

  • Clearly communicate issues to managers and other leads
  • Independently make sound judgments which I could back up with evidence.
  • Prototype and develop for every part of development lifecycle, meaning I learned how to go from user research to development to release, and then maintenance.

After a while I became dissulisioned by the amount of pointless meetings and office politics, and consequently I was interested in placing myself into a different environment, preferably off campus, so I found an interesting job dealing with seismic sensors and other earthquake related data at the California Geological Survey or CGS. This was a good foray into less glamorous development work such as maintenance of legacy software, and responsive graphs.

Beginning Benders

I can recall when I actually started understanding code which did something more than just the run some windows bat script.

It was using a programming language called processing, which was a java based, visual programming environment.

It was great experience in that with the introduction of each new principle, say for loops, arrays, classes, I was able to build up more interesting visual sketches.

Looking back on it, I had a ton fun being creative and struggling through the java concepts. It took a lot of

What am I doing now

I am currently a front end software engineer, with my most recent focus, among other things, on creating and supporting the design of performant, accessible, and intuitive web applications.

Or to be more specific in regards to the recent tools used, I have been using Javascript, React in particular, as well as HTML, CSS, and SASS. With tools, along with my knowledge related around the tooling such as Webpack, Babel, SASS, etc. I have been creating single page apps that are fast, accessible and intuitive to use.

More broadly applicable to software development, I have a strong background in foundational algorithms, architectures, and software design. This being from both my professional experience as well as my BS in Computer Science from Sacramento State University.

I have developed intuitive interactive data visualizations and user experiences for large content driven websites, small admin dashboards, and forms of user data.

I have significant experience with the tooling, frameworks, preprocessors, libraries, etc, which surround and are paramount to a front end developers efficiency. Examples include, React, Backbone, SASS, PostCSS, Webpack, Gulp, Babel, etc.

Links

Oakmont Construction Tech


Matthew Clemens © 2022