Which programming language should you learn first?
Skills:
PM Basics60%
Key Takeaways
Discusses choosing a programming language for beginners with a focus on frontend engineering, backend development, and machine learning
Full Transcript
hey so i'm back with the fourth uh ash pretty series today and today's question is um a very again a very common one this person is asking what language should i start with um should i start with and also should i start with front-end back-end machine learning data science i have no idea what language or where to start of course this is an overwhelming thing to decide when you're getting started with programming because particularly because like there's so much to learn and computer science and programming in general that like it's really hard for a beginner to know where to start and i remember when i was getting started i kind of googled this question and the worst part about googling is that everyone has their own answers and they have their own opinions and so they all seem right because they have experience and something worked for some people something didn't work for other people so it's a very good question i struggled with the two and uh and of course as per everything in software engineering i want to say that it depends some of you might be shorting off in programming in like a very specific vertical for example like if you know you want to do machine learning or you know you want to do data science or you know you want to do mobile development ios or android or you know you want to do like security stuff or distributed systems like if you know the vertical already then there's usually a few specific languages that those particular verticals generalize on for example with machine learning and data science a lot of people use python and there's a lot of machine learning and data science libraries and math related libraries and written in python and so most of the data scientists i know write in python so i would say if you're going specifically for that vertical pick the language that that vertical is standardizing on right and like why would you go learn haskell if you're trying to do machine learning it doesn't make sense but let's assume that for this question you are just kind of starting out new you haven't really decided where you want to focus you're starting from like a clean slate and you really have a choice of anything that you can do um and that's what i'll kind of that's the question i'll answer today so i'm going to be biased and say the best language to start with is javascript um and just to give you personal background so i started with when i started learning the code my first language was actually not javascript i started to learn python and i learned i was trying to learn it through a book called learn python the hard way and i tried many many times and i failed um i tried remember the first time i stopped it after two weeks the second time i stopped doing it after five weeks i tried a bunch of online courses maybe i thought like video format would help something about it was just not clicking to the point where like i was getting really frustrated i was like you know what maybe programming is not for me like it was like it just wasn't working um and then i remember i was kind of expressing expressing the struggle with my ex-boyfriend at the time and he was like why are you learning python go learn javascript i was like what's javascript and i came home that night and i like did a bunch of google searching and i found this like code academy course it's like a 10 hour course or something on javascript and i remember i didn't even go to work the next day i just like sat there and went through the whole javascript intro course and after that i was like hooked it was like i was unstoppable i fell in love with javascript there was something amazing about writing some javascript and then along with some html and css and then seeing refreshing the browser and seeing the changes like that just made my heart beat so fast like i i couldn't i couldn't stop myself from like loving it and after that i was just like unstoppable i was hooked on javascript and really um javascript was like my gateway director programming if you if if if you can think of it that way and i think the reason why javascript is so beginner friendly is because a few things one is it has like immediate feedback loop that i was talking about so you can write something in your in your ide and then you can refresh the browser and see it right away whereas some other languages like java or like haskell like they require a compile step where you actually need to compile the code before you can actually under see what happens which adds a little bit of burden for beginner and kind of makes it a little bit more confusing um two there's no complex developer environments you just set up for example if you're coding for ios or android there's a whole process for setting up xcode or the android studio thing and that in itself is kind of daunting and so whereas with javascript you can just download any um any ide or any any like any basically notepad and like code in that and be fine with it and and you don't need all these complex toolings to get started um three as i said before you don't need to compile and figure that whole thing out um another big reason is because there's no types uh javascript is is a is a dynamically typed language and that means you don't have to write like types like whether a variable is a number or string or whatever and that like removes a huge burden on beginners i think um when i was looking at some other code like java code for example when i was getting started i was like it was pretty daunting to see both the code and the types i didn't know what the difference was difference was between them whereas like javascript you just kind of write code and you don't worry about the types and that removes one extra thing to learn it on honestly sometimes makes it visually easy on the eyes for beginners i'd argue that as you get more advanced i actually like types now because it makes me it makes it easier for me to recode but when i was a beginner that wasn't the case i think it types added an extra burden um when i was a beginner so javascript has no types which i think is amazing for beginners only and then uh the other reason is because it runs everywhere so if you write javascript it runs in every browser chrome firefox whatever it is it runs on every operating system every device so you can like a beginner can get started with javascript and write write for various kinds of platforms and it's that's pretty cool um and lastly i think it's very versatile too so javascript you can use it as like a scripting language you can use it to build complex web applications you can use it as like with node you can book sophisticated api back-ends you can be you can even build like bots and iot applications you can write native desktop applications using electron you can write native mobile applications using react native all in javascript you can even do vr stuff now with react vr it's just like it's pretty amazing that like they can you can take javascript and just like do so much with it whereas like some other languages are not as easy to do that and are not as like transportable in that sense so if you're struggling to get started and you haven't tried javascript yet i say like go for javascript and see if you like it to me again javascript was the gateway dragon to programming it's really how i learned to code um and it's really where i learned the fundamentals of programming and this is like things like loops conditionals functions data types variables classes inheritance prototypes like all these things are fundamental to almost every programming language and i kind of learned the fundamentals of those of a programming language through javascript java's javascript was kind of just the the the the tool to get me there and now now that i know javascript i can pretty much apply that and read and understand code in almost any language so i can read python code i can read go i can read ruby i can read people's plus i can read haskell like it like i'm not able to maybe write in it as like a super expert programmer but i can read and understand it pretty well because the syntax like you start to get familiar with the same types of syntax the loops the conditionals the functions and so forth and um i guess like the the the takeaway is like the the language you just like in the end just pick the language that makes you want to code that makes you want to like really get into programming and the one that you specifically like the most it doesn't matter what other people tell you because what other people tell you like people recommended python to me like outside outside when i get started the reason i should play that is because other people recommended it to me and it didn't work for me so i had to explore other things to find the ones that worked for me and to find the one that made me fall in love with programming and then you can always expand from there it's not like just because you started with javascript you have to stick with front end and you have to stick with javascript or it's not like just because you started with python you have to stick with python and you're limited to what only python offers like once you learn one language that is applicable to any language and you can kind of learn new languages much more quickly like i was able to learn python so much quicker than javascript after i learned javascript just because it's very similar and same with like once i learned python like running learning ruby was like such a such a breeze like yeah it takes a little bit longer to understand the specific details of how the syntax works but once you get past that syntax hurdle like most languages are kind of the same um and i would say once you actually learn the language don't like don't get stuck in it either be be broad so what that's one of the things i did when i was uh kind of more a beginner i was like uh i was just even though i learned javascript i was keeping my eyes open for all different things i learned note i learned i even started to learn other languages like python ruby um i started to learn more back-end stuff i started to learn um like uh things to do with like like docker and more like system level stuff i kind of just kept myself broad because i want to really be all across the stack and understand what i like best what types of problems i like to solve the most what communities what programming communities i like the most where can i be the most productive and so i kept learning new languages frameworks technologies and and and and like through that exploration i was able to figure out what what i really want to do right now which is more i'm focused on like blockchain engineering only for the foreseeable future but i wouldn't have been able to go out in there if i didn't explore all these other things and figured out like taste got a taste of a bunch of the other ones and really figured out what what really clicked with me um so if there's a key takeaway like the core goal of when you're picking a language or picking where to start is just get get find the language that gets you in the door and then learn all the core fundamentals of that language so like learn the core fundamentals of language and and like learn computer science through that language and then once you have that core based foundation you can kind of translate it to any language any platform or like literally any industry in the future so just find that gateway drug and then you'll you'll you'll be addicted forever just like gateway drugs make you addicted to drugs uh the gateway programming language makes you addicted to programming um so that's the end of this one i'll create the next one in about a month or so and i'll see you then
Original Description
Software engineer Preethi Kasireddy answers your questions!
Question: “I want to get started with programming but I don’t know know where to start. What programming language should I pick? Should I focus on front-end, back-end, machine learning… or something else? There’s so many options to choose from, it’s overwhelming.”
About Preethi:
Preethi Kasireddy is an engineer based in San Francisco. She's an avid learner who taught herself programming and machine learning, and is passionate about understanding things clearly and explaining them to others via blog posts.
She was previously a front-end & API engineer at Coinbase, a digital currency platform, where she helped architect and rebuild their front-end in React, Mobx and Redux. Prior to that, she was a partner at the venture capital firm Andreessen Horowitz and an Investment Banker at Goldman Sachs. She studied Systems Engineering at USC.
Twitter: https://twitter.com/iam_preethi
-
Learn to code for free and get a developer job: https://www.freecodecamp.com
Read hundreds of articles on programming: https://medium.freecodecamp.com
❤️ Support for this channel comes from our friends at Scrimba – the coding platform that's reinvented interactive learning: https://scrimba.com/freecodecamp
Watch on YouTube ↗
(saves to browser)
Sign in to unlock AI tutor explanation · ⚡30
Playlist
Uploads from freeCodeCamp.org · freeCodeCamp.org · 0 of 60
← Previous
Next →
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
React: Production Server Setup Part 2 - Live Coding with Jesse
freeCodeCamp.org
cookies vs localStorage vs sessionStorage - Beau teaches JavaScript
freeCodeCamp.org
Browser history tutorial - Beau teaches JavaScript
freeCodeCamp.org
Graph Data Structure Intro (inc. adjacency list, adjacency matrix, incidence matrix)
freeCodeCamp.org
React: Parameterized Routing with Next.js - Live Coding with Jesse
freeCodeCamp.org
React: Dealing with jQuery Issues - Live Coding with Jesse
freeCodeCamp.org
setInterval and setTimeout: timing events - Beau teaches JavaScript
freeCodeCamp.org
Browser and Device Testing - Live Coding with Jesse
freeCodeCamp.org
Last Minute Updates - Live Coding with Jesse
freeCodeCamp.org
Post Launch Updates - Live Coding with Jesse
freeCodeCamp.org
React: Setting Up Google Analytics - Live Coding with Jesse
freeCodeCamp.org
React: Masonry Layout - Live Coding with Jesse
freeCodeCamp.org
Load Balancing Digital Ocean Droplets - Live Coding with Jesse
freeCodeCamp.org
try, catch, finally, throw - error handling in JavaScript
freeCodeCamp.org
Load Balancing: SSL Passthrough Setup - Live Coding with Jesse
freeCodeCamp.org
Graphs: breadth-first search - Beau teaches JavaScript
freeCodeCamp.org
React: Masonry Layout Part 2 - Live Coding with Jesse
freeCodeCamp.org
React: WordPress API Live Search - Live Coding with Jesse
freeCodeCamp.org
Creating WordPress Custom Post Types - Live Coding With Jesse
freeCodeCamp.org
Dates - Beau teaches JavaScript
freeCodeCamp.org
Miscellaneous Front End Updates - Live Coding with Jesse
freeCodeCamp.org
Merging a Pull Request from GitHub - Live Coding with Jesse
freeCodeCamp.org
React + Prettier + Standard JS - Live Coding with Jesse
freeCodeCamp.org
React: Sortable Responsive Table - Live Coding with Jesse
freeCodeCamp.org
Geolocation Sorting by Distance - Live Coding with Jesse
freeCodeCamp.org
Tradeoff Matrix - Agile Software Development
freeCodeCamp.org
The Definition of Ready - Agile Software Development
freeCodeCamp.org
Getting first React job without experience - Ask Preethi
freeCodeCamp.org
React: Google Analytics Click Tracking - Live Coding with Jesse
freeCodeCamp.org
Submitting a PR to an Open Source Project - Live Coding with Jesse
freeCodeCamp.org
Should I go back to school to get CS degree? - Ask Preethi
freeCodeCamp.org
Hero Section CSS Changes - Live Coding with Jesse
freeCodeCamp.org
Working Agreement - Agile Software Development
freeCodeCamp.org
A day at Pennybox with Co-Founder Reji Eapen
freeCodeCamp.org
React: Sorting and Filtering Data - Live Coding with Jesse
freeCodeCamp.org
React: Sorting and Filtering Data Part 2 - Live Coding with Jesse
freeCodeCamp.org
React: Building a New UI - Live Coding with Jesse
freeCodeCamp.org
Definition of Done - Agile Software Development
freeCodeCamp.org
Getting started with jQuery (tutorial) - Beau teaches JavaScript
freeCodeCamp.org
Making a React Blog with WordPress Content - Live Coding with Jesse
freeCodeCamp.org
React, NextJS, CSS - Live Coding with Jesse
freeCodeCamp.org
jQuery events - Beau teaches JavaScript
freeCodeCamp.org
React/NextJS Routing and WordPress API Custom Types - Live Coding with Jesse
freeCodeCamp.org
React: Working with API Data - Live Coding with Jesse
freeCodeCamp.org
React: Refactoring Components - Live Streaming with Jesse
freeCodeCamp.org
jQuery effects - Beau teaches JavaScript
freeCodeCamp.org
More React Refactoring - Live Coding with Jesse
freeCodeCamp.org
animate in jQuery - Beau teaches JavaScript
freeCodeCamp.org
"Finishing" My React Site - Live Coding with Jesse
freeCodeCamp.org
Starting a New React Project (P2D1) - Live Coding with Jesse
freeCodeCamp.org
React Project 2 Day 2: Learning Material UI - Live Coding with Jesse
freeCodeCamp.org
The Agile Manifesto - Agile Software Development
freeCodeCamp.org
jQuery: get and set with http, text, val, and attr - Beau teaches JavaScript
freeCodeCamp.org
React Project 2 Day 3 - Live Coding with Jesse
freeCodeCamp.org
The INVEST approach to product backlog items
freeCodeCamp.org
React Project 2 Day 4 - Live Coding with Jesse
freeCodeCamp.org
Chickens and Pigs - Agile Software Development
freeCodeCamp.org
React Project 2 Day 5 - Live Coding with Jesse
freeCodeCamp.org
jQuery: add and remove DOM elements - Beau teaches JavaScript
freeCodeCamp.org
React Project 2 Day 6 - Live Coding with Jesse
freeCodeCamp.org
More on: PM Basics
View skill →Related Reads
🎓
Tutor Explanation
DeepCamp AI