We want to challenge you to learn coding or understand the basics of programming for 3 months. We believe 3 months is a fair commitment. We'll be suggesting some materials based on some objectives we crafted. You can either use it as reference at your own pace or not. Above all, the key is practise.
We'd also like to hear your feedback if this guideline is useful, please drop us comments to our Self-Starter Coder FB Group.
- You are curious to learn coding and don't know where to begin
- You are not sure if coding is for you and willing to invest 3 months to find out once and for all
- You have technical background and feels like it's time to pick up a new skill to advance your career
There are tonnes of stuff to learn in the coding and computer science world. It is growing as we prepare this guide. So, we will try to give you a bird's eye view of what we are trying to cover through this incredibly clever illustrated Venn Diagram by Jan Schaumann. We have highlighted what we want to cover in red.
HTML and CSS forms the basics of webpages and it's easy to get started!
- Learn HTML
- Learn CSS
- Learn How to Structure Your Web Page When you're done, you can host your own portfolio page for free here. You just need to drag and drop your website folder into bitballoon.
- Foundations of Programming: Fundamentals by Simon Allardice where you'll learn core ideas and essentials skills about programming.
- Foundations of Programming: Code Efficiency by Simon Allardice. Take this course if you want to learn how to make code run faster.
- Foundations of Programming: Object-Oriented Design by Simon Allardice. This course helps you to design, understand and create a more complex application.
- Foundations of Programming: Design Patterns by Elisabeth Robson and Eric Freeman. You'll learn solutions to common software design problems.
- Foundations of Programming: Data Structures by Simon Allardice. This course is about deeper understanding of data structures (dictionaries, sets, hash tables, queues and stacks, lists and link lists, trees and graphs and other multiple ways to contain information inside a computer program).
- Foundations of Programming: Discrete Mathematics by Peggy Fisher where you'll learn how to use discrete mathematics in programming.
- Foundations of Programming: Databases by Simon Allardice. This course covers essential database knowledge.
Programming languages are often not "close to metal". People who want to truely understand how computer programs work on a processor should descend further down the abstraction level. C is an excellent gateway to it.
- This course is old, from 1991, but still very relevant and is a gentle and introduction to C.
Ruby is a very high level language (meaning it's very similiar to English language) because it was designed with the goal of making coding fun.
- Learn some basic Ruby syntax with this interactive website - TryRuby.org
- Codecademy provides a basic Ruby course on learning the syntax, as well as basic programming concepts.
Ruby on Rails is a Ruby framework, meaning a lot of the more commonly used functions have been packed to easier-to-use commands. Ruby on Rails was designed to improve developer productivity, so it's super easy to create an entire app with just a few short commands.
- Learn Ruby on Rails by building real apps - Rails Tutorial Book
Tutorial - Learn C# from Scratch
If you want to learn to code for the mobile platform, you can start with Java for Android. Here are some resources: https://developer.android.com/training/index.html
If you want to learn to code for the iOS / Apple development platform, you can start with the materials here: https://developer.apple.com/swift/
According to Josh Kaufman, "... with a little bit of of practise, you get really good, really quickly". He said that 20 hours of practise are sufficient to get you from beginner to intermediate level very quickly. If you are interested to hear more of his theory, listen to his inspiring talk on TED Talk.
There are some good sites with real algorithm interview questions you may start with. The neat part is, there are alot of submissions of answers from people which you may refer as well.
Teach Yourself Computer Science is a good site to begin.
Structure and Interpretation of Computer Programs : This book is one of the all time greatest courses on how computer programs work. As a side effect, working through the exercise makes you a comptant LISP (Clojure/Scheme et al.) programmer, and a super good functional programmer by extension.
This article talks about how you can learn any programming language if you can understand that all languages are essentially an abstraction to solve a specific problem. Hence, knowing the history of computer science is fundamental. Watch this lecture by Ras Bodik - you may start from 42:07 onwards if you want to skip to the history portion.
This book talks about the Unix philosophy and the Unix way. Modern application architectures can be traced back to how the Unix operating system works, and its legacy lives on in operating systems we use (MacOS, Android, iOS, Linux distributions). This is a must read since Unix figures so much in your lives as programmers and the underlying philosphy is neglected very often.
For people who are curious like Alice.
- Beating the averages
- How to become a hacker
- Codeless code. These are sometimes subtle, sometimes overt tales that might teach you something about software engineering as a practice.
Being familiar with your operating system is something akin to being familiar with your house and its layout. You know where things are and what to do with them - and to a programmer, her house is the operating system.
These are the freely available descendants of ye olde Unix operating systems. They also power a lot of servers. Since servers tend to eschew graphical environments and provide you a command line interface to work with, picking up some CLI chops might be a good idea. The Digital Ocean Community's tutorial is a gentle introduction to CLI. Of course the best way is to DIY, install a Linux distribution such as Debian.