This post lists all the steps I took, when I took them (some of them happened simultaneously) and how much time I invested. You shall find recommendations as well as routes you might wanna avoid in order to stay on track.
1. Figuring out what to learn
(2 weeks: 23 Jun 2017 – 08 Jul 2017)
2. Learning HTML and CSS with a mobile app
(2 weeks: 12 Jul 2017 – 28 Jul 2017)
Despite the rocky start I had with Java, the mobile-app-learning-experience was fantastic. I used SoloLearn. Where you can read and solve quizzes, while waiting for the bus. Great! So I worked through both curriculums and really got fascinated with what you could or had to do to put text, pictures, forms, STUFF on the web. So I was ready to go ahead and make something, correct? Absolutely NOT! Clicking on a mobile app is great to get an idea but won’t cut it.
3. Installing a code editor…
(a couple of hours, including research: 20 Jul 2018)
4. “Dipping your toes in!..”
(3 weeks: 21 Jul 2017 – somewhere in September 2017)
- what are some good coding projects for beginners?
- where to start, please just tell me the right way, pleeeeaaase.”
5. Reading a book
(many weeks: 29 Jul 2017 – someday in 2018)
My researches lead towards a book. Books are a generally a great resource for everything, are they not?. And with platforms like Packt there is a lot of awesome content out there for just a few bucks or even for free. Actually it feels like way to much you have free access to. Because sooner or later you’ll find yourself sliding down a steep, dark rabbit hole, where you jump from topic to buzzword to definition to the explanation to that definition to the next topic and so forth. What helps? Taking a breath, telling yourself “I can use a TV, a microwave, a refrigerator, all without knowing how it actually really works internally and never got seriously injured.” So nothing to worry about just yet.”
In the end I haven’t really read a good book for beginners. Also, reading on it’s own has a great disadvantage. It does not train your “muscle memory”. Like a pianist, your brain and your fingers need to get used to typing out programming syntax. With just reading you might glance over code examples, thinking you got it when you really didn’t, yadda yadda yadda. So if you got a good book, it makes more sense to read it on your computer, with an editor open. Which obviously I did not. Even though I had heard you should. …maybe one just has to live through that experience of total waste of time.
(about 20 weeks: Nov 2017 – March 2018)
Easily my most favorite way of learning is: getting told what to do. And being evaluated whether you did it right. So my holy grail of learning is:
- stackoverflow (incredible forum, which mostly is the first google search-result anyways)
- MDN (by Mozilla)
- W3School (tutorial / encyclopedia with “try-it-out-functionality”)
7. Learning from Podcasts
(almost every day)
Podcast were something I had underestimated a lot. If you get the right ones, they are helpful, educative and simply fun to listen to. Some of my favorites for your daily commute or while you’re cleaning the house are:
- Shop Talk Show (web development, a bit more frontend orientated)
- CodeNewbie (the title says it all)
- Software Engineering Daily (different topics for developers)
- Talk Python To Me (news and interesting interviews from the Python world)
- New Rustacean (a show about learning the Rust programming language)
- The Machine Learning Guide (the title says it all)
(when ever there is time)
Learning material on YouTube is something I really like watching. But because it is so time consuming and sometimes difficult/impossible to code along. I watch them not too often. The two channels that stuck with me are:
- Traversy Media (many different topics and tutorial(series))
9. Getting started with MachineLearning
(9 weeks: 01 Mar 18 – 16 Jul 18)
Not having a real project and thinking to myself: “Doesn’t everything of value nowadays involve data processing?” made me wanna dive into MachineLearning. Well say hello to all those worms escaping from this massive can I had just opened. Long story short. I followed the highly recommended free MOOC (Massive Open Online Course) by Andrew Ng on Coursera. Veeeery interesting. And faaaar beyond my capabilities to apply what I was learning to some real life problems. Nevertheless, I now have a decent overview on the field of machine learning. Which helps in case you want to wrangle some data using a more human friendly framework. Do you need it? In my opinion, only if you actually want to get into MachineLearning.
10. The Scary Commandline
(1 day: May 2018)
Depending on your system (Mac, Linux, Windows) it can be called Terminal, Shell or Console. It is always the same. You have an almost empty window with some directory (folder) on your computer written down in the top left corner. And you can type in the line behind that directory-name like in DOS times, if you’re young enough to remember that. When you hit Enter, the things you just have typed get executed. If this command is unknown to the program (shell, terminal, console) it just prints (writes in the next line) “command not found”. I wish someone would have told me that in the beginning. For weeks I was scared to type anything in the command line. To me if felt like I was carrying out brain surgery on the open head of my operating system and every wrongly typed command could probably lead to instant self destruction. While that is not the case and most developers do not have to become experts on the command line, carelessly copy-pasting install commands from stackoverflow should not be excuted either. Here is what I recommend: After finishing the HTML and CSS basic tutorials on something like codecademy, quickly work through the learn the command line course there. It doesn’t take very long but it gives you almost superpowers in the sense of how much more secure you’ll feel in the console.
11. GitHub basics
(1 day: May 2018)
In real life projects (in small and big companies) you have the situation that many people work on the same code base, while this very program they work on is running online. How is that even possible? With version control. What does that mean? There are simply different copies of the code available to the developers, called branches. If some new code has been written locally and it has passed all the tests it gets merged into the real application code on the master branch. This clever system is called git. Why should you care? Because there is an online service around that system called GitHub which makes version control possible to everyone, even for your own projects, so you can work on new features for your app, while another version runs fully functional on the web. GitHub also works as a repository for your projects. And since it is the go-to-platform for open source projects you can look at the the actual code of your favorite open source program. AND you can even participate if the maintainers allow open contribution. How cool is that. If I haven’t convinced you by now: GitHub shows a timeline, monitoring your activities. Every time you push (upload) something to some repository, you’ll get a green dot on your timeline. And recruiters apparently like to look at one’s repositories and timeline to see how much coding experience that person actually has. This seems to be a controversial approach for recruiting if you listen to developers on podcasts, but as long as this is still being done, why not starting early with GitHub. You will come across it at some point no matter what. Where to start? Again: codecademy. Learn Git. Also not very long and if I remember correctly you even set up an account. Double Thumbs Up.
12. Learning a backend language
(June 2018 – until today)
13. Learning Rust (a low level language woooooooo)
(Sep 2018 – until today)
14. Courses & practice playgrounds
(Nov 2017 – today)
One of my favorite in-betweenies are quiz/puzzle/challenge sites. You just hop on to their site and try to figure out some programming problem. The ones I have tried and that I think are all fun are:
- CodeWars (for almost every programming language)
- CodeSignal (for almost every programming languages)
- Pybite’s CodeChallenges (downloadable exercises to get better at Python)
15. Staying up to date
(in between things)
I am from Germany and Twitter did not take off as much as in many other countries it seems. But if you want to get the daily news and topics and you do not have an account yet, get one. You don’t have to become all posty. But you will be surprised how much help, amazing blogs and tips are offered there. And of course jokes and gossip, but who doesn’t like that.
Other update resources which I haven’t really used yet would be reddit, HackerNews or HackerNoon.
(2017 – today)
The best way to remember thing you have learned is to write it down. So my idea was to have this blog sort of as a diary. Writing down all the things I learn. But for almost an entire year I did not. Why? The answer is simple. I wanted it to be a certain, very ambitious way. And that was just always a bit too much for the time I had. I elaborate a bit more on that in my last post “Procrastination is caused by Perfectionism”. But blogging or even just writing things down for yourself is great. It will help you sorting your thought. And if you forget things you have already learned you can go back to your scribbles to refresh your memory. Once you put your findings out there, on the web, you might even help others on their journey. Which is what I hope to achieve as well.
Coding is the best hobby I have picked up in years. It makes me feel empowered. You can do so many things with it and endlessly grow in the field. So if you just want to get started with something? Here are my absolute highlight tips.
- HTML Basics
- CSS Basics
- Learn the CommandLine
- Learn about git
Concurrent to the tutorial (on your commutes, while in the gym or while cleaning the house):
Getting more practice:
Thing I haven’t touched on but might be worth looking at:
I think that is enough to start with. Once you have started you will ask your own questions anyway and look for the topics you want to dive in deeper, finding your own favorite resources. Hopefully this was any help to you and I would look forward to getting your feedback. If you like you can send me an email or get in touch with me on twitter. Meanwhile enjoy coding and let the world know about your experience.