Rustacean in a Golang World

I’m having a tough time over here.

This is not meant to be a language war. I’m looking for advice.

I write a lot of services which could be handled by Go. I have a good understanding of C/C++, and actually like them.

The way Go handles generics and templates, plus the structure of the signatures of these language features, to me, are ugly and make the code hard to read. Furthermore, I find the language to be inconsistent in how it structures similar “types” to generics and templates.

On the other hand, Rust, look “normal” to me. Honestly, after a deeper dive into Rust, it makes sense to me, the structure looks good, and simplifies a lot of the things that require serious attention in C. For a lack of a better way of saying this - Rust makes sense to me.

Also, the documentation of Rust, to me, seems more useful.

So, I was able to solve a relatively non-trival problem with Rust in a weekend, in a way which I would say was well-done. I could have written it in Go, but it would have taken longer, and would have had a lot of repeated code because the template and generic system is kinda rough for me.

The issue is, that for my role most people would use Go since it’s more “webby” and in my opinion ‘simpler’. However, for me, even though Rust isn’t as simple, I understand it. Therefore, I can be as productive with Rust, as lets say, a coworker who would use Go.

The rub is that purpose of Rust seems to be more systems programming, rather than generic programming language.

My question is, learning Go is going to be painful for me, whereas with Rust I’d probably get good quick, but I doubt it’s right for my current role.

Wat do?

To give you an example of “It makes sense to me” is the ownership/borrow system of Rust. The fact that it isn’t garbage collected is actually clearer to me. Perhaps for some that would be confusing, but the fact that it’s not garbage collected is easier for me to understand.

I’m not saying that’s true for everyone, but for me, that’s what I mean when I say Rust makes sense.

I’m having a hard time because I’d suspect I’d be a more productive developer if I wrote Rust, even in my current role (say using Rust instead of Go).

Further, I’m not sure I fall into the “systems developer” world (at this time) and suspect it would be hard to find position where using Rust is okay.

My question is, learning Go is going to be painful for me, whereas with Rust I’d probably get good quick, but I doubt it’s right for my current role.

Wat do?

Keep this in mind when you think about your career progression. What do you like doing versus what you do in your current position. Your next job probably should consider taking in more systems programming in a Rust shop.

Your employer is paying you to write their code, not your own.

The ability to move developers from one project to another with a common set of resources is a non-technical business concern. JavaScript and Python aren’t popular because they’re superior, they’re popular because of the deep pool of qualified applicants in those languages. Go is popular for the same reasons.

2 Likes

Yeah, I agree with your sentiment.

I’m in a tough position because I like my employer.

I’ve seen a struggle for sourcing solid developers who can write reliable, scalable and secure systems, not because of a lack of a pool of people who “know a programming language”, but because there’s not a ton of quality system design talent floating around.

Outside of Go, the other languages available are Ruby (write a lot if already), Python (even more), and C# (no thanks).

I could stick it out and write Go, but I think it would be soul crushing. On the other hand, my employer would probably agree to let me write in Rust because I can do what I mentioned early fairly well. The draw back, is that I would be the only person around using rust (no team support), and I doubt I could catch everyone up on how to use Rust, because it’s not such a “simple” language.

I don’t really like the idea of jumping ship because that would be a loss for my team. On the other hand, since I’m even thinking about this, I’m not sure I fit in with my team. In the sense that I’m a scratch C programmer, which really isn’t that common, at least from what I can see - and perhaps I’m better suited to find a team with like members.

Two things:
Am I off there?
Also, realistically, what types of jobs are you seeing out there that are using Rust?

A thousand times this. Most bootcamps and college programs barely touch on the system design bit. They just assume that system design. along with version control, is something you’ll “pick up as you go”.

It has now been 6 years since I took my master degree in robotics. That program taught me system design and is one of few programs that actually teaches it. It is unbelievable how much of a difference 3 years of constant project courses and system designs prepared me better for the real world, than the algorithm and embedded systems courses. It did take this long to realize this though…

CompSci needs a kick in the gonads, for sure. It’s impossible to find qualified persons because college no longer train qualified persons for 2023, they train them like they did 2013…

Oh, and as for your preferences - I think writing web in Rust is about as painful as writing web in C. You can do it, doesn’t mean you should.

1 Like

Python and Ruby do this well, for me. However, sometimes it’s easiest to just compile something and send it to your friends/co-workers to solve a problem. I’ve done this with Go a few times, actually.

For now, I’m considering just swapping Go for Rust on the tools I write, and continue with Python and Ruby for the bigger work loads until I get my life figured out lol.

1 Like