`

Learn To code

阅读更多

http://socialmatchbox.com/wp/learn-to-code-learn-programming/

文章很长,这句话打动了我

It is really easy to get overwhelmed by all the different things that you need to learn.  Start with one thing, learn it, and don’t move on to something new until you feel like you really know it.

以下是全文

 

Learn to Code (or get better) with these free  (mostly) resources.

Important Notes for anyone NEW to programing:
Get the right tools and materials, but don’t spend money just to spend money.  These suggestions will make learning to code a lot easier so you can spend as much time as possible learning how to code and practicing what you have learned so until you master it.

Get the following:
1.  
A recent MacBook Air (Good) or MacBook Pro (Better) with the largest hard drive (at least 250GB hard disk) and screen you can afford.  Why Mac vs. PC? Read this.  Your peers will know how to help you and it will make working between your GUI and Linux much easier.

2. iTerm (download
is a free terminal app that is a little better than the one that comes pre-loaded on your Mac.

3. Sublime Text (downloadis a really powerful, easy to use, fast loading text editor that has tons of plugins built for it.  It is not free, but it has a solid free trial.  Your peers will know how to help you and it is easy to learn to use.   An editor built for coding makes text more readable by highlighting text, providing programming language specific autocomplete options, allows you to search across more than one file at a time, and a lot more.  Avoid IDE’s like Eclipse and Rad Rails (built on Eclipse) for now.  Avoid Dreamweaver and similar code generator tools altogether.

4. Do not buy a ton of books.  Your local library should have Safari Books online or a similar eBooks service that will allow you to view books online or download them using an eBook reader free of charge.  If a particular book is invaluable then buy  a PDF version and save a copy.

It is really easy to get overwhelmed by all the different things that you need to learn.  Start with one thing, learn it, and don’t move on to something new until you feel like you really know it.

For example:  I do a lot of web programming so I started by re-learning of programming and web programming by blocking of a huge chunk of time to learn CSS3 and HTML5 before I started trying to learn and master Ruby on Rails.  I held off on JavaScript and computer science topics throughout these two periods so that I would not lose focus.  I also avoided the temptation to try to learn about CSS pre-compilers along the way.  I plan to eventually, but first I wanted to make sure I knew CSS and HTML really well.


WHERE TO START?
Decide if you want to be a web developer, web programmer or software programmer.  You can change it up later.  Learn the background skills first.  If you just want to build or work on brochure web pages then you just need to read the section titled “LEARN WEB DEVELOPMENT”, but if you want to build complex web applications then you should start with this section and keep going.  To be a web programmer you will need to learn and master CSS, HTML, JavaScript and one of the following: Ruby on Rails, Python and Django, or a pair of Node.js + one of these: AngularJS, EmberJS or Backbone.js.  There are alternatives to Rails and Django, but when you are learning these are the most popular frameworks.  I have not put much time in to the Node.js + options yet, but I will.  These are very popular right now, but there are a lot more mature resources around Ruby on Rails and Python/Django making it easier to learn these.  If you want to be a software programmer (the web is not what you want to work on) then just stick to Python at first and skip the “LEARN WEB DEVELOPMENT” section which you can come back to later.  In your case (and for anyone looking to learn web programming), the “LEARN COMPUTER SCIENCE” section should be step two.  The intro to computer science courses can be concurrent step ones for web programmer students and for software programmer students.  These are structured around Python so this will probably make learning Python / Django easier initially.

LEARN WEB DEVELOPMENT
Web Development
Getting Started (if you are a total novice, take these first then JavaScript for beginners, then choose Ruby on Rails or Python or PHP next, but not all of them…choose one):
CSS & HTML(CodeAcademy) (Beginners) (Self Paced)
CSS & HTML(Shay Howe) (Beginners) (Self Paced)
CSS & HTML (Shay Howe) (Advanced)
jQuery (CodeAcademy) (Beginners) (Self Paced)

Background Skills
If you want to be a web developer, but not a web programmer or software programmer you can skip the Foundations of Programming option listed (programmer track people may want to come back to that after their initial Python or Ruby course). 
Foundations of Programming: Object-Oriented Design with Simon Allardice (Intermediate) (Self Paced/View Course Page Here) (Lynda)
Getting Started With Linux (you could check this out early, it will make everything else you do much easier):
A Practical Guide to Linux Commands, Editors, and Shell Programming 3rd Edition by Mark Sobel (LINK COMING SOON)
Mastering Sublime Text, Author (Dan Peleg), 12/24/13 (Safari Books Online) (optional reading)
Getting Started With Object Oriented Programming (Great Starter Course after you have taken an intro JavaScript, Ruby or Python Course):
Structure and Interpretation of Computer Programs (eBook) (Optional)
Terminal 101 (View Page Here)

LEARN TO CODE / LEARN PROGRAMMING / LEARN SCRIPTING LANGUAGES / WEB APPLICATION DEVELOPMENT

Web Programming
An article on learning to program via the O’Reilly Radar Blog with a step based plan for learning.  I don’t necessarily recommend following this approach.  You should consider different ideas and come up with something that works best for you.

Start by Learning JavaScript and one more of these:
Learn To Code With JavaScript Guide
Learn To Code With Ruby on Rails Guide
Learn To Code With Python Guide
Learn To Code With PHP Guide


MOBILE APP DEVELOPMENT

Developing iOS 7 Apps for iPhone and iPad (Stanford via iTunes U)


OTHER PROGRAMMING LANGUAGES
Hello World in Go (HERE)
Functional Programming Principles in Scala (Intermediate Level), Instructor: Martin Odersky, Professor, EPFL (View Course Page) (Coursera)


CODE PRACTICE (ALL LANGUAGES)

Learning to code is just the beginning.  You have to apply what you have learned and grow.  Here are a few resources to help:
/r/dailyprogrammer – a laundry list of programming exercises via Reddit rated for difficulty level.
CodeKata – Practice in software development through short coding exercises.
CodeWars - Practice with competition and gamification.
Excercism.io – daily exercises to work on for any language with feedback from other developers.
Project Euler – a series of challenging mathematical/computer programming problems.
Ruby Programming Challenge for Newbies – WYSIWYG.
HackerRank Daily Challenges – more challenges with a leaderboard.

Intermediate Topics (All Languages)

MOOCs
Programming Languages, Instructor: Dan Grossman, Professor, University of Washington (In Process / View Course Page) (Coursera)

Books
A Ton of Free Programming Books via Github
Seven Web Frameworks in Seven Weeks, Authors Jack Moffit, Frederick Daoud, 12/31/13

Advanced Topics (All Languages)

Tutorials
Destroy All Software’s Screencasts for Serious Developers (Advanced) (HERE)

Talks
Coming Soon

Code Bootcamps
Coming
 Soon

Books
Getting Started With Memcached, Ahmed Soliman, 11/25/13 (Safari Books Online)

Growing Object-Oriented Software, Guided by Tests, Authors: Steve Freeman, Nat Pryce, 10/22/09
Refactoring: Improving the Design of Existing Code, Authors: Martin Fowler (Primary), Kent Beck, John Brant, William Opdyke, Don Roberts, 7/08/99 (check for a more recent version)
Working Effectively with Legacy Code, Author: Michael Feathers, 10/02/04


WEB APPLICATION TESTING (BDD and TDD)
Note: BDD stands for Behavior Driven Development.  TDD stands for Test Driven Development.

Books
Application Testing with Capybara, Author: Matthew Robbins, 9/23/13 (Safari Books Online)
Instant RSpec Test-Driven Development How-to, Author: Charles Feduke, 6/25/13 (Safari Books Online)
The RSPec Book: Behaviour-Driven Deelopment with RSpec, Cucumber, and Friends, Authors: David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, Dan North, 9/13/12 (Ruby on Rails Only)

JavaScript Testing with Jasmine, Author: Evan Hahn, 3/29/13 (Safari Books Online)

WEB APPLICATION PERFORMANCE OPTIMIZATION

Books
Professional Website Performance: Optimizing the Front-End and Back-End, Author: Peter Smith (Safari Books Online)


LEARN COMPUTER SCIENCE

Courses:

Refreshers:

Calculus One (Beginner), Instructor: Jim Fowler, Professor, Ohio State University (Self Paced/View Course Page) (Coursera)

Introductory Computer Science:
Computer Science Intro Hybrid – built around the MIT Open Course curriculum.
Intro to Computer Science (CS50), Instructor: David Malan, Professor, Harvard (Fall 2013 (EdX)
Human Computer Interaction, Instructor: Scott Klemmer, Associate Professor of Cognitive Science and Computer Science & Engineering at UC San Diego and a Visiting Associate Professor of Computer Science at Stanford University (Coursera) (Review)

Books
Coming  Soon

Talks
Coming Soon

 

ADVANCED COMPUTER SCIENCE TOPICS
Algorithms
Algorithms, Part 1 (Advanced Level), Instructors: Kevin Wayne, Professor, Princeton University & Robert Sedgewick, Professor, Princeton University (Already Started) (Coursera)
Algorithms: Design and Analysis, Part 1 (Advanced Level), Instructor: Tim Roughgarden, Professor, Stanford University (Starts October 13, 2014/View Course Page) (Coursera)

Machine Learning & Neural Networks
Machine Learning (Advanced Level), Instructor: Andrew Ng, Professor, Stanford University (Starts September 22, 2014/View Course Page) (Coursera)
Neural Networks for Machine Learning (Advanced Level), Instructor: Geoffrey Hinton, Professor, University of Toronto (Past Course/Still Available/View Course Page)

Natural Language Processing
Natural Language Processing, Instructor: Michael Collins, Professor of Computer Science, Columbia University (View Course Page / View External Course Notes Page) (Coursera)

Social Networks
Social Network Analysis, Instructor:  Lada Adamic, Associate Professor, University of Michigan, (Runs 10/6/14-12/8/14/View Course Page) (Coursera)

REMOTE CO-LEARNING & REMOTE CO-WORKING
One of the hardest things about learning to program is the fear of not knowing how to get unstuck.  Fear makes the time spent trying to learn or get better less fun and less productive.  However, asking for help is also intimidating and somewhat awkward.  There are some great resources for this HERE.  If you want a co-pilot or some help, check out askadev (by some guys in the UK).  Or, if you don’t mind paying for some one on one time with someone you may also want to check out AirPair.

Books
Remote Pairing, Author: Joe Kutner, 12/2/13 (Safari Books Online)

Videos
Tools for Pair Programming by Sam Livingston (HERE)

Blogs
Remote Pair Programming by Joe Moore (HERE)
Code Dependence by Maggie Epps (HERE) | Note: Maggie  is DC based. She transitioned from being a social worker to being a PHP developer by day and a Ruby on Rails coder by night.  She participated in Coding Dojo in California and has been coding ever since.


MUSIC

Someone somewhere suggested that you listen to Glenn Gould’s 1981 recording of the Bach Goldberg Variations and then take a break.  It may be worth a try.


WEB HOSTING

Need an inexpensive and reliable place to host your website or your MVP app? I used Dreamhost and then upgraded to Rackspace for my most recent app. I still use Dreamhost. Check them out here:
DreamHost


RELATED READING

Blog Posts & Discussions
Landing Your Dream Job: 5 Tips on becoming a self-taught programmer by Ryan Levick (HERE)
Codeacademy vs MOOC via Reddit (HERE)
The MOOC That Roared: How Georgia Tech’s new, super-cheap online masters degree could radically change American higher education.  by Gabriel Kahn (HERE)
Scott Duffy’s Course Mania (HERE) | He reviews online courses he has taken.
The Coding Diaries by Linda (HERE) | She is a web developer who does not have a CS degree and she interviews and tries to help others who are trying to learn to code.  Here are some interviews she did of people learning to code (and some more) about learning to code.
Whee do you go to read and study code? via Reddit
A discussion via Reddit about how to practice to learn code more quickly.
How can I learn to code and get a job? via Reddit
Learn Programming via Quora
I can’t progress beyond bullshitting Object Oriented Programming via Reddit (a co-founder of Dev Bootcamp’s comment)
How do you avoid or deal with getting frustrated while programming? via Quora

 

Recommended Articles For Job Seekers

Email Me (contact@socialmatchbox.com)  if you would like to get your blog content or articles published on SocialMatchbox.com.

Programming Languages for Top Jobs
Tips for People Applying For A Startup Job
Make Sure Your Resume Gets Taken Seriously

Learning To Interview For Developer Jobs
Learn Internet Marketing

NOTES
If a book has a note like this one: “(Safari Books Online)” then you should be able to log into your local library’s ebooks system and find it in the collection by that name.  For example: In the Montgomery County Maryland Library system you can find the Puppet 3 Cookbook by John Arundel in the Safari Books Online system.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics