News for hackers. Stuff that matters.
Re:Ask HN: Self-taught webdev with lots of free time. What s... by nicoburns on Wednesday August 12, 2020 @10:29AM (#24132361)
Honestly, in terms of employment you don't need to learn anything at all. Your skillset (which is quite similar to mine) is highly in demand. What you'll probably find is that you can specialise in any of the areas you already have skills in simply by advertising yourself differently.

However, it's always good to learn more. I have a couple of suggestions:

1. Rust. The Rust book is an excellent introduction to lower-level programming languages, and also to more functional patterns. I went into it from a primarily JS/PHP, and it's been a wonderfully refreshing experience. And it's also been an excellent way to level-up my programming experience.

2. Embedded programming. Get yourself an Arduino or an ESP32, and make something that connects to the physical world. Lot's of fun. You can technically combined this with Rust, but I'd recommend sticking to C/C++ for embedded work (at least at first) because it's much better supported.

3. AWS / Kubernetes / Cloud computing. Managing large amounts of infrastructure on these platforms is an art unto itself. And it's worth learning if it's something you have an interest in. I'm not usually a "training" kind of guy, but I'd recommend doing some kind of course / using structured learning materials for this. Because there's so much tribal knowledge that needs to be acquired.

Re:Ask HN: Self-taught webdev with lots of free time. What s... by tndl on Wednesday August 12, 2020 @11:10AM (#24132817)
I'm in a similar situation to the original poster, and I've chosen Rust. Tim McNamara wrote a compelling post making the case for why Rust is a good choice for your 'novelty budget': https://tim.mcnamara.nz/post/621040767010504704/spend-your-n.... Rust has also made me a way better engineer in the time I've been learning it. I've used it for some dabbling in embedded dev, and the cortex-m support (especially for STM boards) is very good. I think the Rust Programming Language (the Rust Book) is a great intro, but I found that making the jump from JavaScript to Rust was daunting in some places. I put together a little intro blog post that approaches learning from that angle: https://tndl.me/blog/2020/introduction-to-rust/
Re:Ask HN: Self-taught webdev with lots of free time. What s... by thatcodingdude on Wednesday August 12, 2020 @10:43AM (#24132495)
By "The Rust Book", do you mean "The Rust Programming Language" ?
Re:Ask HN: Self-taught webdev with lots of free time. What s... by adventured on Wednesday August 12, 2020 @11:52AM (#24133272)
Obviously everyone is going to have a different opinion in this thread. I'll throw mine in there as well.

With a PHP background such as yours, I'd very strongly suggest Go over Rust. You'll pick up Go very easily (far faster than Rust, which has a high learning curve), Go jobs pay as well as Rust, it's in high demand, and it's going to remain in high demand for a long time. Most people can become productive in Go the first week they start learning it. Go lends itself to a webdev orientation far better than Rust; Rust is very weak in the webdev arena, you'll be endlessly frustrated by that fact.

My background is 25 or so years of webdev experience, with an early background in Java, Perl, ColdFusion and I've been using PHP since 2005 or thereabouts (I use it for CRUD work). Over time I added Python and then Go. I was able to be productive in Go immediately, and you'll find similar stories all over the Web. It's mostly a delight to learn.

I've also been handling nearly every aspect of the backend infrastructure for two decades now (servers, cache, security, database, etc), and Go is also very nice to deploy. It's dead simple and lightning fast for most things.

One side note, if you don't have much experience building APIs, I would put some focus there in tandem with Go. Being good at building and deploying APIs is a valuable skillset to have. I regularly use Go for such services and it performs like a champ.

Re:Ask HN: Self-taught webdev with lots of free time. What s... by nicoburns on Wednesday August 12, 2020 @10:44AM (#24132509)
Yes indeed. The free online version (which has the same content as the printed version) is available here: https://doc.rust-lang.org/book/
Re:Ask HN: Self-taught webdev with lots of free time. What s... by thatcodingdude on Wednesday August 12, 2020 @10:55AM (#24132626)
Thanks. Rust has been recommended a bit in this thread so I'll check it out.

Out of curiosity, what's the appeal of learning Rust ? What kind of projects do you use it for ?

I find that I can solve mostly everything with a blend of PHP/JS, but I also never escaped web CRUDy stuff, and PHP is very well suited for these.

Re:Ask HN: Self-taught webdev with lots of free time. What s... by K0nserv on Wednesday August 12, 2020 @12:13PM (#24133524)
I'm a big Rust fan and have been using it for three years at this point. However, I read nicoburns's original recommendation as "It could be fun and intellectually rewarding to learn Rust", not as something they suggested because it's directly applicable to a lot of projects.

Personally I would say learn it because it's one of those languages that changes how you think about programming as a whole and learning it will make you a better programmer in every language.

That said, I think Rust shows the most promise in a few places:

1. Pretty much anywhere you'd historically use C or C++.

2. WASM

Because Rust can expose C style FFIs you can use it to speed up hot code paths in almost all scripting languages(Python, Ruby, PHP, JS etc). This can be very useful because it allows you to keep most of your code in the scripting language that you and your collaborators are familiar with, while benefiting from Rust's strengths too.

For WASM I think Rust is currently the best choice, it has excellent tooling to work with the web, it's by far the most approachable suitable language for someone who already knows JS, and it doesn't have a big runtime or GC which makes many languages non-starters for the WASM usecase.

Some people would tell you it's a good choice for general purpose backend and there is an ecosystem around that, but I would say if that is your goal Rust offers nothing that Go doesn't do better or at least as well.

Re:Ask HN: Self-taught webdev with lots of free time. What s... by eatmygodetia on Wednesday August 12, 2020 @11:05AM (#24132758)
It's a general-purpose programming language, so it can be used for most projects. Most problems can be solved with most languages, sure, but rust is fast and "safe", so people flock to it.

It has some nice features. Personally I never found myself besotted with it, in fact I rather dislike it and suggest ada instead. But rust is much more likely to get you a job.

Re:Ask HN: Self-taught webdev with lots of free time. What s... by paledot on Wednesday August 12, 2020 @04:29PM (#24136532)
Not sure about employability, at least here. A few months ago I searched for Rust job postings in Montreal (a decent-sized tech hub), and the only three results were Morgan Stanley accepting Rust as a "C++ or similar" language, and two listings for professional aircraft painters.

Still playing with it for funsies, though.

Re:Ask HN: Self-taught webdev with lots of free time. What s... by eatmygodetia on Friday August 14, 2020 @09:06AM (#24157373)
Maybe not. As I say, I don't use it, but perhaps I'm not so immune to the hype of it as I thought.
Re:Ask HN: Self-taught webdev with lots of free time. What s... by chronal on Wednesday August 12, 2020 @11:36AM (#24133107)
Would you mind sharing your thoughts on why you'd suggest Ada? What features of Ada make it an interesting/useful language?
Re:Ask HN: Self-taught webdev with lots of free time. What s... by eatmygodetia on Friday August 14, 2020 @09:17AM (#24157513)
I'm suggesting Ada because in my mind it satisfies a similar niche to Rust, but offers a different perspective to Rust. Also I like it more.

Ada is part of the Pascal family, but goes further as it were in all the Pascal aspects, making it essentially the ultimate Pascal. In that regard it's interesting just by being different from C.

It's much more verbose than a lot of languages, which some people like, some people don't, I do. But even if you don't, it's nice to explore some of the design decisions taken in a language designed for use in large-scale systems with long lives.

It was created as /the/ language of the US Department of Defense, which once again may not interest you. I think that in itself makes it exciting, despite having almost no interest in any other aspect of the US.

The compiler has a linter (I guess is the right word) built in, similar to Go or something. It also checks for all sorts of other little errors or potential problems like misspellings, scope, overflows, and off-by-ones. As a language designed to be used in systems controlling space equipment, train networks, and other massive and important things, these features are quite important. I guess more languages have these things now but they were an Ada priority from the beginning.

Useful is definitely relative and for a lot of things Ada won't be the best choice. I've used it for very little, but I think it's a really well done language for the most part that suffers from not being so popular. Now that a lot of other systems languages are getting thrown around - Rust, Go, and things like Nim and Zig - I think Ada should get a share of the light too.

But ultimately I just think that "learn Rust" is said much too often with much too little justification when so many other languages that could be equally as enlightening or fun are around.

Re:Ask HN: Self-taught webdev with lots of free time. What s... by fortran77 on Wednesday August 12, 2020 @11:26AM (#24132986)
> 1. Rust.

Here they come! Right on cue.

Re:Ask HN: Self-taught webdev with lots of free time. What s... by thatcodingdude on Wednesday August 12, 2020 @11:42AM (#24133163)
What do you mean ?
Re:Ask HN: Self-taught webdev with lots of free time. What s... by davidhowlett on Wednesday August 12, 2020 @11:49AM (#24133243)
Every time rust is mentioned on HN people talk about how wonderful rust is. They are jokingly called the rust evangelism strike force.
Re:Ask HN: Self-taught webdev with lots of free time. What s... by fortran77 on Wednesday August 12, 2020 @02:24PM (#24135122)
Every time Rust _isn't_ mentioned, the Rust people turn the thread into a Rust discussion.
Re:Ask HN: Self-taught webdev with lots of free time. What s... by jtsiskin on Wednesday August 12, 2020 @11:49AM (#24133237)
It is a bit of an inside joke that people on HN have an infatuation with Rust
Re:Ask HN: Self-taught webdev with lots of free time. What s... by pdubs1 on Wednesday August 12, 2020 @11:07AM (#24132784)
I 2nd the 2nd point above. But I'd say: If you check out the ESP32, also checkout micropython.

"ESP32 Tutorial using MicroPython - Let's Get Started!" https://www.youtube.com/watch?v=QopRAwUP5ds

A ESP32 mounted on a breakout board is super easy to pickup and run with-- https://www.adafruit.com/product/4172