About my development journey
As far as I can tell, I started programming in March 2018. There was a book at the library
called "Electrical Engineering for Dummies" which I saw and decided to read. At the end
there was a section on programming a raspberry pi using python so I decided to get a
raspberry pi and start with that. Before I knew it I was more into programming then
electrical engineering. After that I continued learning many different programming
languages, frameworks, tools, and such over the years.
I started freelancing in October 2019 and I’ve continued freelancing up until now. I have
had the opportunity to work for various individuals and companies and in so doing to work on
a myriad of different things including frontends, backends, web scrapers, and data
visualizations.
In May of 2023 I started working for CloudOne (an omnichannel digital marketing company) in
Vancouver WA. I worked there for just under a year until I moved to Idaho and had to end
that engagement. In this role I worked as a Full Stack Software Developer. My day to day
involved updating APIs written in PHP, rewriting and patching legacy PHP code, writing new
sites in modern stacks and implementing features for the company backend interface as they
were needed.
I am currently actively searching for a job in software. If you think I'd be a good fit for
your company please contact me at (360) 369-9991.
About my approach to software development
I am very passionate about writing good software. There are numerous things that go into
whether or not software is "good" but here are some of the top things in my opinion:
- Correctness: Software should be correct. If it doesn't do what it is supposed to, then
not much else matters
- Accessibility / Ease of use: If your users can't use your software then it doesn't matter
how good the idea is or how interesting the internals are
- Reliability: No one likes to use software that isn't reliable. Users shouldn't have
to look for workarounds in order to use your software. It should "Just Work" as close to 100%
of the time as possible. It is important to consider edge cases that aren't in the happy path.
- Maintainability: A hallmark of bad software is that it is difficult to maintain. Of
course this is subjective, but if it takes exponentially longer to develop each new feature
then you know something has probably gone awry. Also I don't think that software is more or
less maintainable inherently because it follows some particular design pattern or philosophy.
I have a preference for functional programming where it makes sense, but also use imperative
and object oriented programming patterns when I feel they better suit the problem.
- Performance: Software should be performant as a default. There are some cases where
writing code in the most performant way requires sacrificing heavily on some of the other items
on this list, and for those cases I will often sacrifice a bit of performance. The important
thing in my opinion is that you always have performance on your mind as you develop software.
If you need to rewrite some of it later to be slightly more performant then you should be able
to do so provided you have considered that outcome already due to being performance-conscious
from day 1. There is definitely a balance between maintainability and performance and I do
acknowledge that they can often be at odds. Where exactly the software I'm writing falls on
the spectrum is based on the business requirements and particular problem domain.
- Beauty: Good software should be beautiful. This is very subjective, but I don't enjoy
building software that I hate looking at and will almost always take a little extra time to
make things look pretty even if it isn't the top priority.