# Rust Learning Survey #1 ## Audience TODO - This section should answer who the target audience of the survey will be. The current working assumption is that it will be Rust beginners who are currently learning Rust. ## High Level Questions Note: these *are not* the questions for the survey, rather high level questions we hope the survey data will shed light on. * Roughly how difficult is it to learn Rust compared to other languages? * How much "effort" does it take to learn Rust? * What technical backgrounds make it easier or harder to learn Rust? * i.e., if a learner knows programming language X, how much easier is learning? * What is the nature of Rust's learning curve? Is it short and steep or long and gradual? * How do people define being "competent" in Rust? How does this differ from other languages? Do people generally over or under estimate their abilities in Rust? * How does learning Rust differ for those with different learning styles? * How well does the Rust project's and Rust communities learning materials server those with different learning styles? * What topics are the most difficult for people to understand? * When in the learning process do people typically get tripped up on these topics and what exactly seems to trip them up the most? * For those who know feel confident in these topics, what helped them gain that confidence? * What patterns from other languages do people typically try in Rust that lead them down a bad path? * What resources do people typically use to learn Rust and in what order? * Are there any best practices for teaching certain topics? * How do people typically find the resources that they use to learn? * What error messages and other diagnostics are good for advanced users but poor for new learners and vice versa? ## Possible Issues These are issues that we believe could occur if we don't explicitly address them in our survey design. * **Survivorship bias**: We should ensure that we don't only have participation from those who have already "survived" learning Rust. * **Beginners' ability to articulate challenges**: Beginners in particular often lack the very vocabulary to actually articulate what about Rust they find difficult. ## Survey Questions ### Brainstorming Suggest any questions below that you think could go into the survey and we can discuss them in the comments: #### Prior experience questions - Is Rust the first programming language you're learning? - *(If "No" to above)* Of the listed programming language, rank the top 3 you have the most experience with prior to learning Rust: JavaScript, TypeScript, PHP, Ruby, Python, Lua, Perl, R, C, C++, Swift, Kotlin, Groovy, Objective C, D, Java, Clojure, Scala, C#, F#, Haskell, OCaml, Scheme, Prolog, Erlang, Elixir, Visual Basic. #### Learning style questions - When learning a new programming language, rank the following based on your own personal preference: - I like reading a book about the language - I like seeing many small example programs written in the language - I like watching video lectures teaching me the language - I like solving small programming puzzles in the language (e.g. AoC) - I like following tutorials which teach me how to use the language to build an interesting program - I like porting a library or program from a language I'm already familiar with to the language I'm learning - I like to start a brand new project in language I'm learning and figure it out as I go #### Confidence questions - If you were searching for a full-time software engineering job, would you put Rust on your resume? - Would you be comfortable doing a technical interview using Rust? #### Misc questions - If a friend was interested in learning programming would you recommend them Rust as a first language? Why or why not? - If a friend was interested in learning Rust and asked for your advice, what would you tell them? - If you're struggling with a Rust problem, where would you go to get help? ### Finalized Questions that are definitely going into the survey: - none yet ## Sourcing Participants We can advertise the survey on, and get participants from: - Twitter - Reddit - URLO - Discord - Hackernews Note: the participants we source from the above communities may not be representative of the median programmer. How can we get partcipants outside of "the usual" places? ## Hosting the Survey TODO - This section should answer which survey platform the survey will be hosted on (e.g. Google Forms, SurveyMonkey, SurveyPlanet, etc.). ## Executing the Survey TODO - This section should answer how the survey will be delivered to participants, and how many responses the survey needs to receive before we consider it complete. ## Useful Data ### Academic Papers on Learning Rust - [Identifying Barriers to Adoption for Rust through Online Discourse](https://arxiv.org/abs/1901.01001) - [The Usability of Ownership](https://arxiv.org/abs/2011.06171) - [Documentation Generation as Information Visualization](https://arxiv.org/abs/2011.05600) ### Most Popular Rust Questions on StackOverflow - [Top 100 Most Upvoted Rust Questions](https://data.stackexchange.com/stackoverflow/query/1350643/top-100-most-upvoted-rust-questions-on-stackoverflow) - [Top 100 Most Viewed Rust Questions](https://data.stackexchange.com/stackoverflow/query/1350638/top-100-most-viewed-rust-questions-on-stackoverflow) - [Top 100 Most Favorited Rust Questions](https://data.stackexchange.com/stackoverflow/query/1350649/top-100-most-favorited-rust-questions-on-stackoverflow) - [Top 100 Most Duplicated Rust Questions](https://data.stackexchange.com/stackoverflow/query/1350611/top-100-most-duplicated-rust-questions-on-stackoverflow) ### Prior Surveys - [State of Rust Survey 2020](https://blog.rust-lang.org/2020/12/16/rust-survey-2020.html) - [State of Rust Survey 2019](https://blog.rust-lang.org/2020/04/17/Rust-survey-2019.html) - [State of Rust Survey 2018](https://blog.rust-lang.org/2018/11/27/Rust-survey-2018.html) - [State of Rust Survey 2017](https://blog.rust-lang.org/2017/09/05/Rust-2017-Survey-Results.html) - [State of Rust Survey 2016](https://blog.rust-lang.org/2016/06/30/State-of-Rust-Survey-2016.html) - [StackOverflow Developer Survey 2020](https://insights.stackoverflow.com/survey/2020) - [StackOverflow Developer Survey 2019](https://insights.stackoverflow.com/survey/2019) - [StackOverflow Developer Survey 2018](https://insights.stackoverflow.com/survey/2018) - [StackOverflow Developer Survey 2017](https://insights.stackoverflow.com/survey/2017) - [StackOverflow Developer Survey 2016](https://insights.stackoverflow.com/survey/2016) - [StackOverflow Developer Survey 2015](https://insights.stackoverflow.com/survey/2015) - [JetBrains State of Developer Ecosystem Survey 2020](https://www.jetbrains.com/lp/devecosystem-2020/) - [JetBrains State of Developer Ecosystem Survey 2019](https://www.jetbrains.com/lp/devecosystem-2019/) - [JetBrains State of Developer Ecosystem Survey 2018](https://www.jetbrains.com/research/devecosystem-2018/) - [JetBrains State of Developer Ecosystem Survey 2017](https://www.jetbrains.com/research/devecosystem-2017/) ### Blog Posts - [Three Things I wish I'd known when learning Rust](https://www.darkcoding.net/software/three-things-i-wish-id-known-learning-rust/) - [Reddit discussion](https://www.reddit.com/r/rust/comments/kickuv/three_things_i_wish_id_known_learning_rust/) - [Fighting Rust's Expressive Type System](https://thefuntastic.com/blog/fighting-rusts-type-system) - [Programming in Rust: the Good, the Bad, the Ugly](https://hackernoon.com/programming-in-rust-the-good-the-bad-the-ugly-d06f8d8b7738) - [Reddit discussion](https://www.reddit.com/r/programming/comments/bfv4i7/programming_in_rust_the_good_the_bad_the_ugly/) ### Discussions - [Is it a good idea to learn Rust as a first language?](https://www.reddit.com/r/rust/comments/hyumr0/is_it_a_good_idea_to_learn_rust_as_a_first/) - [First 3 Months of Rust](https://www.reddit.com/r/rust/comments/khrt69/first_3_months_of_rust/)