General Assembly: How to Teach Yourself to Code with John Resig

hi everyone I'm Derek Dahmer here with General Assembly today we're going to be teaching a class no not teaching class hosting a panel on teaching yourself how to code I'm here with some really great people to talk about this topic John Resig Thomas Cooper Karen and Rebecca Garcia I'll let them each give a quick introduction unto who they are and what they've been working on while their authority on the subject John you want to introduce yourself sure so I work at Khan Academy we make educational material for people to use at personally and at schools all over the world for free development wise I do a lot of JavaScript development I'm the creator of jQuery and I originally created processing j/s amongst many other things Rebecca yeah hi guys I'm Rebecca Garcia so I currently run coderdojo New York City and alongside my co-founder so we teach youth ages 7 to 17 how to code so we're part of the larger coderdojo movement which has over 200 chapters in over 23 countries across the globe and so I'm a self-taught developer I started out with PHP my sequel and now I also do Ruby on Rails and all that sort of fun Postgres stuff hi my name is Thomas Karen I work at Apatow we're a mobile app company we don't teach programming but we do a lot of programming there so I guess that's why I'm on the panel I'm also a self-taught programmer not what PHP basic yeah alright so once you tell us how did you first get started coding Oh everyone's the ticket sorry ok yeah I start coding I guess I'd with basic q basic actually alpha dos back I think in 93 there was some games that shipped with daus for Q basic like a tank game there was not tank game I think it was the guerrillas or whatever it was the same sort of thing where they're arching you know bullets and a snake game too and I like playing it and it came with the source because you compile the source ran the game and that's how I kind of first got into programming by dissect going through that code learning basic from the help files that came with it and ever since program is been what I've been doing starting with basic moving on to C C++ Java and not working on Android Wow right I actually started very slowly I started with QBasic as well yeah a friend of mine this is back in like middle school forever a friend of mine came over to my house with a floppy and he said you got to try this out and he put it in it was a copy of QBasic with some various programs on it yeah and he had made something like super simple there's some printing an if statement or something and I saw the knowledge like oh that's so cool so like I immediately had to try and make a game and it was just like a really like hilarious like like you kind of think you were you like open the door and got at the tunnel a song event but it was like there's like no logic it's just like you do the thing I think like you hit Enter and then I can do the thing and that is goodness and yeah so that I start the same way then I yet did cue basic basic on calculators visual basic and I started getting a web stop doing HTML sort of doing Perl and then later gotten to you know JavaScript and Java list but not everything else I actually I started off with web development around when I was like 12 or so I was really interested in making websites and I may or may not have had a really awesome you know warrior princess fansite but yeah so I started teaching myself HTML CSS and from there sort of came PHP and my sequel and sort of learning different CMS's so definitely starting off with vlogs so you know moving on from so now I think what a lot of people do is like you start out with tumblr so it's like a lot of customization with tumblr going on so started with similar stuff like that and they're like WordPress and then from there on you sort of get to like bigger content sites and then you realize you're like oh I really want to build even cooler stuff so you sort of get into app development which is sort of where Ruby and rails came into play and I actually I came to New York City and I took my first rails course from our vehicle at our school like way back it was it's pretty cool to be working with him now though so awesome Wow sounds like everyone has been doing this for a long time one of the great things though now is that I think coding has just gotten a lot easier to learn who's a lot more resources out there what would you guys suggest is the first thing that someone who is starting out from scratch and just kind of wants to get interested in it should do to start learning how to code I think a lot of its gonna depend upon what your goals are I find that the biggest motivator for learning to program is having a tangible goal at the end so you can say that like oh I want to build games I want to build a website I want to you know they do these open things those things are going to affect what you probably should learn and the direction of which you should learn of course it make me hard to under understand that if you've never done any programming before so at least what we end up doing at Khan Academy I've developed the computer science curriculum there and we particularly focus on easy to use programming just using processing the processing language with JavaScript and we do graphical programming so it's it's a very easy way to get started because everything you do you can see on the screen and it looks compelling I find that's a very easy way to get started with code in my opinion so because it's it's a it's a simple API it's simple to learn and it has something that you can see on the end yes you mentioned that it's great to have like tangible goals to work towards maybe like projects you should start with do you have any suggestions on like how you come up with something that you want to build I don't know I think is a thing that's tricky I mean it's the problem is is that you know a lot of things that easy or you know you see love like you know they've you sit done and your xbox or playing Halo and like oh this is so awesome I want to build halo the problem is that it's like really hard to build halo literally you know tens about hundreds of millions of dollars and you know a thousands of developers to build that and not to discourage you but the thing is it's all about setting your your goals appropriately so that I think the simpler thing you can shoot for the better somebody so if you want to build a game instead of building halo why don't you try building like pong you know like I think obviously I feel like the best way to learn how to program is start by building things that are just inherently simpler and you can even just go back to and you have to stuff you know art hearty games and stuff like that that's a yeah if you ever wanted to do games for example as you get to your point I'm sorry it's your point John about it like Halo right a great way to kind of get into game programming is taking in my code halo right you're not gonna write it from scratch but getting involved in the modding community because that's a good way there's a lot of good tools for like making you know modding maps that has some level of program in there's some kind of scripting and that's kind of a good entryway into it and then once you get kind of familiar with that then you're probably going to get the edge to kind of dig a little deeper so that's another way to kind of get into it from a game yeah that's what you're into yeah and one of the the really cool things I think about programming in general computer science is that there's so many different kinds of outlets so when I actually before I started making websites I really thought I want to make video games and I thought that was like my dream job like right so my first retail job was even like working at Gamestop this is like oh it's gonna be so cool and then when I actually learned how to make video games that's like this is awful I think this is just not my strength but what was great is I got to explore that early on and figure out what my strengths were and I was like well I'm really good actually I'm making a website so why don't I do that so it's it's fun to just play around and you know there's so many different mediums you can play with that it doesn't have to be like one set thing like oh I'm gonna unlike set on learning rails like there's so many other aspects and different kinds of components because you have like front-end development back-end development and it's figuring you know what it is that you really like yeah I think I think those are all great ideas for keeping it simple and kicking things off so definitely without getting into too much detail a lot of people here new to coding and but I've heard programming languages all over the place like oh you should try this you should try that they probably you know just a deluge of information don't really know where to start is there a recommended language to learn and how much does it really matter I think I think that's a really good question I've gotten that question a lot from people who have never done programming before and you know especially we teach a lot of different kids so we start them off actually in like HTML CSS because it gives a lot of like instant feedback but I think it depends on really what you want to do because if you're if you're planning on making video games I don't know like HTML and CSS might be the right route for you versus you know getting into the actual computer science fundamental parts of things and learning what functions and what variables are and loops and those are all really important aspects I think that everybody should kind of learn like the foundation I don't have a specific language I I mean my like language of choice if I had to pick like one with the prettiest syntax would be like Ruby I mean I think Ruby is a really nice language to look at but you know like PHP is very prevalent so this is also kind of like a it's like a religious war you posted so I'm going to let everybody else answer I mean personally like I yeah of course a I do tell my jobs to stop but I also think that JavaScript can be a very good introductory programming language it has in a lot of ways it is relatively simple to learn and you can use it pretty much everywhere it even use it on the web for building you know interesting websites you can use it on the server or the desktop or mobile or you know it kind of exists everywhere so it it really can be you know is you know a very broad tool that you know if you learn once you can use it everywhere I think one thing I would also is I also really enjoy Python and I think pythons yes some taxes particularly easy but you know a lot like Ruby for example yeah I think the good thing about JavaScript is that it doesn't require a compiler so I think it's a really easy way for people to get into program because you can learn like the things you mentioned Rebecca you know loops conditionals things like that in JavaScript but all you really need is you know a text editor and a browser we're supposed to like something like Python you're going to compile it run it on the command line that's right I actually like not to you know does not because John's here but josh is actually I think a really good language HTML too but it's also HTML static really just by itself and without going to css3 stuff it's you know it was pretty static you can't get what you see if you really want to get a launching point I think Java scripts are a really good way to go and I think on that note that I think it can be really compelling to go the web route in particular learning HTML and CSS and JavaScript because what you do is instantly can be instantly visible to anyone and there's no restriction on that so if you want to build a site and show it to your friends your family or if you just want to have something that you can use it is instantly possible to do that with a website and that's one advantage that I'd say almost over almost any other technology so it's I think that's um that that is this particularly attractive and because I think like when you're starting to program you don't want to do it in a vacuum you know you don't just want to sit there and do it and be like well that was the thing I want is it like listen when I started like I was doing qbasic I was building games and I was showing my friends and we were like sharing the way each other there was a lot of fun and I feel like that is that can be very rewarding so in this way I feel like if you wanted to do something with that feedback loop to it doing on the web is very nice something everyone loves JavaScript and HTML but so for the people who are beginners beginners sure so if someone wanted to just dive right in there and right after this live streams over start messing around with JavaScript and HTML what are some good like starting points right away Lisa Khan Academy we just kind of kind of made that mark /cs is our computer science area and that's all JavaScript we don't do any we don't teach any HTML or CSS so it's all using just to play image and we use the processing API this frosting it is quite a processor right now but they the muslin is an interesting language originally written in Java that allows you to do sort of graphical animations and such so that's at least a way to get start with JavaScript although getting started with HTML is certainly something different and distinct and I would say yeah so there's a lot of really great free online resources I mean if you type in like try HTML CSS I'm sure you're going to find you know you know code Academy you know there's so many different learning treehouse I think there's one called so there's like a lot of really great sort of plug-and-play and go along as you can see the results right away but I still really feel like not just the online aspect of like education is really important but also like just actually go meet up near you and like learning alongside other people is really important so I mean if you go to like meetup calm there's like a meet-up for every single programming language pretty much and you know you can usually go there and make new friends and you can talk about code and you know like share your projects and ideas and so for us at a coderdojo that's a really big aspect is that there's a lot of you know like online resources but what we do is like you know connecting mentors to the youth themselves so that they can actually learn alongside and see things in action you want to see its real case usage so what are some meetups here in New York and also just how would you find a meet-up that's good for beginners no matter what City er I actually at the first meetup that I went to is actually I think like a Drupal meetup in Boston and then there's so there's when I when I lived back in Boston there's a couple a couple of big meetups and I know here in New York City there's like a ruby made up like there's one if you want to go like there's Ruby women rails girls there's like all different sorts of different ways that you can go and one of the ones that I really recommend if you're in New York City is actually a hacker hours which is open office hours and you can just drop in and ask a few questions and sort of throw in a shout out to my good friend Aidan Feldman who's mentor so he's a really great guy and there's just you know there's so many great people who are willing to help out you know and they also come volunteer with us at coderdojo which is great wow that's great so that covers a lot of web programming I'm sure there's some people who are interested in building apps and that can be a pretty challenging place to start but maybe Thomas what are some good places to just start dabbling in building out apps sure certainly for building out apps it's a little bit more involved a good place to start for developing Android applications is actually the developer site for Android believe it's a developer or something like that and there's a lot of training materials on that site to kind of get you up and started with a very basic application there's great training material there for putting together basic screens making requests kind of everything you need to do to build an application starting at like a pretty low level actually like you don't really need a lot of programming experience or really any at all to have follow along with the training material that they have on that site so that's a good place to start for for Android development for iOS the developers site for for iOS from Apple is a really good place to start also like if you're going to be starting out it might also make sense to for building apps to look at something like a titanium or PhoneGap I'm not big fans of those going like if you want to build an application professionally yeah but for active learning it's a good place to start because it's kind of simplified which is why I don't really like it for doing real stuff but it's a good thing for for learners definitely because a some of it can be done with HTML and JavaScript and then you can deploy it to like iOS or Android and then lets you code in JavaScript if you already know it you get a little bit good great so a lot of viewers are asking you know how good math do I have to be to learn programming ice did you know that it in school like is this upper gonna be a problem depends what you're doing web stuff generally you don't have to be no games you do have to be absolutely and if you're doing is essentially you're going to find that like the more complex of a thing you get into the more likely yard I have to interact with complex math but but but I think you'll generally find that starting out doing web stuff you can go a long ways without having to do yeah I I think for me you know actually I was pretty bad at math growing up but when I ended up into program getting into programming and stuff I was able to see things in a different way and like sort of practical usage which actually made math a lot easier for me so if I all means you know I'm not I'm not writing super hard core like algorithms so I can't say for sure that you know like my math skills are like super awesome but definitely you know you can like like john was saying you don't need to have like super crazy math skills and memorize all those silly formulas that they made you memorize this cold definitely it's definitely good news great what are some so we've talked a lot about online resources you know websites to give you some information you know the developer Docs and automated tools like Khan Academy and things like that our books still useful are they a good place to start are they good for reference like how can we use books or should we just avoid them altogether I I definitely think a lot of the programming books can SS doorstops they're usually about like this thick but they do make a good reference and to see something in somebody else's point of view instead of just looking at reference manuals because you know it's a little daunting at first to take a look at like a reference manual or to type in a command and type in you know like men or help so I think that they're a good starting point for some people although I recommend because they're so big I definitely get the digital versions and there's also I think a website where you can get a subscription to a lot of different technical books it's called a Safari Books Online which I've used which is pretty nifty so you don't have to buy a ton of books like every single time and pay like 30 40 bucks a book yeah I mean I think that you know if you like reading and if you're comfortable with reading books and it's how you learn information it's a good thing to do but I actually feel like most of the information that you need to program is available online both for open source and closed source software whatever the project is they're gonna have documentation most of the time they're gonna have getting started guys installation guides all that kind of stuff that you need to get started and for me it feels like it's really replaced the need for having books they've been written by someone about the subject especially with open source the kind of community aspect of that I think is really replacing the need for that because most times I feel like you can find the information you need in a similar format that you would find in a book online whether it's in like a wiki or you know community forum so I find generally I haven't bought it I haven't purchased a computer book in a long long time this is me I'm not learning new stuff I'm just going online to the sites to the sites for the end projects or whatever the language I'm working with and then reading off of that I supposed to get a book and I'm actually a little dubious when I see someone walking in with a new book because I'm I wonder why they use and look it up online hmm I said John didn't you just come out so yeah I mean I see I have written two books on JavaScript now and the latest one just came out cold months ago secrets of the JavaScript ninja and so I guess I'm of the opinion that when you're first getting started that you could probably go a pretty long ways without needing books and I think you will find that there was lots of places online that can give you that initial instruction you have the documentation or you're just simply going in and repeating sort of the patterns that you see you know they're about this this thing happened let me try that and I think the part where online documentation hasn't done very well is in sort of the intermediate to expert level they my most recent book I wrote a lot of POW for example closures and prototypal inheritance and these are some concepts they haven't explained on what online but not very well and so I really went into depth you know writing you know many many pages on these particular subjects and I've gotten lots of emails from people saying how much they appreciated it because the what existed online simply wasn't very good so I guess it's yeah if every wouldn't depend upon the subject but I would say for at least for when you're first getting started you can execute I go always I will say put at least four JavaScript there are a lot of really good books out there pretty much all the books by Nicholas Zakas the za Kas are really good a lot of the O'Reilly ones like JavaScript the definitive guide is good also I'll mention a eloquent JavaScript is online it's an online book and I think it's eloquent JavaScript net and that was also really good so there are definitely a lot of resources out there to learn for oliver's German that's great I know definitely we learned most of us have learned JavaScript just from playing around on the web and eventually you find yourself going back to a to a book and really kind of solidifying the concepts that you started learning so those suggestions are really great what does it take how long does it take to kind of learn some of these languages I guess to get to the point where you start feeling good about it specifically JavaScript and mobile apps and rails so I have seen this in both adult and kids so I've actually t8 here at General Assembly as well and you know it's adults who are working a full you know 40 hours or more a week and are cramming in you know three hour classes in the evening twice a week and for them you know it takes sometimes like I feel like if you don't have the time to really sit down and like take a couple of hours out of out of your day to like you know study something then it might be a little bit harder so you know I know like the classes here at GA are sort of like you know HTML CSS introduction for a couple of weeks then JavaScript and rails so to have it sort of spread out you know works well for some people and other people are just sort of like how can go kind of people and you know I've seen this with our kids I could or dojo where they'll just get really interested in something and then you know like they'll sit there for like a whole day and they're like what's the next thing I can learn what's the next thing I can build so I think it depends on your like learning style you know if you're if you're looking to really get down into like the nitty gritty part of things and – in terms of like feeling ready for a job I think that also – some people themselves so a lot of people are always like well you know when do you think you know I can get like get a real like Rails developer job and I think that also depends on how much experience you build up and if you decide to teach yourself and build your own portfolio and maybe do some pro bono work to get your experience up I think you know that's a really great way to do it and I did that myself this I did a lot of different internships I figured out language I liked and then you know from there I decided hey I'm gonna go apply for a developer position and you know see those take oh they take me as a junior developer and yeah so worked really well for me Thomas you have any suggestions on kind of that same question in the context of how do I become a get a job as a mobile developer like how long do you think you have to work at it and how do you know when you're ready when you're ready sure in terms of time I think is very I don't think there's a right answer for that certainly I think if you're more intuitive not to it but you're more interested in how things work that certainly helps you when you're learning to program because you kind of really need to have that inquisitive mind about how things work because you're only going to get so far just kind of putting pieces together without really understanding what's going on underneath in terms of working towards you know getting a job I'm a mobile I think that you need to work towards a goal on an application really like your best way of getting your foot in the door is to have an application that's up on the store that you can kind of show someone even if it's something that does something that's already out there right like another like to do application or something like that but if you have something out there on the store that's presentable you can show to people that really will help you open the door to engine to a job if you don't have any other experience you know now how long can that take it could take honestly like a half year it could take longer than that um it depends on how much effort you put into it but really working on like a simple idea gaining it up on the store is really the best way to kind of get a mobile job because it's a great way to show that you know how to do the job before you get you know look at this app I built it I know what I'm doing that's really I think the best way you can even go really far showing you know doing work publicly and showing so does is proving that you can do things I've mentioned open source is a great way just simply putting anything out there people start to see your work and you can when you apply for a job you can prove that you know that I have done work on this you know you know I felt these things even there are just things for just you to use but I mean whenever I've seen applications from you know what I've done hiring and like for example I've taken two college students one college student to their classes they did projects and classes and stuff like that and another student who did the same as I thing did classes processing classes and then did additional projects outside of classes when they build a web app or they put a mobile app that other student is looks so much better just like infinitely better you're so like oh forget that again I don't care that he begot straight A's or something he got B's and C's like I gotta check this guy out because he obviously has much more interest in exploring interesting problems tackling interesting problems you know working on you know just these these part of things so I think I think that's a big thing and one thing I'll mention is that in programming in general when you're just starting to get programming it's really easy to get discouraged and I think one of the biggest traits that I've seen in programmers is that sort of the desire to overcome the obstacles that you encounter and have the patience to do it I've seen a lot of people who just they don't have the patience to sit there and be like okay wait why is this going wrong if it's like ah this was broken I hate this and then they get frustrated and walk away and in it so you when you're learning you have to have that you have to be able to say okay this isn't working but why and try to get to that and get to that understand that's what takes it to the next level I just really wanted to second that it's it's a really big you know emphasis on you know willingness to learn and to be a continual learner because you know you know it might also be sort of very scary to take a look a lot of these like job applications or requirements for jobs and it's like know ten different programming languages and five different databases and this many frameworks you know and it says like a lot of crazy stuff but really I think what people are looking for is somebody who's willing to learn who has at least said well I'm not an expert in this programming language but I've taken a look at it before and I'm willing to learn and you know that's the next step to like get your foot in the door is to really is to take a job where you know you may not be the best of whatever it is but you're willing to learn along the way and I think those have been like the most valuable jobs for me I've done I think that that persistence net willing to learn is definitely one of the traits a very good programmer I know what are some tips for getting out of a rut when you kind of like hit a wall you don't really know you're stuck and you're all alone how do you how do you get them to get over the hump well yeah I was saying alone down I'm sure like if you were programming back in like the early nineties you kind of were alone but now you can go online like Rebecca mentioned that second overflow is a great place to post your questions and make sure you search for your question before you post it otherwise they're not gonna like that but there's so many places online for you to ask questions forums communities yeah IRC I found a really good place actually is Google+ for whatever your programming this HTML or Android or whatever there's some really great communities on on Google+ actually where you can go and get help when you kind of hit those roadblocks so I think the most important thing is to kind of be able to explain you know what's happening to you and then find the right place ask the question where the Stack Overflow or some other place and most a lot of times especially at Stack Overflow you can usually find most of the I think the beginner questions I've already been asked and answered and definitely even like Twitter twitter is really great hash tagging and you're gonna get a bunch of angry people who's gonna tell you I'm like we're doing wrong so yeah you wouldn't like Twitter you know like even just sort of getting connected to the online communities where it's like oh I follow a bunch of people on Twitter who are you know who like the same programming language you know and then it's it's really great to like stay updated and current with that kind of stuff so I think that's awesome yeah I mean secreto is a great resource I know but one thing we hear from every single intern we take on I ask them what's the what something surprised you the most about you know working on a real engineering team they always say how much we use Google always surprises them just for cheating helping that's the first thing that we teach kids is let every one of the things it's like you know instead of we're in such a mindset of like tearing the answer right away home of the answer giving me the solution right away but it's like no no no you have to work for it and you know yeah work for a little you know got to dig through a couple Google pages or you know find the right answer and you know that's that's the mark of a true programmer that's something you guys would be careful to say you can't you don't want to just rely primarily on Google or is that go over flow because you will get to a point where you do need to kind of try to figure something out on your own once you get past that beginner stage and hopefully if you're past that be on your schedule deal to try to figure it out on your own and not rely on yeah yeah the Internet well speaking of professional habit so what you guys give it just a your idea of what a day-to-day life is like for a junior developer on an engineering team like an ever wants to take it sure so for a junior developer on a development team most of your day I think is taking by game requirements or you know directive about what you need to build and working towards that hopefully you're working with the new team that you can kind of collaborate with but a lot of the time is you be taking I think a set of requirements you know the application or the site needs add this this this and kind of working towards that so I think you know your instead a lot of your time coding but if you're working with a collaborative team mobile you can work with designers if you're lucky to have them people who are you know managing the product as well I I think that's kind of generally what a junior level developers say is like I I think it depends on where you're working whether you're working in like a smaller sort of a smaller what do you call it a company that's doing smaller websites or if you're at a big company then they might have like a process in place so often times like if you're starting out as a developer you get stuck with a novice one task but the idea is like you know that you can work through them to get to the fun stuff so like a lot of times you get sort of like a bug support or here you know this you know this needs to be fixed but you know it's I feel like you know if you get into a job like that you can definitely prove your worth and show like hey I'm more than just your bug supported fixing or different things like I can build really cool stuff and so I've seen like I've seen a lot of great stuff like this I worked at do something where they put out like these micro campaigns every single month and so you were constantly constantly building all these little websites that had so many different components and you had people doing front-end and you have people doing back-end and then you know you had some of the server stuff going on so you know I think your day to date will depend where you are but it is really finding a good company that has like values that you believe in and wants you to grow alongside them and for you to become a better programmer as well they shouldn't be expecting you to know everything because nobody knows everything you know and I'm sure you know we don't we definitely don't know everything or else why would I write books no yeah I definitely definitely do all that just just that it's gonna depend upon the company but I think in most good companies you're going to be given well-defined well quantified tasks and it ends you'll be working with someone or reporting to someone who's going to be able to give you the feedback you need so that way you know say hey why don't to add this new thing to our website and you know or what have you and it'll say it needs to do this it needs to look like this and you know it's gonna be it I'd say most companies would do that for someone who's just beginning you know just you know this is what we want can you make it and then whatever you're done you say hey I mean it looks just like what you said if it and then you get feedback again it's like oh sort of what about this one but that's how you learn you know is you get that feedback iterate and you become a better programmer it's great answers so we have a bunch of specific questions coming from the livestream um first one is does my operating system matter what's a matter if I'm using a Mac or Windows no well if you want to know for iOS yes it does matter if you want it all for iOS we're like you know your iPhone iPad you definitely don't want to have a Mac otherwise in most cases I don't think I know they in cases where really now is that much if you want to die in that program and you probably might have a Windows machine I I mean I was I was anti Mac for a really long time and then I was like oh we know PC gaming windows is so much better and then I actually like to start a couple of jobs that I had you know I was forced to use a Mac and then I was like this is pretty nice I kind of like rails on this I like you know it's sort of figuring out what your preferences are I mean you know your equipment isn't going to make you a better programmer per se so like if you buy you know like a $1200 MacBook you're not going to just become like a really cool program or overnight but you know having you know finding out whatever setup works best for you like yeah other than those few specifics that toss punch and there's nothing think of okay game development probably or notes are video if you're doing more like video kind of hybrid coding stuff that maybe you'd want something like from Attica maybe I don't know yeah I think the only thing I'll mention is that yeah it doesn't really matter and then in a it doesn't really matter what platform you use the only thing I'll mention is that at least in web development many developers do use Mac's and then in the only thing that results from that is that a lot of the tools and a lot of the techniques you'll read will be tailored to do expect that you're on a Mac platform the command line oh come here my nor even the type of programs you might be using or you know stuff like that it's but again it's I don't really see anything that's like exclusive or it's like you have to be it's just that it some of the thing you'll see things in a book or an article and it just kind of it's like hey you're back this is it it's nice and easy and you're like okay then and it looks like there's be like oh why don't you do something so yeah I I wouldn't say that that is like I want to say that that's a reason you have to be on the back but it is a nice part about it yeah I mentioned that getting your development environment set up is half the battle that will probably take you a good couple of days so don't worry we were all frustrated at some point getting everything working so once you're over that hump though you're great you're great great we got another question what is the difference between a language and a framework and do you need to learn both it's gonna depend upon this is really saying yes they are different it's going to depend upon what you're working on like for example you know Ruby and rails or JavaScript and jQuery these are all you know frameworks are built off of a language so so in the case of JavaScript and jQuery JavaScript is the programming language you can do something so that you can do you know loops and if statements and you know all the functions and all sorts of stuff and if you actually want to interact with a webpage you're typically interacting with the Dom it's an API for interacting and changing things on page and jQuery is a framework that makes interacting with the Dom with web page very very easy so it so this is a sort of thing where I think you'll find that most things can be done with just the language theoretically but frameworks are there to make things easier for you same thing with the Electra be at RIT that Ruby and rails Ruby is the prevailing edge you know everything you can do in yeah you can build what web application using just Ruby and in some libraries it would be really painful to do though so you might as well just use rails and it's gonna make things a lot simpler so yeah there are differences but I'd say almost universally frameworks are there to make your life easy so one thing I'd like to add to that is I mean I made an early on mistake of not knowing enough Ruby before jumping into Rails and I feel like if I had had a better understanding of how the programming language work so Ruby being the programming language rails being the framework you know I definitely recommend beforehand learning the programming language by itself at first at least understanding some of the basic principles and how it works so that you can then take that knowledge and go okay this framework is telling me this is how I can make different views and different models and you're like okay well I kind of know some some Ruby and now I know how to put these things together so I definitely recommend learning the program my hunch first at least a little bit of it great so people have heard this term probably thrown around a lot like github what does get up and what why my program was always talking about it can I take this one sure github is it's a it's a site that's actually running source control software called git and it's a place where for open source projects or you don't mean it doesn't need to be open source was primarily write open source projects where you can go ahead and publish your code and other people can look at it download make modifications do pull requests that kind of this sort of thing um and contribute to it it's actually a much easier way of working with open source it seems like because as opposed to something like like having a repo up on SPN or something like that it's much easier for people to kind of go there browse what's there look at the the source code look at the comments it's got a great I think commenting system built around it so if you're working on like a there's a Android library out there that's pretty popular called actionbarsherlock it's a lot of people go there and take a look at it and ask questions contribute code make pull requests to get the source code that might be a little bit too too technical I might not eat so yeah so I feel like an easier way to explain it is you know not only putting the code on line but other people can sort of other people can copy that code on their own computers and so what's going on is everybody has their own copy of everybody's code and so this prevents there from being sort of issues when you're like you're like oh well we can we can all technically work on this code together and then when all the code sorts of sort of comes together you can see well this is going to conflict with this and that so we'll we'll fix that before it ever happens versus you know when you save a file so like you say you're writing a document in Microsoft Word right you know when you save it it says do you want to overwrite this file and you click Save all your other stuff is done only gone unless you go through the history right so in the same way git is like that so every time your or get getting github it's like that so every time you're like ok here's like a new line of code or like you know if you're writing a new line into that document you hit save and you're like okay I'm saving this copy so you're saving copies of your code and it's great for like oh I just broke my entire site you know like you undo your entire site so it's really great and that they I'm getting up itself they have really really good documentation on getting started and you know works on both Windows and Mac and Linux of course so definitely I definitely a look and playing with it yeah I think also just taking a step back and looking up the topic of source control would actually help you a lot in terms of understanding what's going on with github because it's it's very easy to use but I think horrible to what Rebecca was talking about in terms of versioning and your check-ins and things like that I think topic of source control is really something to look up and kind of just do a quick read on and I think a lot of the things to go on I get how it will make a little bit more sense I think one of the things that's important about github is building in addition to everything that's been said is that it's sort of become the de facto place for people to go and look at code and so I think you'll find that you running across a lot of projects out there and you can easily you know go through and read the code of this projects which i think is pretty compelling in and of itself that's a great way to learn but additionally it's a great way for people to see your code so if I know frequently like if if I'm ever interviewing someone at a job and they have a link to the github repo I'll definitely look at that I'll look through all their projects oh through all their code and so I can get a really good picture of their programming ability like immediately it's much more insightful for me than anything they say in their resume because if they say oh I can do this and that then I'm like what can you and and then I have to like ask them improve to get to prove it and but you know if I can go look at their code on github then I will definitely do that and so I think that's one thing that's important is and this goes right in hand with just getting your work out there in general is that if you have your code out there in and up on github it's very easy to be open to people to see this should I wait for sorry I wait for myself to have a project that I feel proud about to put up on get up should I just throw it up there as I go well you definitely don't want to just throw it out there as you go but when you definitely well you know if you guys people are reviewing it right but what you can do is provide you a way of getting started by giving you an idea so if you're starting out programming right and you don't have a necessarily idea of what you'd like to do if you can find like a subject or some piece of software out there that you like or you're interested in you can find something on github a project that you can kind of contribute to and that can kind of build up your your corpo resume right up on github the contributions can make that way a lot of times there's issues that need to be worked on especially for open source that they're always looking for contributing contributors to you know take care of and I think for a beginning programmer you know if you're doing Ruby on Rails find a open source project on github and look at the issues and start contributing that way and that's a very small task sometimes to to work on soget hopes great for a code and sometimes even for front-end stuff but for for the people who are specifically working on HTML CSS maybe their designers what are some good places to start showing off your your design work mm one of the good places to start showing off your design work I think is a dribble with two three B's B's in it but I also think that another great place to show off your stuff is actually if you're doing a lot of really cool sort of nice design e css3 kind of like hybrid stuff I definitely recommend like code pen IO or lot there's a there's a lot of different ones like that where you can actually see you know what whatever the animation is and or whatever the HTML is and like the source code and so it's nice to see everything side by side and you can also it has similar functionality to get where people can like see it star it or like fork it and things like that so we have some people asking about intermediate resources so you just you started playing around the beginner stuff and you're starting to run out of material you want to level up to intermediate level where should you be looking is it books websites other programmers how do you get to that next year I'm actually gonna go ahead and say find a mentor find somebody who you know is already you know has already had a job or two in the industry and you can find these people at meetups find them on Twitter you know find somebody who you know will even say like hey I'd love to grab a coffee with you and pick your brain about this project that I'm working on or what do you think you're you know like oh or can I you know can I pick your brain for you know getting a little further in html/css so I know a couple people that that's worked for and I have a mentor myself who's great who I just sort of like you know what do you think of these ideas and to get somebody else's perspective is really nice I mean I think there are a lot of great online tools but I think also there's something about like face to face you know that you can't really replace entirely and when you can't get face to face Skype is always good yeah I would mentoring is really nice I there definitely many times in which I wish I had I had a mentor and he had just kind of struggling and trying to figure things out and then maybe doing things poorly and then a metric could be like no you should research this thing this thing was you know completely do what you're trying to do stop doing that crazy thing do this and just as an example like it took I delayed starting to use databases for far too long I started I was just using things I wrote myself and putting them out into text files and it was really bad and I kept delaying and delaying because I didn't want to learn databases and then finally when I finally did I was like oh oops save me so much time and effort and I just like not delayed to do this but this is sort of thing that like I would say that mentor could definitely help with and I will say that that reading others other people's code can be really illuminating if you go in and you know and you see something that a program does like wait well how does that work go and read the code and it's been hopefully the codes well documented you will be able to understand what's going on and how the replicated that's and maybe you'll be able to improve your programming technique from that yeah it's a John's point definitely for Android developers who I talked to who are looking to you know improve their their skills definitely looking at the Android source and understanding was going on under the hood as it really is a way that time to prove your skills and kind of move on from just being a beginner I definitely go with that all right so I think we'll be wrapping up soon just a few more questions are there any apprenticeships and internships for people who are just starting they can work do a real job with I say if you can't find one just ask I feel like a lot of companies are always looking for people to help them out especially with projects or internships apprenticeships I would definitely say so like leave and had a quarter oh do we have like up we have a high school intern who is like new startups will take me they're not hiring high school interns I don't like wait are you kidding me you're developer of course they want you so I feel like just asking you know never hurts like ask you know like hey you know I I just took this course and you know I'm looking to get more experience would you mind if I like tagged along like I think yeah just asking I can think of any specific ones like I know there's a couple that sort of pair like college students now are people who decide go to college with startups themselves so I believe there's an organization that's doing that but another good option is becoming a mentor yourself so if you even if you think your skills are not crazy good I think volunteering and like helping other people with their own stuff helps you as well so which is what we always encourage at coderdojo which is people are like well what programming languages should I know and you know it's like no I don't know just have some basic knowledge and come learn alongside the kids and you'll become like a better programmer yourself another organization I'll mention is a hacker school here in New York they offer sort of this opportunity for you to go and receive mentorship and do programming for things like three months or so and this can be a really useful opportunity for you to sort of you know accelerate your your development there one thing I just remembered that I wanted to mention earlier about the github stuff is that you don't never feel afraid of putting your code and out there I find that it happens for a lot of developers is it like oh this is terrible I don't want anyone to see it and I think you you have to work to overcome that because as you start to put yourself out there more you know there's fewer I think more people can see what you're doing and I ever one knows that you're gonna write not great at the beginning and you'll get better as time goes on so don't feel bad that like you know after years gone by and your stuff is really good you have a product back there from a year ago and like well that was awful just it's okay like you don't worry about it everyone knows that and one knows that you get better over time and they can see that obviously your current work is your currently your best work so yeah I wouldn't feel worried about that yeah it's like sketches for an artist and also some other great ones are of course General Assembly and flattener in school as well if you're in the New York City area or wherever there's a General Assembly near you and another route other than just doing intern to kind of get into programming professionally I think is also going the route of testing I think in a lot of companies going in through testing Quality Assurance and doing that is a good way to kind of get into programming professionally because you'll get acclimated to what it's like developing you'll kind of see they use the process of developing software and it can be a good way to kind of you know parlay yourself into a real program java new entry level programming position yeah or if you're a little intimidated by mentorship may also recommend hacking for good or doing volunteer coding for good so there's developers for good meetup here in New York City there's a new nonprofit coming out call or live company coming out called code montage which partners which partners people who want to improve their coding skills with nonprofits that need help and there's also other websites like katchafire where people are looking for volunteers for website Web Design kind of stuff getting matched with an organization is great that's awesome well this has been amazing I hope everyone got a lot out of this briefly you guys want to just each say where people can find you talking about interesting stuff like this topic on the web John I guess my blog that's the hilariously named each again don't be embarrassed about the own stuff this is a very old website anyway but it's all new stuff on it the also on Twitter JD Resnick on Twitter and yeah I had tweet about cutting stuff all the time so come find me at eat girl web comm also number my name is already taken everywhere else Internet yeah so geek girl web calm and at geek grow up and also find me on coderdojo calm so I find me on Twitter too at Thomas Caron and at applica to was post blogs or sometimes on engineering topic so it's worthwhile checking out awesome oh thank you guys alright

12 thoughts on “General Assembly: How to Teach Yourself to Code with John Resig”

  1. Thanks for all your videos! I am currently learning C# programming on my own. Tell me if I am doing good. Check out my skills http:\

  2. Great info provided but perhaps you should link each question in the description. Because in all honesty most people won't watch a hour long YouTube video

Leave a Reply

Your email address will not be published. Required fields are marked *