Hey i'm back with my third dear, erm, dear Preethi series and
This time I'm going to answer your question another question I get pretty frequently actually
so this one this
Writer said, "I know HTML, CSS Javascript Jquery blah blah blah
I followed lots of tutorials to make simple sites and but now I'm stuck. What do I do next what can I use
to start building something like I want to actually build something."
I've kind of like this question a lot and I've also been in his position before as well
so you might you know you might be in the same position where you've kind of gone through a bunch of
Tutorials you learned a bunch of stuff
you maybe spent a bunch of time learning syntax and things like
Conditionals and data types and classes and so forth so you kind of collected a bunch of knowledge here
And there we are like what what's kind of next, right?
You actually want to build something, but it feels like you have a bunch of disparate knowledge
And you don't know how to put everything everything together. I think the answer to this will be a little bit different for everyone because
There's no way I can sit here and tell you the exact steps of what to do next
but I'll kind of give you a framework for how to think about your next step once you've kind of reach this position where you're
no longer just learning the basics, but you want to get to the next step so
First thing I would say let's take a step back and remember
Why you want start learning end up learning to program in the first place, right?
So I think I obviously agree that everyone should learn to program
But I think it's a good starting point to understand what you personally want to get out of it
Are you trying to be the best designer? Are you trying to be a web developer?
Are you trying to be a mobile developer, so you can build a mobile app or are you trying to just use?
Programming for your own personal hacks that you want to script up or are you trying to maybe build your grandma's website for her bakery?
Whatever it is
think about think back to the time that you
started programming and think back to the time of why you got so motivated to learn to program and
Personally I want to learn to code because I want to build this learning app
Where I can use writing techniques to help you or anything that you've ever read
And I was really passionate about being bringing this idea to life and I want to learn the skills to bring this idea to life
So for me it made sense to learn web development and so depending on what you're trying to accomplish
you can figure out what you need to learn right and
Regardless of whether it is honestly
it doesn't matter just remember that goal and keep it in the back of them ask back of your mind because that's
What's going to make motivate your day to day
So that's the big picture and then before going to that huge lofty goal that got you started
You think smaller right you have to get started somewhere?
So personally what I did was I choose a problem that I want to solve at work so at the time
I was working in Andreessen Horowitz and I want to build a web application
That would help entrepreneurs understand
software as-A-service
metrics so one of my focus areas when I was there was I'd focus on sas businesses and a lot of
entrepreneurs sometimes didn't really understand how to analyze the businesses and how to how to
Understand the metrics and I kind of want to create this website that would have
Like a flow diagram those clickable and you can get the definitions you can get the relationships between the different metrics and so forth
so is this kind of pretty simple web web app one single page web app and
For you. It doesn't really matter what you pick as your first project honestly just pick something that
You care about enough that when stuff goes wrong because stuff will go wrong. You're still motivated and inspired to keep going and
Frankly, it's not like this is the last application you're ever going to build right you're just going to build a ton more
this is just the first one so you start somewhere pick something that you care about and
Maybe over time you can even rebuild that better and better two three four times as you become a better programmer
So so I had this idea of this application
So what I did was I mapped out the idea. I figured out who the target users are for the features
I want this app to have what is the functionality?
I want to have the look and feel of it for me design and the look and feel things really motivate me
I get really motivated by
Seeing something beautiful. So that's something that I really want to accomplish with this application and then drawing some rough sketches
And then I try to put together just like the HTML skeleton for it sells it here's the header. Here's the
Body user Subheaders. Here's the different boxes where these?
Metrics will go, and I had like a side navigation, so I started floating the basic HTML together?
Then I added a bunch of CSS for the visual stuff and making it look pretty
And then lastly I was able to go on to add Javascript, so the core thing is I started very simple
I knew I just wanted a single page. I didn't want to have to deal with
Routers and all that I had no servers back-end. It was all just front-end and Javascript HTML and CSS and
Once I got this version out then I started to kind of layer on other stuff
So I want to learn how service work
And I wanted to I was holding a lot of their logic in the data in the front-end
and I want to really store that and have a server handle a lot of this logic and data and
So what I did was I learned node. I went through a few tutorials and
went through the documentation
And then I figured out just like with a lot of fiddling and learned how to add a node server
And it got that node server working, and I remember the moment that I got working I was like oh my God
This is awesome, and then next up was I learn how to build an api, right?
so I had a simple router and I built an api and then I figured out how to get the
Front-end to talk to the Api and
That was like a big moment for me, and then I was like okay. I'm storing a lot of my
Definitions and data on in like a local file
I want to move this to a database, so then I went through a bunch of tutorials to learn my sequel
I learned my sequel, and then I learned how to set up a my sequel server with node and
Plug those together and got those to talking to each other and that was like another aha moment and over time
I just kind of continue to add more and more complexity and I even sure to add an additional
Page the Front-end so that required me to learn how to use a router and how to navigate between those two pages
And so that was kind of like the full stack process for how I got this goes back application running
And then I also learned a little bit of basic testing after that because I've heard the testing is good
And I really wanted to get in the habit of doing TDd. So I learned about testing and added tests
And then finally got this application running locally
the overall Key Was
Just to get a basic web application running to keep it manageable right it took me about a week to get the initial
MVp of the front when I'm working and another week to get the backend working because as
Not only I did have to get working
but I had to learn all this stuff on my own and
then the last step was to actually learn how to deploy this so that I can share with my
Friends or my sister or whatnot and so what I was like doing was I was doing much like googling to understand how to like
Deploy a Web application and
I read a bunch of tutorials on go to Roku and digitalocean and I want to be super Fancy
I want to be legit, so I think I'm going to deploy with you. They do digitalocean and frankly
It was a little bit too complicated for me at that stage
I couldn't really understand everything that was going on in some residual digitalocean documentation and everything I
Was still just like putting things together? It was a little bit hazy
so I was like you know what I'm just going to scratch this and
I'm going to use heroku which was like. You know it took me like half an hour to deploy in heroku
It was like simple, and then you know later on as I got better
I was back, and I learned how to use digital ocean and much more complicated deployment processes
But I want the lesson I learned there was like when you're beginning
You kind of get all like shiny object syndrome
And you want to use all these sophisticated tools that you hear about and and stuff but I would just say start with the basics
Get things working and so the simpler the better and really the goal is always just to finish and not make it too complex where?
You get like so frustrated and just like never finish and give up
So yeah, I remember when I deployed it my like eyes lit up
and I was like it was the best feeling ever I was putting the link to all my friends and my boyfriend my sister and
Everything and it really gave me the motivation to keep going
Whereas if I had started with this big
Ambitious project, I honestly probably would not have ever finished and I was just given up
1/3 of the way through or something but with the accomplishment of getting through each layer each step along the way. I just
Motivated enough to kind of finish
Another thing that I do when that when I was in that stage of like, okay, I know a lot of things
But I don't know what to do next is I would learn from other people by reading other people's code
So whether that's open source repos or examples that you find online like I know the react and redux repos for example
Have a lot of examples of sample applications
I would kind of read through those and really try to understand how people think through
putting different parts of the application together
And honestly I would copy a lot of the parts of the code that I thought was useful or that I liked or like their
programming style
And honestly it's totally okay to copy when you're learning
This is how a lot of us learn even some of the best programmers that I know today that are like
Kernel Developers at Google
they started off by
Copying other people's code and just like playing around with it and like changing some parts and learning how that works and so forth
So it's okay to learn from other people's code and copy it as a beginner and then over time as you get better
It's hard to write just as good code if you practice more and more
and
Another recommendation that says don't get stuck forever
If you are if you ever get stuck as you're trying to build your first second or third, or whenever web application
Then make sure you have like a process for how you go about debugging this stuff, right?
First like look at the problem that you're running into and really think about it
What what could be causing it like write it down maybe and like think about all the possible ideas you have for what could be causing?
this this really forces you to think about the problem and
Next time you run into this you'll know like oh, hi, remember this because I wrote it down
And I I remember thinking through how to solve this problem
and it'll be much easier to solve the next time and
Then other things are like learn to use the chrome debugger in the web app like I mean that's a huge lifesaver a no-brainer
and
learn to use the internet I often find so many beginners who just like get stuck and really just don't use the internet enough and
I'm honestly there's so many answers online just learn from other people there's people have run into you
There's 99 likely, 99 percent likely chance that someone has run into the problem
You're running into especially if you're a beginner and building pretty simple and basic to leverage them leverage the internet
And if you really can't come to any answers
Asking opens open those communities or free in the free code camp communities ask on Stack overflow
Ask someone else try try to find someone that you can ask so in conclusion
there's really no simple answer to
Ok what do I do next? How do I get to the next step how do I become a better developer?
I learned all the basics
instead
Depending on your skills and depending on how much you're willing to learn and what your initial goals for learning to
Program was just pick a project
and build something and start small, I'm slowly slowly layer up, and I would say if
You've kind of done this process, and you made it through building your first application. You want to go even deeper
One thing that I did was I would do I try to I started researching like Javascript books
good books that explain like basic computer science concepts or design patterns and really read through those and then try to be building your
applications once you've kind of learned some of these new
Concepts because it used to see how how much better you're getting day-By-day and week-By-week
By the week as you learn your things
And look your you know as you're kind of going through this process
Which is one of the hardest parts of going from like a beginner to like an advanced beginner kind of stage?
You'll hit a lot of oh my God this sucks so much
I want to give up moments, but you'll also have those moments. Who are like you're like. Oh, wow this is so amazing
I don't want to put this down and so every time you have that shitty moment where you're like
Oh, I don't want to do this. This is really frustrating and getting stuck. I feel dumb
Think about all those awesome moments
You're going to have and really let those motivate you because honestly
programming is really about this couple of
Amazing moments you have that are just like you don't want to give those up for the for for the world?
But you have to put up with a lot a lot of shitty stuff
Along the way to get those but it's totally worth it because the feeling of like building something it is unbelievable
and I'm addicted to it now and I hope that
by building your first or second or third web application you will get addicted to that feeling -
I think that's it for this one, and I hope you enjoyed it