Slide 1

Slide 1 text

How to Start Coding in 2019

Slide 2

Slide 2 text

How to Start Coding in 2019 The Complete Guide to Start Coding for Clout in 2019, No Cap

Slide 3

Slide 3 text

About Me ● Tomiwa Ademidun, software engineering and business student at Ivey Business school, Canada ● Founder atila.ca, easily find and apply to scholarships. ● Founder of software engineering studio, tech.atila.ca ● Software Engineering Intern @ Properly, Employee #2 ● My Website: tomiwa.ca ● Follow me on Twitter: @tomiwa1a 3

Slide 4

Slide 4 text

Different Formats of this Talk This tutorial is available as a... 1. Slideshow 2. Video 3. Blog 4. Podcast 5. Source Code 4

Slide 5

Slide 5 text

Why You Should Start Coding? ● A fresh grad (with no work experience!) at Google in Silicon Valley can make $120k/year and $16k in bonus ● Freedom: Work from anywhere, don’t need certification ● Impact: With just a laptop and an idea your product can be used by many people ● Even if you don’t code for a living, code can make your life easier ○ Automating emails, developing your own personal website, scripts to download stuff you need, helpful little life hacks ● If you decide to transition to a different career, employers value technical people like software engineers

Slide 6

Slide 6 text

Why You Should Start Coding? ● https://www.glassdoor.ca/Salary/Google-Software-Engineer-US-Salaries-EJI_IE9079.0,6_KO7,24_IL.25,27_IN1.htm?experience Level=LESS_THAN_ONE

Slide 7

Slide 7 text

How This Guide Works ● The hardest part of any change in your life is usually starting ● This guide will outline what to learn first, and tricks for handling lack of motivation and when you want to give up ● This talk will be very opinionated: ○ There is no “one right way” ○ But being opinionated reduces the amount of time spent debating between X and Y

Slide 8

Slide 8 text

Understanding How You Learn and Why You Might Quit ● I think that the best way to learn is by doing ● Find a tutorial on how to build X, copy it word for word, ● Once you feel comfortable with how X works, slightly modify X to do something different ● Experiment and see if you learn better through written blog posts, books or videos

Slide 9

Slide 9 text

What tools Should you use ● Use a 13 inch Macbook Air ○ Very light and powerful enough to run most developer tools ○ Also very expensive - $ 1,019.00 ● Chromebooks are an interesting alternative. ○ $285 on Amazon ○ a fancy touch screen one only costs $649 ● If you get a Chromebook (and even if you don’t!) you should check out Cloud 9, it lets you write and develop applications in the cloud! ● I strongly recommend using Github to save all your coding projects. Here is a very good tutorial on getting started with git and Github.

Slide 10

Slide 10 text

Types of Coding ● There are many types of coding: web development, mobile app development, hardware programming etc. ● If you are a beginner, then you should probably start with either web development or mobile app development. ○ They have the lowest learning curve and are the easiert to ship projects ● I think you should start with web development because when you are just starting the most important thing is shipping quickly ● You can see this article for why web is better than mobile for most applications.

Slide 11

Slide 11 text

Types of Coding

Slide 12

Slide 12 text

What Languages Should You Learn Stack Overflow Most Popular Technologies 2018

Slide 13

Slide 13 text

What Languages Should You Learn ● Start with Javascript and Python ● Most web applications are built using Javascript ○ Javascript is the most popular programming language ● Python is used in many data science and backend applications ● Python also has a very intuitive syntax and ● Python you can start coding right from command line on most (all?) computers

Slide 14

Slide 14 text

Front End Development

Slide 15

Slide 15 text

Front End Development ● Instead of building web apps from scratch, use frameworks to make your life easier ○ Don’t reinvent the wheel ○ Learn from my mistakes, I built one of my first websites in pure html/css/js and PHP, making my life harder for NO reason ● The most popular ones are Angular, React and Vue.js ● Very easy to waste time debating between which is better ○ Read this article and this article, still no definitive winner ○ They all have pros and cons and all of them have their uses ● For example, read this article on why I built Atila.ca using Angular ● Though I recommend new people learn React simply because it’s the most popular framework

Slide 16

Slide 16 text

