OK, so not a series of tubes
March 6, 2016 6:23 PM Subscribe
How does the internet work? Clients, servers, REST, SOAP, packets, protocols, oh my! -- looking for resources to teach a budding programmer how it all works.
I am not five, or a technophobe: I have made a couple intranet pages at my job, and one website for another job, so I know some HTML and CSS, and a little JavaScript. I have dabbled in Python with this excellent book. I did an A+ course, and have assembled three computers.
Now, if my friend's startup gets funded, he's going to hire me as a junior programmer on this web app he has -- in April or May. My friend knows I know nothing, but he thinks I could learn and wants to help me out, and I love what I've done so far with coding, and want a career change. I need to learn what one presumably learns in the first semester of CS school -- What is all this stuff? How does it fit together? To illustrate what I don't know, my friend suggested I look into Backbone, and this page scared the fuck out of me. No comprendo.
Book and website resources very welcome, or you could just tell me.
I am not five, or a technophobe: I have made a couple intranet pages at my job, and one website for another job, so I know some HTML and CSS, and a little JavaScript. I have dabbled in Python with this excellent book. I did an A+ course, and have assembled three computers.
Now, if my friend's startup gets funded, he's going to hire me as a junior programmer on this web app he has -- in April or May. My friend knows I know nothing, but he thinks I could learn and wants to help me out, and I love what I've done so far with coding, and want a career change. I need to learn what one presumably learns in the first semester of CS school -- What is all this stuff? How does it fit together? To illustrate what I don't know, my friend suggested I look into Backbone, and this page scared the fuck out of me. No comprendo.
Book and website resources very welcome, or you could just tell me.
Maybe you will find How DNS Works helpful and/or entertaining.
posted by sea change at 7:00 PM on March 6, 2016 [1 favorite]
posted by sea change at 7:00 PM on March 6, 2016 [1 favorite]
Best answer: I don't think you are looking for what one learns in the first semester of Computer Science. The same can be said for even a Software Engineering degree. Many CS curricula focus on the math and computational theory and use programming as a tool to demonstrate those theories (for example, a telescope is to Astronomy as a computer is to Computer Science). That's not to say that a CS degree doesn't teach one to program but it's more of something akin to a side-effect than the end-goal.
Web Development is often a subset of a CS degree, if included at all, and the whole of a CS student's Web Development education comes often from 1-3 courses. The rest, they learn on the job or through hobby programming. That's how it worked for me at least -- I had one elective course on Web Programming which was basically an introduction to the LAMP Stack but I've been programming with and for web technologies well before my college years and well after.
In your case, here's a great resource about the web in general: http://www.tutorialspoint.com/web_developers_guide/index.htm. Being a web developer can mean many things. I find the best are those that understand the web from soup-to-nuts and never says "That's not in my job description." That is, be the best you can be and learn as much as you can about all things. web.
I know I have another resource that is similar to this one saved somewhere -- If I find it, I'll make another comment.
posted by TimBridge at 7:41 PM on March 6, 2016 [7 favorites]
Web Development is often a subset of a CS degree, if included at all, and the whole of a CS student's Web Development education comes often from 1-3 courses. The rest, they learn on the job or through hobby programming. That's how it worked for me at least -- I had one elective course on Web Programming which was basically an introduction to the LAMP Stack but I've been programming with and for web technologies well before my college years and well after.
In your case, here's a great resource about the web in general: http://www.tutorialspoint.com/web_developers_guide/index.htm. Being a web developer can mean many things. I find the best are those that understand the web from soup-to-nuts and never says "That's not in my job description." That is, be the best you can be and learn as much as you can about all things. web.
I know I have another resource that is similar to this one saved somewhere -- If I find it, I'll make another comment.
posted by TimBridge at 7:41 PM on March 6, 2016 [7 favorites]
Found it! It's geared towards Front-End developers (which you may very well be trying to be) but, regardless, there is TONS of info in here about all things web: https://frontendmasters.gitbooks.io/front-end-handbook/content/index.html
I linked to the Intro page but, seriously, look through as much as you can. Part 1 is all meta stuff but Part 2: Self Directed Learning would be great for you to begin with, I think.
And, just to elaborate on what I said in my previous comment -- What I mean by never say "That's not in my job description." is to care about everything from the version of Apache on your box and your box's security updates, the database structure and normalization, the LAMP Stack, to SEO, to Node.js, HTTP Requests/Responses, Performance/Load testing, QA, Version Control (very important to have experience with version control these days) and all the way through to using Photoshop/Illustrator to work on/give opinions on the design and the UX/UI of your site.
A lot of developers pigeon-hole themselves by saying (and doing) things like "I don't care about UX, I am a a Back-End dev (or Front End dev, or Database Admin, etc.). Learn about _everything_ enough to handle anything that comes your way and you'll stand out in the field.
posted by TimBridge at 8:01 PM on March 6, 2016 [4 favorites]
I linked to the Intro page but, seriously, look through as much as you can. Part 1 is all meta stuff but Part 2: Self Directed Learning would be great for you to begin with, I think.
And, just to elaborate on what I said in my previous comment -- What I mean by never say "That's not in my job description." is to care about everything from the version of Apache on your box and your box's security updates, the database structure and normalization, the LAMP Stack, to SEO, to Node.js, HTTP Requests/Responses, Performance/Load testing, QA, Version Control (very important to have experience with version control these days) and all the way through to using Photoshop/Illustrator to work on/give opinions on the design and the UX/UI of your site.
A lot of developers pigeon-hole themselves by saying (and doing) things like "I don't care about UX, I am a a Back-End dev (or Front End dev, or Database Admin, etc.). Learn about _everything_ enough to handle anything that comes your way and you'll stand out in the field.
posted by TimBridge at 8:01 PM on March 6, 2016 [4 favorites]
Response by poster: Oh TimBridge, that TutorialsPoint link is fantastic -- exactly what I was hoping for! And to your advice, yes, for sure -- my friend tells me that one big difference in working for a start-up as opposed to a big company (the only kind of place I've ever worked) is that everyone pitches in to do whatever needs doing, irrespective of strict job description. I hope I will learn everything, and do everything. Even documentation, which is the only thing I'm actually semi-qualified to do at this point.
posted by pH Indicating Socks at 8:54 PM on March 6, 2016
posted by pH Indicating Socks at 8:54 PM on March 6, 2016
Great. Glad to hear those resources are useful to you. Your friend is right about start-ups. I worked at a start up during and for a year after I was in and graduated from college -- our line was "we all wear many hats." If you take that mentality with you to other places, you'll stand out.
Documenting code is a great way to learn because to properly document, you must understand 100%! Not to mention it's pretty much a requirement in any size team to properly document your code these days. Best of luck.
posted by TimBridge at 9:11 PM on March 6, 2016 [1 favorite]
Documenting code is a great way to learn because to properly document, you must understand 100%! Not to mention it's pretty much a requirement in any size team to properly document your code these days. Best of luck.
posted by TimBridge at 9:11 PM on March 6, 2016 [1 favorite]
Best answer: You want to really know how the internet works? Read this. It is an extremely in-depth guide to the protocol that makes all this possible, HTTP. The authors of this book are not just random geeks who slapped together a how-to guide. Totty was part of the team that developed the VPN. The book covers not just HTTP semantics (i.e. REST, which Backbone.js is based upon) but also a lot of details about how it connects to wider networking concepts. If you have only been exposed to the application side of the internet, this book is a great deep dive into how things really work in between the client and server.
posted by deathpanels at 5:00 AM on March 7, 2016 [1 favorite]
posted by deathpanels at 5:00 AM on March 7, 2016 [1 favorite]
In addition - go to local user groups. (Meetup.com)
[Career advice below]
Yes, you can learn a lot from usergroups, but more importantly - also possibly find a couple mentors to help you out. (I say "couple" - because if you are asking people for guidance, it makes sense to spread the load across a few different people ;-) as to "who" to ask... typically the topic speakers and/or people running the group)
But ... congrats, and don't worry - yeah, some things you see will confuse you - heck, it may take a decade or more before you truly understand some topics - especially when you are self-taught - but, OTOH - being self-taught will mean that you are going to have a lot of meaningful real-world experience in the areas you do knuckle-down on.
Make sure you create a profile/account on Stackoverflow - that is an amazing resource to ask questions.
When you are encountering something that blocks you - remember to search for an answer, rather than post a request right away - I have a personal rule-of-thumb that I can never be the first person to encounter a problem/bug/issue and 99.999% it has proven to be true - and when you are asking for help, people respond better to someone who has taken the time to try and figure it out.
Also - a trick taught to me by a mentor long ago - when you are given a specific error message, solve for that error - do not assume or guess that it is something else. If, once that error message goes away, another turns-up, solve for that new one and keep doing this until you get no more error messages... By that time, you probably have re-solved your bug...
posted by jkaczor at 6:13 AM on March 8, 2016 [1 favorite]
[Career advice below]
Yes, you can learn a lot from usergroups, but more importantly - also possibly find a couple mentors to help you out. (I say "couple" - because if you are asking people for guidance, it makes sense to spread the load across a few different people ;-) as to "who" to ask... typically the topic speakers and/or people running the group)
But ... congrats, and don't worry - yeah, some things you see will confuse you - heck, it may take a decade or more before you truly understand some topics - especially when you are self-taught - but, OTOH - being self-taught will mean that you are going to have a lot of meaningful real-world experience in the areas you do knuckle-down on.
Make sure you create a profile/account on Stackoverflow - that is an amazing resource to ask questions.
When you are encountering something that blocks you - remember to search for an answer, rather than post a request right away - I have a personal rule-of-thumb that I can never be the first person to encounter a problem/bug/issue and 99.999% it has proven to be true - and when you are asking for help, people respond better to someone who has taken the time to try and figure it out.
Also - a trick taught to me by a mentor long ago - when you are given a specific error message, solve for that error - do not assume or guess that it is something else. If, once that error message goes away, another turns-up, solve for that new one and keep doing this until you get no more error messages... By that time, you probably have re-solved your bug...
posted by jkaczor at 6:13 AM on March 8, 2016 [1 favorite]
To illustrate what I don't know, my friend suggested I look into Backbone, and this page scared the fuck out of me. No comprendo.
Did he suggest that because the company has an application already built in backbone? Otherwise, starting with backbone (which is a javascript framework) doesn't make a ton of sense in 2016. And it's putting the cart before the horse anyway. Get solid on the fundamentals of Javascript before you start playing too much with frameworks or libraries (e.g. React, Angular, Ember, Meteor). There are good resources at /r/learnjavascript.
posted by ludwig_van at 11:52 PM on March 8, 2016 [1 favorite]
Did he suggest that because the company has an application already built in backbone? Otherwise, starting with backbone (which is a javascript framework) doesn't make a ton of sense in 2016. And it's putting the cart before the horse anyway. Get solid on the fundamentals of Javascript before you start playing too much with frameworks or libraries (e.g. React, Angular, Ember, Meteor). There are good resources at /r/learnjavascript.
posted by ludwig_van at 11:52 PM on March 8, 2016 [1 favorite]
« Older Must not involve shooting alien Nazis in the face.... | Just broke up: How to ride the sorrow? Newer »
This thread is closed to new comments.
posted by andendau at 6:58 PM on March 6, 2016 [1 favorite]