
Yes, I am still learning Rust - lukastyrychtr
https://llogiq.github.io/2020/03/07/learning.html
======
brundolf
I used to put every technology I had any experience with on my resume.

Then I started only listing the ones I knew the best.

Now what I do is treat the list as aspirational. "Here are the technologies
that I'd like to work with (and which I'm familiar enough with that I could
figure the rest out on a job)." I try to paint a story with those
technologies: this combination of technologies draws an outline around the
type of work I want to be doing.

I did this recently with Rust on the list even though I've only done a couple
of personal projects with it, and the presence of it specifically made me
stand out to a company that I'll soon be starting a position at! They use Rust
and are sort of a dream job in a couple other ways too. They said the presence
of that language spoke to the personality of the developer, and the kind of
things he was likely interested in.

Takeaways: don't undersell yourself, and tell a coherent story.

Edit: To be clear, I was not being deceptive. Through the interview process
the company learned precisely how well I know the things that I listed - we
even dove into some of my projects together - and they were still excited to
hire me. My point is that "knowing general principles" \+ "being fairly
comfortable in a particular language" is often all that's really being asked
for, and doesn't need to be disqualified with "still learning" just because
you don't know everything there is to know.

~~~
sjtindell
That’s tough because often I’ve had coworkers who give their thumbs up or
thumbs down based on “he had it on his resume and I asked him basic question X
and he had no idea, terrible”.

~~~
goostavos
"He used a for loop instead of a list comprehension. he clearly isn't actually
a Python programmer" \-- actual debrief comments :|

~~~
koyote
I flunked an interview in a similar manner several years ago.

Hadn't done Java in around half a decade but the company recruiter said that
it's not an issue (they contacted me).

Then I got a 30-minute online coding test that I had to do in Java. Took me a
while to remember the syntax but finished the required problem in time and
without issues/bugs.

In the end I got dinged for not using the Java Arrays library for copying an
array (used a manual for loop)...

~~~
asveikau
> In the end I got dinged for not using the Java Arrays library for copying an
> array (used a manual for loop)...

This doesn't sound like a smart interviewer. They are testing your knowledge
of the library ahead of understanding what's going on. I'm pretty sure I've
interviewed some people who could pull out Array.Copy for the interview but
couldn't tell you that it does pretty much the same as the for loop, and that
is much more alarming.

~~~
koyote
> This doesn't sound like a smart interviewer.

I was slightly upset/angry at first but after thinking about it I came to the
same conclusion and ended up being happy that I didn't get to pursue the
opportunity any further.

------
klodolph
I’m still learning Rust, but I’m developing a deeper appreciation for Go. I’ve
already _learned_ Go. As far as I can tell, I’m a Go expert.

Rust has a pretty large surface area. There’s a ton of places where you can
get overwhelmed by choices. For example, when you’re working with slices, you
might find yourself thinking about the pros and cons of different approaches
using indexes, convenience functions, pattern matching, or iterators.

It’s a big toolbox, and sometimes I wish I had a smaller toolbox, even if it
means giving up the choice of which tools to keep.

So, I’ll still be learning Rust for a while, too.

~~~
clktmr
Pretty much what I am thinking. When I use Rust, at the end of the day I will
have spent more time with the language instead of my actual task, and I don't
see this changing given the rate Rust is still changing. It feels like you
have to be a "programming language afficionado" to use Rust properly.

Whereas in Go, there is always only one reasonable way to do a specific task.
You almost forget about the language and just get stuff done.

~~~
cft
Here is a very practical example.

We chose Rust for the current project because our Python program took more
than 1TB of RAM. Rust program carefully manually laying out memory takes 75G.
Other choices in this case are C/C++, but after you get a hang of Rust, it's
actually easier because you don't spend days inspecting core dumps in gdb:
once it compiles it actually works.

~~~
machiaweliczny
What kind of program requires that much ram?

~~~
speedplane
> What kind of program requires that much ram?

Elasticsearch is written in Java, and routinely uses 30GB+ of RAM. I suspect
if it was written in Python, it would use an order of magnitude more.

~~~
lossolo
I think you are confusing VM with RSS memory metrics. Elasticsearch is not
using routinely 30GB+ of RAM, I am using it on machines that have a lot less
RAM. You can additionally set how much RAM you want to give to JVM.

~~~
cft
It would depend on the data set you want cached in memory I would think? And
you set that in a configuration file I suppose. You can probably set it to use
128MB or RAM too.

------
wyldfire
> So, yes, I am still learning Rust.

I have always been very cautious about how much I tout my skill with C++.
Sure, I know a bunch. Probably a good bit more than the average bear. But the
scope of C++ is enormous (even if you stop at C++03 there is a lot to know).
And with new language standards it keeps growing.

Despite ~two decades of experience, I list my skill level with C++ as
"intermediate" because "expert" paints a bullseye on your forehead. I could
imagine tons of C++ questions that I could not answer off the top of my head.
Those probably disqualify me as an expert and would involve a lot of
embarrassing backpedaling in an interview.

I wonder how many times my resume was discarded because they needed someone
with more than "intermediate" level experience with C++?

~~~
dominotw
I learnt clojure _the language_ in a couple of hours.

Ofcourse, I am still learning the library and how to do things better in a
functional way. But I was good to go with the language in a couple of hours.

~~~
sdegutis
And by writing Clojure, you lose a lot of type safety and compile-time
efficiency. Not that that's a bad thing, just pointing out that there's a
trade-off that it makes in favor of a simpler language to learn and implement.
There's also the matter of it being more verbose to represent certain concepts
in Clojure due to lack of syntax, but that's harder to argue.

