Some ideas where to start programming

7 February 2019

Some people ask me how to start doing some things in the programming world. So I decided to post some kind of answer with a few ideas to get you started. This is not the complete guide to programming.

What we have

First of all, take a look at what you have, what you want to do, and why you want to be a programmer.

Searching

Maybe iOS?

“Everybody in this country should learn to program a computer, because it teaches you how to think” — Steve Jobs

For example, if you have a MacBook, I would advise you to try iOS apps. Swift is wonderful to go here but you need some knowledge of Objected Oriented Programming principles, compilators, etc. But it’s possible to learn it if you want. As I wrote in my previous post you can start with the books from Apple. They are very cool for the beginning and could give you more motivation. Then you can find others.

  1. The Swift Programming Language by Apple
  2. Intro to App Development with Swift by Apple
  3. App Development with Swift by Apple
  4. PRO SWIFT by Paul Hudson

You can find a lot of courses on different websites. One of the most outstanding could be a Stanford course Developing iOS 11 Apps with Swift. One of the coolest seems Design+Code. Also there is a cool growth path for an iOS developer that I found and finished completely. It’s just a recommendation but it covers a lot of things which every Apple developer should know. Available as a Trello board, so you can grab and copy it to your own board and complete challenges one after another. A bunch of cool tutorials are here on the Ray Wenderlich website.

One of the best solutions here could be implementing your own idea if you have one. It could be either a simple Todo list or something more complex. Even a mobile game but it could be difficult and you can get desperate. So do not rush!

Maybe Frontend / Web?

If there is no Mac (or there is), then the Web development (at least creating simple websites), because it’s very extensive and, in my opinion, there are more chances to specifically decide on further study. It is easy to start doing something and see the result almost at the same time. But it’s not difficult to get lost and lose motivation. In this case, you need not to give up, it will pass when you know more.

For the web, I would advise to start as soon as possible with practice, while reading books in parallel and studying terminology. In fact, learn HTML and CSS. This is not really programming, but you can add JavaScript. On the Internet, there are still many articles with a path you could take to become a JavaScript ninja or guru.

As for JavaScript, programming begins with it. If you don’t want to go all the way into site building, then you can go straight to JavaScript, in which case it would be better to use the Node.js ecosystem. On the Internet, there is a lot about it. Personally, for me online courses weren’t so effective. It was more useful just to find different designs on the Internet, for example on Dribbble, and try to implement them just looking. Increase the difficulty as you develop. Anyway, you could try these platforms.

  1. Khanacademy
  2. Cocecademy
  3. Html Academy [RU]
  4. Learn to Code HTML & CSS

For references

  1. HTML
  2. CSS
  3. JavaScript
  4. W3C — This resource is quite fundamental, because in general, W3C is an organization that develops HTML and CSS standards.

There are a lot of guys who make videos. You just need to google it and choose your favorite. On English YouTube I would highly recommend this channel The Net Ninja. He explains very clearly in spoken English. On Russian YouTube, Sorax.

The fundamentals can be found anywhere, just the basics are not a problem to find, the problems will begin when you want to go deep, because the quality and quantity of more advanced material is much lower. Then of course you can try single page applications, React.js, Vue.js and the family.

For more JS and server-side JS you can take a look at these resources.

  1. JS-bits
  2. Learn You Node
  3. Nodeschool
  4. JavaScript 30 Days Challenge — Here you can find other courses from Wes Bos

As for Frontend books, I can advise these. Just look if there is a newer edition.

  1. Learning Web Design by Jennifer Robbins
  2. CSS3 Big Book 3rd Edition by David McFarland
  3. Web Design with HTML, CSS, JavaScript and jQuery Set by Jon Duckett
  4. CSS Secrets by Lea Verou
  5. HTML5 For Web Designers by Jeremy Keith
  6. CSS3 For Web Designers by Dan Cederholm
  7. A Book Apart library in total has many good books
  8. Head First JavaScript Programming by Elisabeth Robson, Eric T. Freeman
  9. JavaScript: The Good Parts by Douglas Crockford
  10. Web Development with Node and Express by Todd Brown
  11. Front-end Developer Handbook 2018 by Frontend Masters
  12. More books
  13. Even more books

Anything else?

You can try any other programming language, such as Python or Ruby. They are mainly used for backend stuff. Java and Kotlin are needed for Android. Maybe some modern languages like Go, R, or Rust. I would not recommend touching the languages of the C, C++ family for a newcomer at all. There are a lot to choose from.

  1. The TOP programming languages 2018
  2. What Programming Language Should a Beginner Learn in 2019
  3. What are Computer Programming Languages

It’s difficult to say here more because I don’t have a lot of experience with other programming languages. Just try if it sounds interesting to you! There are a lot of articles and helping tools like bestprogramminglanguagefor.me throughout the Internet. These picture could also suggest a correct decision.

Programming infographics
Choosing programming language flowchart
Programming language decision tree

Design

It would be mega useful for a developer to learn at least some basics of Design, in fact UI and UX. With this skill you could be even more effective and think more logically. A few useful resources and books to check out.

  1. All in One Bookmark Links for Designer by Evernote
  2. Ebooks by UXPin inc.
  3. The Principles of Beautiful Web Design by Jason Beaird, James George
  4. Don’t Make Me Think by Steve Krug

English

Do not forget about your English. Of course if you’re reading this there is no problem but I also would advise tightening up your English if there are any doubts about this. The main language of any programming is English. Only the laziest one isn’t able to find anything here.

Last words

I tried to help objectively — I hope I helped with something. Of course this list of resources could be much longer. The point is to understand which direction to go and what works best for you. For me, for example, the so-popular Udemy, Udacity, or Coursera do not work. It’s necessary to try little by little and understand what is interesting and beneficial and what is not. For motivation, it is important to have some kind of achievable goal, for example, to translate your sore idea into an application, start a startup or get a high-paying job and have goals in the course of training, such as reading 50 books, 20 pages, etc. It is really important to have self-discipline and develop a habit of doing something every day, at least a small part. I like habit-forming apps like these. But they should be just an addition to the main learning resource. There are a lot of variations with various languages for all the platforms.

  1. Enki
  2. Mimo
  3. TapCoding
  4. Encode

Duolingo and Lingvist for natural languages, Vanido for singing, etc. And do not be afraid to ask for help from the more experienced developers, many are responsible and can help with anything. Good luck!