I'm not quite sure if this thread is in the right section, so forgive me if it shouldn't be here and lets not mention the length of it.
I decided to create this thread because I personally feel that programming teaches some really excellent problem solving skills and has some good employment/real-life applications (get it?). It's also got a reputation for being an 'Aspie' career. I'm predominantly a self-taught programmer so I'm sure there are better roads to 'program fluency' but I think this should help some of the beginners out there find their feet in the world of code.
First Steps into the Programming World
I personally hold the opinion that Python is the best language for any novice to learn. The reason is simple: It is a fun, syntactically forgiving language that teaches the basic skills behind programming languages (It's also used quite regularly throughout the industry, particularly the open source industry - this will be important fact in a moment).
For those that are unsure about what I mean when I say "syntactically forgiving", simply put, programming languages are different languages just as some of you might speak a language beyond English. In order for a program to run correctly all its 'words' (its syntax) must be spelled correctly or else the computer wont understand. Python aids the beginning process because many of the 'words' and 'grammar laws' are very easy to manage.
Well then, how should you go about learning python?
There is no better place (in my humble opinion) than: http://learnpythonthehardway.org/
This free course will teach you the syntax behind the language and you will begin writing small programs from the very beginning - a very fulfilling experience. Though, with everything you should always go with what you find most enjoyable (and productive), so if there is another website/book/youtube series that you find as a better alternative, go use it!!
Once you know python (it does become controversial among coders as to whether or not you can actually "know" a programming language, but lets not get into that), it's probably important to decide where you want to go. Is it a hobby, future career path, side-along job, or to look techy in front of friends?
I have unashamedly stolen the following little segment from an article that can be found here: Which Programming Language Should I Learn First? (funnily enough they also stole this from another website - 'borrowing' information is pretty common on the programming world)
If you are interested in moving into programming as a career/job/financial interest, this should help direct you to "right" languages to learn based on their usefulness and dominance in particular software niches.
Back-end/Server-side Programmer: Usually uses one of the following: Python, Ruby, PHP, Java or .Net. Has database knowledge. Possibly has some sysadmin knowledge.
Front-end/Client-side Programmer: HTML, CSS, JavaScript. Possibly has design skill.
Mobile Programmer: Objective-C or Java (for Android). HTML/CSS for mobile websites. Potentially has server-side knowledge.
3D Programmer/Game Programmer: C/C++, OpenGL, Animation. Possibly has good artistic skill.
High-Performance Programmer: C/C++, Java. May have background in mathematics or quantitative analysis.
Web Dev Guru (my personal addition to the list as it includes a bit of both server-side and client-side programming): HTML, CSS, JavaScript, PHP, SQL - these are languages that make websites so they can be fun for the really creative types and perhaps not as fun for the math enthusiasts (not always true though).
Just a heads up, I have obviously not covered every possibly job and language under the sun (this is already one heck of a post on its own) but if you have any particular interests or questions you can either message me or find out yourself.
Resources I recommend for independent study:
C++ (for game/application developers on windows platforms)
There is no better book than 'Big C++ by Cay S. Horstmann', be warned though, it contains a massive 1000 pages but it is highly recommended if you are learning this language. This won't teach you anything beyond console programming (unless I'm mistaken, its been quite some time since reading this) however, by the time you finish all 1000 pages included you will be one strong coder and will most likely be able to learn any language with ease.
IDE's (program writing applications - noob language) for writing C++, C#, and C:
I suggest only one because of its brilliance, and that is Microsoft Visual Studio 2012, 2013 Express
HTML, CSS, JavaScript (All these languages work together for websites)
While I hate suggesting this resource (I'll explain in a moment) I do think its useful: Learn JavaScript Programming | Codecademy Online Tutorials So go ahead and make an account and work through their exercises. The problem with this source is that while you learn the language, it doesn't show you how to apply it (but its great for learning the syntax - remember this term still?).
'HTML and CSS: Design and Build Websites by Jon Duckett' is probably the best introductory + fun course I've read on web dev (when I was starting out).
'Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript and Web Graphics by Jennifer...cant remember the rest' should consolidate that knowledge.
It is ****imperative**** that you learn about Bootstrap if you are intrested in doing web development, it makes everything so much simpler!! Bootstrap <-- check it out. Its probably best to look up some youtube tutorials or something to learn how to use it and incorporate it into your work. It is one of the best tools out there to use and its free (who doesn't love free stuff).
IDE's (program writing applications - noob language) for writing HTML, CSS, JavaScript (these are all free, and there's quite a number of them):
Microsoft Visual Studio for Web 2012, 2013 Express (my personal favourite)
Notepad++
Notepad (if you want to go really old school, like stone-age era)
Jet Brains WebStorm
Java (Write once, run everywhere)
Some languages, such as the infamous C's (C,C++,C#,Objective C) cannot run on multiple platforms and can only run on specific operating systems. Java is used everywhere, and can run everywhere. Its one of the most applicable languages used today and its one of the reasons why its so popular.
For this language I suggest 'Big Java by Cay S. Horstmann' which shares the same author as the Big C++, it also shares the size. It is a big book, hence the name.
I personally use IntelliJ IDEA 13.1, but there is such an exhaustive list of Java IDE's available that a simple google search should find what you need.
I think I might leave the resources there, as I don't have enough experience in other areas to be able to suggest further resources in other languages. (A simple google search should help if your needing a specific book)
The Open Source Arena
I mentioned earlier that this term would be important, so here I am explaining it. The open source arena is where other programmers get together online and build a useful program, free of charge, and share it with the world. Why is this important? Its voluntary and no credentials or experience is required (though, if you want to be useful...its a different story). It is an excellent way to get in the field, get experience, and if you contribute on a really awesome project its even worth putting into your resume. This is a good place to go for open source stuff: GitHub · Build software better, together. There are some additional links in the Additional Reading section.
Additional Reading + Cool Links + Resources:
A Coder, a Programmer, a Hacker, a Developer, and a Computer Scientist walk into a Venn Diagram - Scott Hanselman
News - iTnews.com.au
GitHub · Build software better, together.
SourceForge - Download, Develop and Publish Free Open Source Software
CodePlex - Open Source Project Hosting
Bootswatch: Free themes for Bootstrap
Unsplash <- Free images for websites
Finishing up
I have not gone into everything that should be explored, I've left that up to you (because I'm too lazy to write anymore, this is a big enough post as it is anyways). If you have any questions or queries, want me to update anything here, or have any suggestions please feel free to pm me about it. I really hope you found something interesting here.
Happy Coding!
Sev
I decided to create this thread because I personally feel that programming teaches some really excellent problem solving skills and has some good employment/real-life applications (get it?). It's also got a reputation for being an 'Aspie' career. I'm predominantly a self-taught programmer so I'm sure there are better roads to 'program fluency' but I think this should help some of the beginners out there find their feet in the world of code.
First Steps into the Programming World
I personally hold the opinion that Python is the best language for any novice to learn. The reason is simple: It is a fun, syntactically forgiving language that teaches the basic skills behind programming languages (It's also used quite regularly throughout the industry, particularly the open source industry - this will be important fact in a moment).
For those that are unsure about what I mean when I say "syntactically forgiving", simply put, programming languages are different languages just as some of you might speak a language beyond English. In order for a program to run correctly all its 'words' (its syntax) must be spelled correctly or else the computer wont understand. Python aids the beginning process because many of the 'words' and 'grammar laws' are very easy to manage.
Well then, how should you go about learning python?
There is no better place (in my humble opinion) than: http://learnpythonthehardway.org/
This free course will teach you the syntax behind the language and you will begin writing small programs from the very beginning - a very fulfilling experience. Though, with everything you should always go with what you find most enjoyable (and productive), so if there is another website/book/youtube series that you find as a better alternative, go use it!!
Once you know python (it does become controversial among coders as to whether or not you can actually "know" a programming language, but lets not get into that), it's probably important to decide where you want to go. Is it a hobby, future career path, side-along job, or to look techy in front of friends?
I have unashamedly stolen the following little segment from an article that can be found here: Which Programming Language Should I Learn First? (funnily enough they also stole this from another website - 'borrowing' information is pretty common on the programming world)
If you are interested in moving into programming as a career/job/financial interest, this should help direct you to "right" languages to learn based on their usefulness and dominance in particular software niches.
Back-end/Server-side Programmer: Usually uses one of the following: Python, Ruby, PHP, Java or .Net. Has database knowledge. Possibly has some sysadmin knowledge.
Front-end/Client-side Programmer: HTML, CSS, JavaScript. Possibly has design skill.
Mobile Programmer: Objective-C or Java (for Android). HTML/CSS for mobile websites. Potentially has server-side knowledge.
3D Programmer/Game Programmer: C/C++, OpenGL, Animation. Possibly has good artistic skill.
High-Performance Programmer: C/C++, Java. May have background in mathematics or quantitative analysis.
Web Dev Guru (my personal addition to the list as it includes a bit of both server-side and client-side programming): HTML, CSS, JavaScript, PHP, SQL - these are languages that make websites so they can be fun for the really creative types and perhaps not as fun for the math enthusiasts (not always true though).
Just a heads up, I have obviously not covered every possibly job and language under the sun (this is already one heck of a post on its own) but if you have any particular interests or questions you can either message me or find out yourself.
Resources I recommend for independent study:
C++ (for game/application developers on windows platforms)
There is no better book than 'Big C++ by Cay S. Horstmann', be warned though, it contains a massive 1000 pages but it is highly recommended if you are learning this language. This won't teach you anything beyond console programming (unless I'm mistaken, its been quite some time since reading this) however, by the time you finish all 1000 pages included you will be one strong coder and will most likely be able to learn any language with ease.
IDE's (program writing applications - noob language) for writing C++, C#, and C:
I suggest only one because of its brilliance, and that is Microsoft Visual Studio 2012, 2013 Express
HTML, CSS, JavaScript (All these languages work together for websites)
While I hate suggesting this resource (I'll explain in a moment) I do think its useful: Learn JavaScript Programming | Codecademy Online Tutorials So go ahead and make an account and work through their exercises. The problem with this source is that while you learn the language, it doesn't show you how to apply it (but its great for learning the syntax - remember this term still?).
'HTML and CSS: Design and Build Websites by Jon Duckett' is probably the best introductory + fun course I've read on web dev (when I was starting out).
'Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript and Web Graphics by Jennifer...cant remember the rest' should consolidate that knowledge.
It is ****imperative**** that you learn about Bootstrap if you are intrested in doing web development, it makes everything so much simpler!! Bootstrap <-- check it out. Its probably best to look up some youtube tutorials or something to learn how to use it and incorporate it into your work. It is one of the best tools out there to use and its free (who doesn't love free stuff).
IDE's (program writing applications - noob language) for writing HTML, CSS, JavaScript (these are all free, and there's quite a number of them):
Microsoft Visual Studio for Web 2012, 2013 Express (my personal favourite)
Notepad++
Notepad (if you want to go really old school, like stone-age era)
Jet Brains WebStorm
Java (Write once, run everywhere)
Some languages, such as the infamous C's (C,C++,C#,Objective C) cannot run on multiple platforms and can only run on specific operating systems. Java is used everywhere, and can run everywhere. Its one of the most applicable languages used today and its one of the reasons why its so popular.
For this language I suggest 'Big Java by Cay S. Horstmann' which shares the same author as the Big C++, it also shares the size. It is a big book, hence the name.
I personally use IntelliJ IDEA 13.1, but there is such an exhaustive list of Java IDE's available that a simple google search should find what you need.
I think I might leave the resources there, as I don't have enough experience in other areas to be able to suggest further resources in other languages. (A simple google search should help if your needing a specific book)
The Open Source Arena
I mentioned earlier that this term would be important, so here I am explaining it. The open source arena is where other programmers get together online and build a useful program, free of charge, and share it with the world. Why is this important? Its voluntary and no credentials or experience is required (though, if you want to be useful...its a different story). It is an excellent way to get in the field, get experience, and if you contribute on a really awesome project its even worth putting into your resume. This is a good place to go for open source stuff: GitHub · Build software better, together. There are some additional links in the Additional Reading section.
Additional Reading + Cool Links + Resources:
A Coder, a Programmer, a Hacker, a Developer, and a Computer Scientist walk into a Venn Diagram - Scott Hanselman
News - iTnews.com.au
GitHub · Build software better, together.
SourceForge - Download, Develop and Publish Free Open Source Software
CodePlex - Open Source Project Hosting
Bootswatch: Free themes for Bootstrap
Unsplash <- Free images for websites
Finishing up
I have not gone into everything that should be explored, I've left that up to you (because I'm too lazy to write anymore, this is a big enough post as it is anyways). If you have any questions or queries, want me to update anything here, or have any suggestions please feel free to pm me about it. I really hope you found something interesting here.
Happy Coding!
Sev
Last edited: