I am a software engineer


Links

Projects

Tools I Use

Languages I have experience with

Languages I'm interested in mastering

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 made my first money programming in October 2019 through Freelancer. I started working for CloudOne in May of 2023.

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.