12 ms·
Yes, I am still learning Rust
- just_myles 7y agoWe 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.
- wyldfire 7y ago> 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++?
- deleted 7y ago[deleted]
- jerf 7y ago"I wonder how many times my resume was discarded because they needed someone with more than "intermediate" level experience with C++?" Don't be afraid to write "expert" with an ∗ with an explanation. You pass the initial screen and anyone hiring an "expert C++ programmer" who won't understand that caveat you gave just there is probably someone you don't want to work for anyhow....
- deleted 7y ago[deleted]
- bob1029 7y agoI wouldn't hesitate to place "Expert" on your resume if you feel you are exceedingly competent in many, but not all, areas. No one should be expected to have rote memorization of all language, compiler and platform features. That is just a ridiculous standard (and I know many organizations interview against it regardless). But, if you are a true master of your craft, it should only take you a day or 2 to ramp up on one of the more esoteric areas of your skillset. A master can quickly swap hats, assuming they are all more-or-less the same brand. This is a point I would try to drive home during an interview if you feel the perception is slipping. "I haven't dabbled in [XYZ framework feature] lately, but I could probably pick it back up in a few days." If I were running the interview, that's all I'd need to hear to put my mind at ease.
- quadrifoliate 7y agoI wonder how much this over-modest attitude of us continual learners is turning hiring into a market for lemons. That is, you are an "intermediate", but the overconfident person who's been doing C++ for two years and is touting themselves as an expert gets hired instead and you get to fix their disasters five years later. And I bet this affects women and other minorities in tech disproportionately.
- aidenn0 7y agoI don't remember which talk it was, but it was comparing an okay dev to a good dev; There was a slide where the "okay" dev rated their C++ knowledge as a 8 or 9, the "good" dev rating it as a 5 or a 6 and Bjarne Stroustrup rating it as a 7. [edit] Some googling later: https://www.slideshare.net/olvemaudal/deep-c/255 https://www.slideshare.net/olvemaudal/deep-c/255
- phaemon 7y ago"The object does not know about it's functions" That should be "its". Still, that's one way to force a fact into my brain...
- stephen82 7y agoThe best thing that could have happened to you is to get interviewed in C (!!!) when then position is supposedly for C++, and eventually you learned from people that worked for that company, that they just wanted a WordPress webmaster LOL! I'm not kidding, this is what happened to me 4 years ago. Don't worry about your intermediate level. For sure I can honestly say that I am more than honored to have a 'PhD' in C++'s "hello world" :D It's a language that I would love to work on exclusively for the rest of my life, if I could get hired much like those stories we read about back in the early '90s. They were hiring pretty much anyone who had an interest in computing, even if they were working on something completely unrelated to technology, and they were willing to train them. The fun times...
- LeifCarrotson 7y agoThat sounds like a disaster employment situation for someone who actually wants to develop a career in C++. In what way is that a win?
- samatman 7y agoIt sometimes happens that any steady paycheck is a win. Hope it never happens to you! But yes, it can happen.
- BubRoss 7y agoI don't think how you rate yourself should be based on the percentage of features and caveats that you know, it should be more based on how effective you are using it.
- dominotw 7y agoI 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 7y agoAnd 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.
- dominotw 7y ago> just pointing out that there's a trade-off that it makes in favor of a simpler language to learn and implement. I am not sure thats a tradeoff, ruby and python didn't gain anything in terms 'lack of syntax' by trading off 'type safety and compile-time efficiency.'
- samatman 7y agoLearn, maybe. Implement, though? Pervasively-immutable data structures and STM were no walk in the park to write.
- dominotw 7y agoclojure's data structures are written in java
- samatman 7y agothey are indeed, what else would they be written in? I'm having trouble connecting this with what I said...
- fulafel 7y agoInterestingly ClojureScript's are self hosted: https://github.com/clojure/clojurescript/blob/master/src/main/cljs/cljs/core.cljs#L7858 https://github.com/clojure/clojurescript/blob/master/src/mai... 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.
- ohazi 7y agoThere's the now famous anecdote that even Stroustrup rates himself a 7/10 at C++ proficiency. I've also worked on a handful of largeish (10k - 100k line) C++ projects both pre and post C++11, and also consider my C++ proficiency intermediate, even though I'm comfortable with the language and know how to fill in the gaps when I need to figure out something new, which now happens every 3 years. The language is enormous and complicated, and most people will forget how some of the rarer intricacies work if they don't use them frequently. And since most features are very useful in a few situations, but are not widely useful enough to change daily programming habits, this is basically guaranteed. The language is so big that intermediate is probably just the top of the scale now. Rust isn't that big yet (although it is getting more complex), but many more of the concepts in Rust are somewhat unique to the language, so you're not just learning new syntax. I think the "always intermediate / always still learning" feeling happens earlier with Rust than with C++ because of this.
- chris_st 7y agoAt my last job, we were trying to hire an expert C++ programmer, and every interview our C++ wizard would ask, "How do you rate your C++ knowledge on a scale of 1..10?" and pretty much invariably get a "8 or 9!" kind of answer. Then came the C++11 and C++14 questions, and yeah, they didn't have a clue. The guy they hired admitted that he wasn't a wizard, but said that he really wanted to become one.
- giovannibonetti 7y agoThis self-assessment ignorance phenomenon is well documented under the name Dunning-Kruger effect [1] [1] https://en.m.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effect https://en.m.wikipedia.org/wiki/Dunning%E2%80%93Kruger_effec...
- sandov 7y ago> "How do you rate your C++ knowledge on a scale of 1..10?" and pretty much invariably get a "8 or 9!" I'd guess that not even the members of the standard committee really know 90% of C++.
- viraptor 7y agoMy story for discovering that skill is not a single metric was trying describe my c# some time ago, which I learned from a completely different side than most people: - I've done heavily multithreaded network server running on mono/Linux - I've implemented faster virtual method dispatch for a custom CIL compiler - I've never touched popular .NET frameworks or GUI apps Do I know lots about c#? yes. Would I pass a c# test for an average job? there's a good chance I wouldn't because I don't know "that thing everyone else uses". I started listing languages in the "what did I achieve in that job" section rather than separate list.
- saagarjha 7y agoI said I "knew C++" just yesterday and got a stern reply saying that I couldn't possibly know the language without writing production code for at least 10 years. And that's even though I've been very careful to never put C++ as something that I am more than "proficient" at. I doubt there is a single person alive who knows the entire C++ specification; I doubt there is even a compiler that fully implements the standard.
- asveikau 7y agoSmart people who work in C++ already know this and aren't going to get on your case about it. It's a very diverse language in terms of common practices. There are many different accepted styles and many "time capsules" where particular language features were more or less fashionable in a time period, right up to the present. People can be opinionated about these things but shouldn't be judgemental. OTOH it might be a good idea to understand a couple of the sub-cultures and their big ideas, and know that there are tradeoffs involved, with an open mind towards every set of practices.
- jaza 7y agoRust 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 7y ago1.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 7y agoI love Rust, but it doesn't have a strong UI development story yet.
- gameswithgo 7y agovery few languages do, and those that do it is usually for just one platform.
- Polylactic_acid 7y agoBecause 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.
- mlindner 7y agoBecause most UI toolkits are strongly object oriented and Rust isn't an object oriented language.
- steveklabnik 7y ago
- klodolph 7y agoI’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.
- chewxy 7y agoThere has to be a learning strategy for kitchen sink languages though.
- Polylactic_acid 7y agoYou could just pick the first option that looks good enough and be done with it so you avoid having to understand them all.
- 01100011 7y agoThey're not really the same thing, IMO. Sure, Go is pitched as a systems language, but when Google themselves are rewriting OS components written in Go with Rust, you know something is up. Go seems like Python++... a more reliable and performant high level language. The GC nature makes it inappropriate, IMO, for low-level systems work. Sure, write apps in it. Fine. But I can't see writing drivers in Go.
- klodolph 7y agoI’m not writing drivers or OS components. Services and command-line tools. Go has a bunch of stuff in standard library to make that easier. My experience is that these tools are a bit rougher to write in Rust, due to the additional decisions (which third-party libraries) I have to make wrt command line parsing, HTTP, etc. Rust’s ecosystem reminds me a bit of NPM or Haskell in that way. Go reminds me of Python in that the decisions are easier or have lower impact.
- ryuukk_ 7y agoexcuses
- Bekwnn 7y agoI 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.
- _bxg1 7y ago> Is there effort to reduce complexity with the language or does it mostly embrace it? You're right that it isn't a "simple" language (in the Rich Hickey sense of the word). And I don't think there's any effort to actively simplify it. However, I do expect the rate of complexity growth to taper off fairly soon. Every feature that gets added to Rust is added carefully and with a clear vision in mind. Up until now they've still been building out the foundations of what most people will need when using Rust in different contexts. Recently a lot of this has been ergonomics (like async/await). But I think the rate of features being added is an S-curve, and I think we're nearing the top. Given that, I have hope that it won't follow the same path as C++ in terms of sprawl; it's certainly not as complicated as C++ yet, and if it doesn't keep growing at this rate, I don't think it will become that way. Part of why C++ is so complicated is that it's had to tack-on decades of language advancements, after the fact, as they were invented/became prevalent. Heck, C++ itself is already a tack-on of C. There wasn't a clear initial vision for the past couple decades of "stuff". Rust, on the other hand, a) has those decades of ideas to incorporate from the outset in a cohesive way, and b) was started from scratch, not an extension of an existing language. This has so far meant a much clearer sense of vision and big-picture design. These features were made to work together; the roadmap was fairly clear from the beginning.
- tus88 7y agoIt's like C++ - no-one can ever know it all.
- brundolf 7y agoI 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 7y agoThat’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”.
- _bxg1 7y agoYou should be able to answer the basic questions, but you shouldn't need years of professional experience with something to feel like you can list it without a "learning " prefix
- goostavos 7y ago"He used a for loop instead of a list comprehension. he clearly isn't actually a Python programmer" -- actual debrief comments :|
- billconan 7y agoI 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 7y agoI think that you'll actually attract all the right people.
- billconan 7y agoBut we need to control the burning rate. (We are a startup) the right people are expensive.
- adamnemecek 7y agoHire remotely.
- sk0g 7y agoWhy not Go? There will be minimal friction to doing most backend work, and the standard library has most things you'd need built in. If you have any questions, feel free to hit me up!
- markmm 7y agoRust 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.
- jjice 7y agoWhy can't you be both? The "high level" features rust offers to make it feel like a modern language are just abstractions, nothing that makes it directly inferior to C. Allowing for modern constructs without sacrificing performance is a good thing.
- jaza 7y agoRust 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.
- allengeorge 7y agoI 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.
- luord 7y agoThis is applicable to any language with a sufficiently big ecosystem, but the thought is sound.