Learning React ● Best way to learn React is by making things in React ● Find tutorials for building React projects -> blindly “copy pasta” -> repeat ● Don’t worry if you don’t understand what you’re doing ● You will gradually learn the theory behind the WHY of how things work when you encounter a bug or decide to add a modification. ● Unorthodox way of learning but for me this is fastest way to learn new ideas, ship products with the most SPEED

Slide 17

Slide 17 text

Learning React Here is an awesome list of React projects that Dave Ceddia has created to start learning React. Here are 3 good projects to start learning React: 1. Simple To-do List 2. Dave Ceddia’s Practice Projects 3. Serverless Stack React - A bit more advance, full stack web app, build this after completing 3 other tutorials

Slide 18

Slide 18 text

Learning Front End web dev ● The most important skill you need to learn at this stage is problem solving and persistence. Or as I like it “how to effectively type things into Google”. ● when you are first starting out, every problem you have faced is not new, don’t get discouraged ● the internet is so awesome, the answer is probably on the internet somewhere ● You just need to be clever about how to ask good questions. Incidentally, asking good questions is in my opinion a top 3 life skill (charisma and drive/optimism are the other 2)

Slide 19

Slide 19 text

Learning Front End Web Dev ● When you have finished making a project, I recommend you do two things: ○ Share it with the world ( or just friends and family) ○ Teach people how you made it ● We are social creatures, showing people what you’ve made motivates you to make good stuff ● Secondly, if you have supportive friends and family, they will react positively to what you made, motivating you to make more cool things.

Slide 20

Slide 20 text

Learning Front End Web Dev ● by teaching other people, you find the gaps in your own knowledge which helps you understand the concept better and you can do something nice for other people ● teaching doesn’t necessarily mean literally tutoring someone one-on-one or giving a lecture. Simply writing a blog post, making a slide deck or recording a video can have same effect ● Even if you never show anyone (not recommended) the act of making the content will help you learn better

Slide 21

Slide 21 text

Learning Front End Web Dev - Github ● Save all your work to Github. ● For the first 1 or 2 projects I will allow you to cheat and not use Github as the learning curve can prematurely discourage people ● But once you have built a couple projects, you NEED to start using Github. Annoying in short term, very helpful in long term. ● Here are 3 resources you can use to start learning Git: 1. Official Github Hello World Guide 2. An Intro to Git and GitHub for Beginners (Tutorial) 3. GitHub For Beginners: Don’t Get Scared, Get Started

Slide 22

Slide 22 text

Back End Engineering

Slide 23

Slide 23 text

Why is Backend Engineering important? How Google, Bing & Yahoo’s Finances Stack Up

Slide 24

Slide 24 text

Backend Engineering ● Back end engineering is where most value in a company lies. ● For example, Google and Bing’s homepage (front end) look relatively similar, their backend infrastructure is vastly different. ● That backend is why Google search is a $59 billion/year (2013) product compared to Bing’s $3.2 billion/year (2013).

Slide 25

Slide 25 text

Backend Engineering ● The best way to start with backend development is by building a REST API server that can send data to various clients based on their actions. ● For example, here is a simple REST API I built for serving scholarships information and here is some of the source code.

Slide 26

Slide 26 text

Backend Engineering ● I recommend you start by learning python and you use a framework like Django to help speed up your learning process. I recommend python because: 1. Python is one of the most popular programming languages 2. You can start coding right away from the command line 3. The syntax is very intuitive and matches speaking english 4. Python is used extensively in data science so if you decided to do more ML projects, the learning curve will b easier

Slide 27

Slide 27 text

Backend Engineering ● The two frameworks I recommend for learning python are Flask and Django. ● I recommend building your first 1 or 2 python projects in Flask, then as you feel more comfortable start building apps with Django. ● The Django Rest Framework is an excellent framework that can then be used to build REST APIs. ● Ruby on Rails is another popular choice.

Slide 28

Slide 28 text

Backend Engineering ● Start by building a very simple REST API server, which takes some information from the user and sends some information back. ● To keep you engaged, I recommend building a REST API that serves data on a topic which you are interested in. ● For example, if you are interested in basketball, use the NBA API to build an API that displays the 5 starters in every NBA team and their points, rebound and assists per game. ● Protip: try googling “X api” where X is something you’re interested in

Slide 29

Slide 29 text

