So you got a job as a software engineer. What now? There are 1,000 technical skills that you can dig into. There is always a new framework to learn. Your company probably has a large codebase that you can get familiar with. You need to know Git, the command line… the list goes on. In many ways, how you approach career growth is more important than the specific things you learn. In this post, we’ll look at 5 tips for helping you grow as a software engineer. We will not be talking about specific technologies since those change all the time. Instead, we’ll look at the mindset that will best help you advance in your software engineering career:
Recently, I was thinking about how many of the nontrivial problems that I run into with software engineering boil down to a few simple problems. Just look at any book on algorithms, and the majority of them will be some variation on sorting or searching collections. Google exists because the question of “what documents contain these phrases?” is a genuinely hard problem to solve (okay, that is vastly simplifying the enormous scope of Google’s product, but the basic idea still holds).
Recently I was looking into options to add rate limiting to a specific endpoint
in an application at work. Most endpoints are only exposed internally, and we
are careful to not make more requests than the system can handle. However, in one
case, the endpoint is open to our customers, and it runs some pretty intensive
database operations, so we wanted to limit the rate at which clients can make
requests. This functionality is available in pretty much every API gateway out
there as well as in a lot of reverse proxies.
In our case, application updates are easier to make than config updates, so we
opted for a simple solution that we could deploy as part of our Node.js app.
For years, my dream project has been to build a database from scratch. For
most of my career, the most challenging questions have revolved around how to
ingest, store, and query data in a performant way, and while I have found a
number of really great solutions, there usually has not been a single product
that can meet all of the requirements.
For the past few days, I have been playing around with Elixir to build
an API gateway for WP-Pulsar. While I am far from an Elixir expert (I’d
barely even consider myself and Elixir novice yet), I have really started
to fall in love with the language!