How I would learn to code (If I could start over)

How I would learn to code (If I could start over)

Starting in Special Ed and ending at Microsoft (so far), my journey into Software Engineering was difficult to say the least. If I could start over, where would I land? Which languages would I learn and which projects would I build?

This is how i would learn to code if i
could start over for context i work at
microsoft but before that i did six
internships across three countries so
yeah i’ve done a line or two in my life
wait not like that what the to tell you
what i would change i first need to tell
you what i did i started coding in grade
11. well sorta we started with this
language called scratch it’s basic game
development made for children nobody
would be stupid enough to let’s say do
an entire google coding interview in
this language and maybe even do shots
every time the code fails so let’s just
skip that and get to the important stuff
i went to waterloo and in order i
learned first racket then c c plus plus
html css tcl python java javascript c
sharp some of these were in class some
are on their own here’s the motivation
behind each racket for recursion c for
memory management c plus plus for object
oriented design html and css for web
development although these are not real
programming languages or markup
languages tcl i did an internship and
it’s useless python i learned
this alone and over time but mostly just
for side projects java and javascript
for back-end and front-end web
development and finally c-sharp which i
do for my full-time job now but it’s
essentially microsoft’s version of java
so let’s not talk about it c and c-plus
plus are by far the most useful
languages to learn after i learned those
i realized most other programming
languages are essentially just
derivatives of those each new
programming language essentially takes
those and makes some specific tasks
easier basically all these languages
share the same ancestor and c and c
so clearly you should start by learning
these two languages right no these
languages are pretty intensive if you
want to do anything like useful or
impactful it either requires one a lot
of code or two use of a bunch of
libraries that you’ve never heard of
before and honestly are probably not
worth learning which brings me to my
point you need to do something useful
but not too useful now hear me out if
you’re learning c it’s going to be
relatively easy to start solving some
basic math problem and you’ll print the
solution on the screen but all of your
code is contained to this little
terminal if you want to make a graphical
game or connect to a website or do
anything quote-unquote useful it’ll
actually be really hard like even for me
right now i i would have to do a lot of
googling to even figure out how to do
those things essentially if you start
with c anything useful is going to be
too hard and this will be really
demotivating now let’s look at the
opposite end of the spectrum many
students want to get into coding and the
first thing they want to do is learn
machine learning here’s the thing
machine learning is super useful in the
real world but it’s all advanced math so
if you start with it you’re going to be
learning one computer science basics two
python for example and three advanced
math topics all at the same time and
unless you are literally a genie
you’re gonna come out of that not really
knowing any of the three the sweet spot
is somewhere in the middle you need to
do something that’s useful but not too
useful now we’re talking about doing
useful things let’s clear up the
distinction between coding and
programming coding is just writing code
to solve computer science problems let’s
call them math problems to show the
distinction this is what you need as a
prerequisite to learn how to program
programming is the ultimate goal
programming is the act of using coding
to make programs that solve real
problems you need to learn the
fundamentals of coding to know how to
program remember when i talked about
people starting at machine learning this
is trying to program before you know how
to code and people only solving math
problems in c is knowing how to code and
never using that to program there are
tons of tools use cases frameworks that
surround each coding language but in the
beginning you kind of need to isolate
the coding language itself learn the
basics of that and then you can take it
and learn how to program with it the
easiest thing to start with is probably
python but honestly i wouldn’t be upset
if you picked a javascript and i’ll
explain later python mostly looks like
plain english even if you don’t know how
to code you can sort of read it it’s
super easy to get started in you can
immediately start learning the basics
like variables functions move quickly
into data structures and algorithms
you’ll really want to know the basics
about types like arrays and the basics
of control flow like functions loops and
even a little bit about classes don’t
get carried away you don’t need to learn
advanced things like inheritance for
example if you’re feeling a little
feisty you might want to learn
exceptions hash maps maybe sprinkle in a
little recursion now there are plenty of
intro to python courses in the world so
i’m not going to bore you with the
details i’m sure you can find that on
your own but now that you have a coding
language down let’s talk about
programming so the first thing i would
do is take what i’ve learned and build a
website now there are three important
aspects to a website there’s the back
end which kind of manages user data
there’s the front end which is what runs
on the user’s browser and then there’s
the database which essentially just
stores data now we’ll start with
back-end you’re going to want to pick a
pretty high-level language either one
python or two javascript the first
program i would build would be a basic
website now what type of website what
does that website do well i’ll explain
that in a minute but for now let’s just
make a project in that language now when
making a backend you’re going to learn
concepts like http methods get post for
example depending on the project you
might be interacting with a database
once you start to feel comfortable and
have your basic back end working then
let’s try our hand at the front end now
on the front end you’re going to be
using things like javascript html css
this is the reason i say javascript is
actually a pretty good starting language
because you can use it for the backend
and the front end now i said each
programming language has a bunch of
tools and frameworks that make it easier
to use basically there’s no reason for
you to write code that somebody else has
already written the frameworks i would
use for these languages would be python
i would try either django or flask
javascript on the backend i would use
express.js which just think of it as
simplifiednodejs and on the frontend i
would use react and if you need a
database i would try mongodb now
anecdotally i can tell you for python
i’ve seen more jobs listed for django
than for flask and i’ve seen more
express js jobs over django on the front
end i think react is pretty solid after
that time you should learn c and c plus
as it’ll teach you everything you need
to know to learn any other programming
language i love this method because you
start learning the practical and
marketable stuff immediately but then
you start preparing yourself for the
long term necessities this keeps your
motivation higher and it really just
makes you marketable quicker now what
website should i build think back to
useful but not too useful this doesn’t
need to be very complicated in fact it
really shouldn’t be complicated at all
there’s going to be a lot of new ideas
and concepts thrown at you if you try to
build the next tinder or the next
instagram you’re gonna end up with no
product no learnings and no motivation
now before i give some concrete examples
and i will let’s talk about what makes
project good in an abstract sense it’s
always best to create things that you
actually find useful i’ll give you an
example of one of my first side projects
so i created this thing called spotify
to youtube mp3 in university i had a
trial of spotify and when it ran out i
was too cheap to buy spotify i didn’t
have any money but i had 400 plus songs
in my playlist i didn’t want to lose all
that so i created a python program that
uses the spotify api to get those songs
and then youtube’s api to download the
mp3 version now i had all the same music
but for free this project was one of the
few that i actually finished and it’s
one of the few employers loved asking
about why well one because it’s unique
but two because i actually used it i
built it for myself other projects i
would start and then i would lose
motivation and i would never finish
think a little about some problem that
you have in your life that would be nice
to know like maybe it’s uh just knowing
when your favorite beer is on sale or
maybe it’s an online clipboard so you
don’t have to keep messaging yourself
random on facebook messenger all
the time it doesn’t have to be relevant
for everyone it really just has to be
relevant for you now if you don’t have
an idea yet don’t panic i have a
solution for that you’re allowed to
follow a tutorial on youtube or udemy or
any of those sites
but you’re not allowed to build the same
website as them for example if you’re
following a tutorial on how to build a
weather website instead try building
something like a currency converter
that’s a real example that i did what’s
great about that is most of the code and
the concepts are going to be the exact
same but it restricts you from being
able to copy and paste the solution
therefore you can follow the tutorial
but you can’t copy it now moving back to
c c plus plus for a second the best and
most popular languages and frameworks
are always going to change they’re
changing as we speak right now don’t
underestimate those fundamentals you’ve
learned in c and c plus because
ultimately if you know those well most
other languages are just going to be
some subset of those languages also know
you’re going to experience the
dunning-kruger effect this curve shows
when somebody’s learning a new skill at
the beginning they tend to be
overconfident in their abilities when
they start to learn more they see they
actually have so much to learn they
quickly lose all their confidence and it
takes them a while to build it back up
bear in mind you’re going to go through
this process you’re supposed to feel
like you’re not good enough you’re
supposed to feel like you’re not smart
enough for this but trust me if i can do
it then you can do it one important
resource is hackathons it’s weird to be
at a hackathon in the first place but
it’s cool to see all this hackathons are
scary because you’ll go not knowing much
but people will expose you to things you
didn’t know you didn’t know they’ll help
you build and complete an entire project
in 48 hours they’re also just really fun
even if the food is actually terrible
every single time now don’t forget this
comes after you learn the basics of
coding don’t try to program before you
know how to code and don’t waste all of
your time coding and not programming
subscribe smash the like button and go
break some eggs

Share THis- How I would learn to code (If I could start over)

Leave a Reply