I had a suspicion there might be some factors I was forgetting.  I think this is a really big one so thanks for mentioning it.  I recently became more aware of this factor after spending some time with a couple less fortunate kids going into college for computer science.  It&#x27;s amazing how a small amount of well-placed guidance from an experienced mentor can have a dramatic effect.  In this case it was three things:<p>1. Learn vim (or emacs)<p>2. Use Linux and the command line<p>3. Use git<p>One of the guys started this semester.  He&#x27;s already a bright guy and would have been near the top of his class without me, but those three simple things make him look like a magician to his classmates.  In the course of getting helping him get set up with Linux I also became aware how much of an advantage my middle class upbringing gave me.  Something relatively basic like having a decent laptop can actually be a big obstacle.  $1000 is a lot of money to a lot of people.  Now I&#x27;m sure some people will say that you don&#x27;t need to spend $1000 to get started with a usable computer.  That&#x27;s true, but there <i>are</i> useful things that you can do with a $1000 computer that the much more affordable computers can&#x27;t do.<p>Another anecdote.  A few years ago I was in a climbing gym and I tried slacklining.  It seemed impossible so I didn&#x27;t do anything more with it.  A few years later someone suggested that it does wonders for your balance so I decided I wanted to learn.  Then by luck I happened to run across some people slacklining and over the course of a couple days I was able to spend some time with them practicing.  Their guidance got me over an initial hump that seemed insurmountable from the outside.<p>So yes, &quot;environment&quot; should DEFINITELY be added to my list!