# 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/)