~~~
samatman
Learn, maybe. Implement, though? Pervasively-immutable data structures and STM
were no walk in the park to write.

~~~
dominotw
clojure's data structures are written in java

~~~
fulafel
Interestingly ClojureScript's are self hosted:
[https://github.com/clojure/clojurescript/blob/master/src/mai...](https://github.com/clojure/clojurescript/blob/master/src/main/cljs/cljs/core.cljs#L7858)

The JVM Clojure story is probably just that the data sturcture implementations
were done very early in the history of the language before all the type etc
directives were there.

------
jaza
Rust is still new and shiny, and is still evolving at a rapid pace. Everyone's
still learning Rust, I'd imagine that even Rust core contributors are still
learning Rust! (The same can be said for most other languages too, although
not all to the same extent). Anyone who is looking for Rust talent right now,
and who discards the CVs of people "still learning", clearly knows nothing
about Rust, nor about hiring good devs.

~~~
melling
1.0 was released 5 years ago.

Swift is younger and I think it’s a great language.

If the tooling is ready and I don’t have to fight it, I’d be fine using Rust.
I just need a reason. Anyone using it for iOS development?

~~~
ElderKorihor
I love Rust, but it doesn't have a strong UI development story yet.

~~~
gameswithgo
very few languages do, and those that do it is usually for just one platform.

~~~
Polylactic_acid
Because native UI is on the decline unfortunately. Its too complicated and
there are too many different systems. If you want a gui in rust you would be
better off having your program start a web server on localhost.

------
Bekwnn
I find this to be one of the reasons I didn't find rust that appealing as an
C++ alternative. Its safety is something I admire and is highly valuable to
many domains, but the two main things I want to abandon with C++ are its
complexity and its compile times. Rust doesn't seem to get away from either of
those.

As someone who doesn't really use Rust, does anyone who does find the
complexity detracts from it a bit as a language? Is there effort to reduce
complexity with the language or does it mostly embrace it?

At this point I find myself mostly looking at modern C alternatives—ones which
manage to stay relatively simple the way C does, but with a few additional
features and better designs (Zig, Odin, maybe Jai, etc).

All that said, I work with C++ and so I could see myself potentially working
with Rust in the future, so I'm curious how people feel about its complexity,
especially given that its complexity will presumably only increase with time.

~~~
steveklabnik
The problem is that there's no standard definition of "complexity," and so not
only is it really hard to answer your question, it's also really hard to
compare one language's complexity to another.

I personally subscribe to the "waterbed theory of complexity", that is, I
believe that the world is complex, and often, attempts to remove complexity
cause it to pop up somewhere else. Rust's goals have an inherent level of
complexity to them, and so require a certain degree of complexity to
accomplish. There is an argument that if we had dropped one or two of those
goals, we could have made a language that is _much_ simpler, but I'm also not
sure Rust would be as popular if we did.

One thing we strive for with Rust is that features are reasonably _orthogonal_
and work well together, without weird corner cases. We also try to only add
more features when the cost is actually justified. We have said "no" to a lot
of things. We have also tried and rejected a lot of things.

You also may enjoy this blog post of mine:
[https://words.steveklabnik.com/the-language-strangeness-
budg...](https://words.steveklabnik.com/the-language-strangeness-budget)

(I should also note that I'm not actually on the lang team, so this is more of
a statement about what I observe and my own opinion rather than policy,
strictly speaking.)

~~~
01100011
> attempts to remove complexity cause it to pop up somewhere else

Yes, but sometimes the average brain is better at dealing with certain types
of complexity. C++, IMO, puts the complexity in the wrong places. Programming
is inherently complex, but it shouldn't be any more so than it needs to be and
the complexity should be of the type humans can manage, as much as possible
anyway.

~~~
steveklabnik
I don't disagree! Well, I might disagree that they put it in the "wrong" place
exactly; I think that the committee is doing the best that they can given
their goals and constraints. I do not have the same goals and constraints, and
therefore prefer to use other languages.

------
billconan
I am researching a backend programming language for a future project. I am
debating if I should choose rust fearing for the difficulty of hiring.

~~~
adamnemecek
I think that you'll actually attract all the right people.

~~~
billconan
But we need to control the burning rate. (We are a startup) the right people
are expensive.

~~~
adamnemecek
Hire remotely.

------
just_myles
We are all always learning. I am all over the place from java, shell, awk,
python, and now I'm playing with Go and I kind of like it but can't find the
time to actually make something useful so I can learn from it.

------
allengeorge
I don’t consider this a positive.

I would, on balance, prefer to have a language with a smaller feature set that
limits the amount of syntactic variability in the code I see. This, I believe,
allows me to focus on the problem, not on the language features the person is
using to solve the problem.

With Rust it always feels like there are changes and, at times it feels
exhausting having to ‘keep up’. It also means that there’s high variability in
the code you see in the wild.

------
tus88
It's like C++ - no-one can ever know it all.

------
luord
This is applicable to any language with a sufficiently big ecosystem, but the
thought is sound.

------
markmm
Rust is a terrible language. It has an identity crisis. Thinks it's a high
level but also system level language. You cant be both. The unix philosophy
always wins. Do one thing well. C is the perfect system lang and
Java/C#/Lisp/Python etc are the cream of high level langs.

~~~
jaza
Rust has always clearly labelled itself as first and foremost a systems
programming language. It strictly maintains performance and safety as its top
priorities. It doesn't go out of its way to be easy to learn or to use,
compared with higher level languages. Doesn't seem to me like there's any
identity crisis.