Backend Engineering Here are five great tutorials to start learning Flask, Django and Django Rest Framework: 1. Official Flask Tutorial 2. Miguel Grinberg’s Flask Tutorial - absolutely amazing! One of the best tutorials I have ever done and extremely detailed 3. Official Django Tutorial & Official Django Rest Framework Tutorial 4. Tango with Django - This one brings back memories, slightly outdated but this covers a wide array of topics as well 5. Django Girls Tutorial - I like this because it shows you how to install on a Chromebook and a cool section on how the internet works

Slide 30

Slide 30 text

Data Science

Slide 31

Slide 31 text

Data Science ● Two years ago, I realized as more and more people enter coding, the basic front end development and even some back end development skills will be commoditized. ● The really great opportunities will be available to people who are solving the most complex, business value-add problems. ● I think that the most complex problems that have the highest ROI are in the field of data science. ● This is also the least beginner friendly topic as most people in this industry have at least a Master’s or PhD. ● One of my role models, Benjamin Franklin, finished his schooling at age 10, didn’t even graduate high school and he invented the lightning rod, bifocals and other cool stuff. So if you are willing to learn, and experiment you can do very well in this field.

Slide 32

Slide 32 text

Data Science ● My preferred method of learning primarily involves blindly copy and pasting machine learning tutorials. ● Then I gradually modify and mix different tutorials together until I actually understand what I’m doing and what is happening at a deeper level. ● Once I understand a machine learning concept I also try to write about it or give a short talk about what I learnt, this helps me crystallize my knowledge and other people can learn something useful as well.

Slide 33

Slide 33 text

Data Science ● A good website to start with that I really like is pythonprogramming.net. ● Follow one of those tutorials and once you have completed the tutorial, try to make a slight modification to the final project. ● Keep doing this for various tutorials and try to read wikipedia or google interesting concepts you come across. ● The concepts and science and math you learn are more likely to be remembered by your brain as you would have applied them to create a practical project.

Slide 34

Slide 34 text

Data Science ● Another good site is Machine Learning Mastery. ● A bit overwhelming so start with Your First Machine Learning Project in Python Step-By-Step. ● I also gave a talk on an introduction to machine learning aimed at both beginners and relative experts, which you can check out (slides, blog post). ● Here are 3 machine learning tutorials that are good: 1. Intro to Machine Learning with Scikit Learn and Python 2. Practical Machine Learning (I made my own tutorial based on this) 3. Your First Machine Learning Project in Python Step-By-Step

Slide 35

Slide 35 text

Practice What I Preach Me giving a talk about Machine Learning at a my previous internship with RBC Amplify, July 18 2017

Slide 36

Slide 36 text

Putting it All Together

Slide 37

Slide 37 text

Data Science Ideally, this is how your programming journey should go: 1. Build 3 projects using React or Angular tutorials 2. Build 3 REST APIs using python and Django (or Ruby on Rails) 3. Create a data science project that takes an input, processes the input using machine learning and generates an output

Slide 38

Slide 38 text

Data Science Here is an example of how all three elements can tie in together: 1. User opens your web app and takes a picture of two basketball players. 2. Your data science function runs some analysis on the image and detects that its a picture of Lebron James and Michael Jordan. 3. Your REST API backend server returns some data back to your web app comparing the two players’ career statistics to each other.

Slide 39

Slide 39 text

Conclusion

Slide 40

Slide 40 text

Coding Best Practices In addition to coding I recommend some best practices that will make it easier for people to keep up with what you are doing. 1. Create a personal webpage so people can learn more about you and you can put all your links in one place. I recommend github pages or squarespace 2. Add a well-documented README.md to all your projects on Github so people looking can understand how you made it and how they can run your project on their local machine. Here is a good README.md example for atila-web-app. 3. Pick the projects which you are most proud of and write a blog post and make a video explaining how you built the project. Even if you never show the blog post or video to anyone, the process of recording your thought process will help you understand what you are doing even better.

Slide 41

Slide 41 text

Conclusion 1. The internet is amazing and companies like Google, Amazon, Facebook etc. have given us tremendous tools with tremendous leverage. But in order for you to take advantage of these opportunities you need to learn and apply the things you’ve learnt. 2. There’s a lot of stuff in this article, so just pick the easiest one and start working to get it done. Try to be the person in 2019, that you in 2020 will be proud of. What a time to be alive!