@sudocode_

Transitioning to Backend Engineering

August 19, 2024 / 5 min read

Last Updated: August 19, 2024

I’ve been a frontend engineer for years, and I’ve always wanted to switch to backend engineering. I’m thinking of becoming a full-time backend engineer or a “Full Stack Engineer.” I’ve built a few full-stack projects on my own using Remix, Prisma, PostgreSQL, and others, but I never thought of myself as a Full Stack Engineer.

I’ve always been confused about where to start and which language to learn. Python and Go (Golang) have always seemed like good choices for me because of their strong features. I picked Go because of its speed and performance. As an engineer who’s used JavaScript and TypeScript, I found that Go is a statically typed language, where types are known at compile time rather than runtime. This is better than Python, which is dynamically typed, where types are determined at runtime.

main.go

1
var x int = 10 // Explicitly typed
2
y := 20 // Type inferred as int

But before I keep going, I need to talk about how I answered my two main questions.

How I Began My Journey into Go

I know I’m not the only one who’s totally confused about this question. It’s like, one of those deep philosophical questions that everyone thinks about at some point in their life. Where do I even start? It might seem like a simple question, but trust me, the answer isn’t easy to find.

So, there are like, a million programming languages out there, and it’s super hard to decide which one to learn. They all do similar things, but some are better at certain things than others.

I was thinking about learning Go, but it wasn’t easy. I liked the way it looked, and I thought it would be a good idea to start with a new language like that. That way, I could learn it slowly and build up my skills over time. Plus, the Go community are really nice, so I felt like I could ask them for help if I needed it.

I’ve been exploring the world of Go, and I’ve found a Go subreddit that’s been super helpful. The community there has been really supportive of my learning journey. I’ve started reading some recommended Go books, like ‘100 Go Mistakes’ by Teiva Harsanyi, ‘Everyday Go’ by Alex Ellis, and ‘Let’s Go and Let’s Go Further’ by Alex Edwards. I know I’m still a total newbie, having only used Go for a few months, but I feel like I’ve made the right choice. I’m super excited to keep learning and exploring the possibilities of Go!

Why I chose Go

As I mentioned earlier, I chose Go because of its speed and performance, but that’s just the beginning. Go has some really cool features that are easy to learn and use with a clean syntax.

Here are some reasons why I chose Go:

  • ArrowAn icon representing an arrow
    Clean syntax: - Go’s syntax is super simple and easy to understand. This makes the code more maintainable and readable.
  • ArrowAn icon representing an arrow
    Static typing: - Go is a statically typed, compiled language, which means it’s much faster than Python, especially when you need to do things like handle a lot of data at once or work in parallel.
  • ArrowAn icon representing an arrow
    Standard library: - Go has a really powerful standard library that makes it easy to build all kinds of programs without having to rely on third-party libraries. This is great for beginners like me who are just starting out and don’t want to get delayed in the details of how to use different libraries.
  • ArrowAn icon representing an arrow
    Community: - The Go community is super friendly and helpful. There are lots of resources available online, like tutorials and forums, where you can ask questions and get help if you need it.
  • ArrowAn icon representing an arrow
    Performance: - Go is super fast and efficient, which makes it a great choice for building high-performance applications. This is especially important for me, as I want to build web servers and other programs that need to be able to handle lots of requests at once.
  • ArrowAn icon representing an arrow
    System design: - Go’s system design is similar to system programming, which means I get to learn concepts like memory management, pointers (although they’re not as advanced as in other languages), and concurrency control.

Here are a few reasons why I picked Go, but as I keep learning Go, I hope to discover more about it and its inner workings. I’m excited to see how much I can improve my skills in Go!

The Journey So Far

Through my learning in Go, I’ve been able to build a few projects. Currently, I’m building an auth service using the Huma Rest API Framework with Chi as a router and plan to open-source it. The primary focus of this project is on learning, structuring, and building a secure auth service using Golang. While it aims to achieve the level of security expected in the field, the main objective is to learn and catch up on my knowledge. The project is open-sourced and can be forked and reused. However, it would also be helpful if you see this project and would like to contribute to the service.

I’m also planning to build a few more projects in Go, like an Ecommerce API, a web server, and a CLI tool. I’m excited to see how much I can learn and improve my skills in Go!

Liked this article? Share it with a friend on Twitter or contact me let's start a new project. Have a question, feedback or simply wish to contact me privately? Shoot me a DM and I'll always be available to respond to your messages.

Have a wonderful day.

– Felix

Every year I like to take a moment to reflect on the year so far and set some goals for the rest of the year. This year I'm doing it publicly.