My co-founder taught herself web development using online courses and resources. This “Learning Path” outlines the resources she found most helpful, and lays them out in a sequence that a beginner should be able to follow.
We realize this is a curriculum, not the best curriculum. We'd love your feedback on whether this is useful, and what we might change or add.
Also if you’re so inclined, we’d love feedback on our product SlideRule itself (a Yelp-like catalog of online courses), which you can access it by clicking on “COURSES” in the header.
EDIT (based on some of the comments):
We're very encouraged to see the response to this.
1. On which other subjects would you like to see such Learning Paths?
2. If you're interested in helping us build more learning paths (on any subject), we'd love to hear from you (in comments here or at founders@mysliderule.com)
Honestly I don't think that web development is that much trickier than learning how to do anything with Python. There's inputs, there's outputs, you can have a half decent REPL loop, etc.
For me the biggest hurdle by far is deployment. It's honestly impossible to describe how much of a gulf there is between those who see it as a completely trivial matter and to those who don't know what's going on.
I want a tutorial that starts with "You want an app to do X with your friends, like an imitation of Doodle for planning Dungeons and Dragons sessions? The real way? Set aside $X money/month, book a domain name, and we're going to set up a real website, incrementally, and publicly available at every step along the way."
Stuff like Heroku people make sound like it's a one stop shop but it feels like it hides too much and you don't have access to your files like you do in your desktop. It's an environment conducing to pushing out stuff quick, not learning.
I'm trying to teach a friend of mine web-development, but she struggles with OOP. Also I teached programming at a company I worked last year and all the trainees had problems with OOP.
Somehow the basics of OOP came to myself rather easy. I only had problems with the applied stuff, because all tutorials about OOP where with animals and cars.
The people I try to teach mostly have problems with the basic concepts.
To be honest, I pretty much lost interest in OOP. I found the ML/Racket parts of the course much more interesting (and less confusing) - even though I barely knew any FP and had actually studied some OOP. Perhaps I was biased, either against OOP or Ruby, which was used to teach it. Hmm...
Same here, in terms of the practical elements of the course. I still found Dan Grossman's lectures entirely engrossing, and I'm not just saying that because I noticed he was a HN user.
Even though I found the Ruby/OOP part of the course less interesting than the ML/Scheme parts, I feel like it gave me a much better understanding of OOP.
Actually the optional piece where he went through a derivation of OOP at the end of the Scheme portion was also one of the most helpful things for me.
As someone who's left the beginner stages recently, I found OOP stuff to be mostly intuitive and easily to relate to real world examples. Steve Job's explanation at the below link galvanized it.
The only difficult part was some of the implementation. Function calls on "self" took a while to get used to.
I think that this particular approach might be useful only for individuals with a bit of time on their hands, but it really helped me. When I was trying to grasp OOP I decided to make a project using the Seaside framework for Smalltalk. There's an excellent free book available here: http://book.seaside.st/book
While it's not explicitly an OO tutorial it was really helpful for me, coming from a web development background, to better understand how ideas like inheritance play out in a real application. Seaside is a component-based framework, so ideas like instances and subclassing objects with different features were very concrete. On top of that, when viewing the site in your browser in dev mode you can click on any component and explore its state.
Of course one also has to pick up Smalltalk for this to work out, so it does require a particular commitment! But Smalltalk itself is a great way to learn OO, as it's based entirely around objects and messages, using a very simple syntax. Even if other OO languages don't fully adhere to this idea, it's still helpful when moving on to other ones. A great way to learn Smalltalk is Pharo by Example. http://pharobyexample.org/ Actually, one could just use this on its own to learn OO. But playing with Seaside was a lot of fun!
Otherwise, I found the OO portion of Learn Python the Hard Way to be quite good, and that's probably the better choice for pretty much everyone. :)
Technical: Haskell & MongoDB
Non-Technical: Basic Business for a Technical Entrepreneur (Gautam - you could be a good fit to design such a learning pth)
As a recent graduate of a Rails bootcamp, I am excited to see what you guys cook up regarding Rails.
I also wanted to see, in the future, if you guys would be interested in making a Javascript track (Javascipt, NodeJS, AngualrJS, maybe even MeteorJS too). This is something that many people are also looking to dive into as am I.
If you want to be hear when we launch a Rails track, best way is to create an account on SlideRule. We send out a weekly newsletter that includes new stuff on the site.
Javascript track -- Not on the list right now, but tell us more. Do you know people who'll sign up for a waitlist? If we come to believe there's enough demand, we can expedite it.
Separately, I'm curious -- which bootcamp did you attend and how was your experience?
Also, checked out your profile. Domi sounds like an awesome idea with tons of potential!
Hey this is awesome. I'd love an artificial intelligence path. Also, is there a way for me to incorporate courses that I've completed from coursera and udacity into your site? That'd be great for having a one shot glance at what I've done.
AI path added to the "To-Do" :-) Currently, one way to include courses you have taken to your "binder" would be to review them on our site and mark their enrolled/completed/dropped status in the form. We give users a dashboard where they can see all courses completed/enrolled in or added to watchlist. You will help a lot of learners by sharing your reviews too :-) Thanks much!
Yes, I found it weird that the book is not on this list, but clearly the author is geared towards python - although web development might be the only area where Ruby outshines Python.
I think "Ruby outshines Python" is a matter of great debate, and I wouldn't say that one is universally better than the other, rather it depends on your application and personal preferences! I am the author of the path, and before we started building SlideRule, we evaluated Django/Python vs Ruby/Rails briefly .. I am a big fan of python, so the choice was obvious for me :-)
That said, this is just one web-dev path and doesn't in any way claim that Python is superior to the alternatives. There can be so many more - on RoR, Node or even more recent ones like scala .. hope experts will help us build those. If you are interested, please write to us at contact@mysliderule.com!
Python, through SciPy/NUMPY is well positioned for the future of web development, which is a numerically driven world. I see Ruby as better PHP,. Lastly phython is more universal, which is good. So I do think Python is a really good choice for introductory programming.
Cool idea, but as someone who as actually taken the courses in this list, the order is all out of whack. There is no way someone completely new to programming could jump into Udacity's CS253 and have any idea what is going on. Even from CS101, there is a significant gap that you have to make up for on your own.
Quoting my co-founder (and creator of this path) Parul's response to similar comment below.
"My apologies if you found that disorienting! You are right that CS101 becomes a prerequisite for CS253 (if you don't know python already). The reason I started with CS253 is because, personally for me, it helped a lot to know the top level concepts of "How web works" and the front-end (because that is what a normal user sees) and then go into concepts of server side languages which might seem too involved and dry to a beginner."
Thank you both for your responses! I speak from vivid memories of frustration with that course. I didn't notice the bridge section you had put there.
I do really admire and appreciate what you're doing. I'm a self-taught web dev, and the most overwhelming part was just figuring out what to learn next. I'm glad someone is trying to solve that problem for others!
This looks great! It reminds me of this Google Doc I put together a while back, which you are free to copy/draw inspiration from. And I've already added this page to it, so that should already be a good lesson on recursion :p
https://docs.google.com/document/d/1jlJCxNG7XyCPpUNRybH1b2Pb...
Thanks, this looks very comprehensive. Especially like the list of blogs and FB pages, these are hard to find. Did you ever think about rank-ordering the resources within each section?
I really liked the Udacity course. It's by no means exhaustive or representative of the ecosystem (it focuses on Python/Google App Engine, I took it quite a while ago but I assume it has not changed), but introduces a lot of basic concepts (client/server, templating, routing, caching, security, cookies...) in a very concise and efficient way.
I enjoyed that course a lot; I took it in its first run soon after I started teaching myself programming. My only complaint with the course was that, for me anyway, it left a lot of mystery in terms of answering how it's all actually working. There were a lot of pieces, such as Django boilerplate code and using Google App Engine, where they showed you how to use them in a specific manner, but never really explained how they were working behind the scenes. So I felt like there was a lot of magic, and that my understanding didn't run particularly deep in some key areas. That said, the course covered a huge amount of ground and I'm sure they had to be judicious with what got covered. And I greatly enjoyed it. But I would have liked if they went with a bit more of a ground-up approach, explaining how a server worked and how data gets passed into the app, and then how that translated into Django's operation, etc...
I actually deliberately didn't use Django specifically because it's so complicated for beginners (and for pros, IMHO). I was trying to avoid magic. Webapp2, which is the web framework GAE users, and what we used in the course, is about as simple as you can get without starting from scratch.
Hey Steve, thanks for your work in this course. It's a terrific thing for you to do and it's my favorite course to recommend to beginners to webdev.
That said, the webapp2 decision is by far my biggest hesitation in recommending it. Webapp2 just doesn't have the community support; whether django is too "heavy" or flask too "light", they're both popular, which means they have great support, plugins, help on SO, and a lot of developers familiar with them.
Webapp2 also hasn't seen a release since 2012[0].
I write this having recently completed a small consulting project where I helped a team on GAE move from Webapp2 to django. The productivity gains just from using django plugins and builtins was insane. They had been on webapp2 because their dev learned webdev on your course, and I think he would have been much happier had the course included a more widely used framework. Lock-in on Appengine is also a major issue; the work to move off can be enormous, especially if you're using a framework designed for GAE.
Again, I totally understand the decision to use webapp2 and the course is still a huge net positive. But if you ever think about revising it, I'd recommend considering another framework, and possibly even using Elastic Beanstalk.
EDIT: I understand django can take a little more to get up and running, but most people learning Python are going to have to learn it very soon anyway. I learned how to program by doing the django tutorial, and didn't find it burdensome at all.
Sure, in the right hands Django (and Rails) and yield major productivity boosts.
I personally don't like working in frameworks of that size because I find myself fighting them to do what I want.
For the course itself, I really wanted the students to get as close to the server as possible. Then, when some of them switch to the heavier frameworks, they'll have a better idea of what the framework is doing and what is possible. The course had a time constraint on it as well.
All in all, your anecdote reenforces my feelings on the topic :)
Steve, please know that I am forever grateful for your work in your excellent Udacity course. It began a path for me that recently led to me changing careers to become a full time programmer.
Whatever people might say about webapp2 and App Engine, I think they were the right choice for the course. I had no problem moving on to other frameworks or moving away from App Engine, having gotten a solid understanding of the concepts from your course.
Hi Steve, I'm the author of the path and a big fan of your course - thanks so much for putting it together! However I would like to echo @rattray's point - when I started learning as a complete newbie to web-dev, I found Django much easier to pick up, less intimidating and more satisfying than Webapp2. The Udemy course I have included later teaches how to put up a simple landing page using Django/bootstrap and in 3-4 hours - you have tried frontend, backend and all. The joy of making something real, even if simple is a big motivator and confidence-booster, which IMO is key to self-learning. I actually started with your course, drifted away in the middle, and then came back after finishing the Django course.
Hi Steve, thanks for teaching! I really enjoyed it. I'm not sure I misremembered it as Django; maybe I had confused it at the time with Jinja? I was quite a newcomer then (still am in some respects, but much less so). Which of course means that to a certain degree, my confusion was simply par for the course. I know it's difficult to write a curriculum that completely caters to thousands of students, and I want to emphasize that you guys did a great job. There were a few topics that I would have liked to have covered that I didn't come to understand until later. I guess you can always go deeper on a subject, though.
Steve -- Wow, I have to admit I'm a little star-struck by your comment here. Your course is easily the most awesome single resource I've found for learning web development -- thanks for your work on it!
I took the course more recently (August - Oct 2013) and the forums had most of my questions already answered in the areas where more depth was needed for me to understand a concept.
I second this recommendation. The Web Dev course on Udacity formed the start of what eventually became a full-time job programming for me. The course has just the right mix of breadth and depth for a beginner that moving on to any larger MVC framework will be easy.
Really great stuff for beginners. Thanks for the list. I'll forward it along to a few people who are interested but don't know where to start. However, it does look very python-django specific route on the back-end side. My suggestion, branch out the back-end side to include paths using different frameworks and such?
Good call! We built this one first because my co-founder taught herself Python-Django, so this was easiest for us to create. But we'd love to branch it out to RoR, etc.
That said - as somebody looking for specific Python / Django for web development resources, this is a great approach! I could see the author forking the tutorial at certain logical points moving forward to broaden the audience, but love that it speaks to exactly what I'm looking to learn.
This is a neat idea. I disagree a little bit with the ordering. I think the version control aspect should be placed a little bit earlier but I can see why you would want to be seeing results of what you are doing before making sure you keep track of your changes when just starting.
Agreed. I'd put version control very early in the learning process of a coder. If you know enough code to be writing actual things that do stuff, you can benefit greatly from version control, and the earlier the better.
I'm really glad someone took the time to do this, and came with quite a wholesome set of resources in the end. For someone who has moderate web dev experience such as myself, I think it's also definitely useful for review as well as the aspects of web dev you may be less/not at all familiar with.
Great list, but I think my newish book should be on it, since it takes a unique approach that both beginners and veterans, but especially beginners, really like, as evidenced by the rather wild Amazon reviews: http://amzn.to/1aOyqch
It's a well put together list and a very useful website. You've done great work pulling together a whole lot of courses and it's good to see them finally being tied together into specific paths. Would you consider adding projects or additional materials to the learning paths? I've found that's what our students get the most value out of with in the project I've been working on (the odin project -- http://theodinproject.com) because it gives the students a tangible result that unites the things they've learned and they can add it to their portfolios. Often the MOOCs still hold your hand a bit too much to be a complete solution. Happy to discuss -- erik@theodinproject.com
Is there a reason its start with CS253 then flies back to CS101 in section 3. My prior understanding was CS101 knowledge is required for CS253 to make more sense. It seems to jump around a lot aside from adding additional resources to help learning during specific sections.
My apologies if you found that disorienting! You are right that CS101 becomes a prerequisite for CS253 (if you don't know python already). The reason I started with CS253 is because, personally for me, it helped a lot to know the top level concepts of "How web works" and the front-end (because that is what a normal user sees) and then go into concepts of server side languages which might seem too involved and dry to a beginner.
This is a great idea. I'd love to see something like this for other topics such as Data Science, Digital Marketing, Lean Start-Up, Marketing Strategy etc.
I'd love to help/contribute to the marketing related courses if you decide to expand your subject offerings.
As an immediate step, data analysis sounds good. :)
As a theoretical, how about medicine, pharmacology, every flavour of engineering, fine art, music, architecture.
Coding, graphic design seem to have a few things going for them that make them a very natural fit for self learning online. Part of it is not needing much outside of a laptop and an internet connection, but math needs even less and you find far fewer autodidact mathematicians.
I suspect that not needing a curriculum is actually a part of it. I don't dispute that having a curriculum available to you can be useful and that following a curriculum will get you from start to finish will probably give you a relatively efficient, high success rate path. But, I think that the more self contained and small an effective quanta of learning is, the more suited it is to self learning.
Considering that learning is a means to an end for most people, another factor is employers' willingness to hire a self-taught individual -- far greater in areas like software development or design (where one can showcase one's skills through a portfolio) than say medicine (where the only credential of accepted value is a professional degree). Not saying that's the way it should necessarily be, but the status quo presents a hurdle for self-learners and content creators.
That said, we're in this for the long haul, and we definitely want to try and push the boundaries in areas other than software/technology down the road.
This is really cool - thanks for laying out out like a progression! There are so many resources on the internet I find myself relearning a lot of things several times.
This is great. I have been looking for a service like this. A pain point when navigating through tutorials and courses online is finding the proper material for your skill level. Hope this service will be able lighten this task, and provide suggestions based upon a users previously enrolled courses.
FYI: I got a 403 error when I tried to sign up (CSRF verification failed). You should probably override the default template for that error page, too. Nice to see you're using Django, though!
Hey, sorry about that! Could you please try again and see if the error persists? If it does, please send me an email with your work setup & flow details at parul@mysliderule.com
Yes I agree, if you're wanting to learn web development, then rails is the way to go, there's more resources for current problems and fixes in rails than anything else.
You are right, Nick. Rails is more mature in the number of resources available and its dev-community. But increasingly around me, I see more people starting to build on python. I have seen tons of learning material and bootcamps on RoR but not even a fraction of that on Python/Django . That was one of the reasons we thought that documenting our learning would be useful!
I strongly think so. Even as someone who had used version control before (CVS), I found Git fairly intimidating in the beginning. I feared it much till I fell in love with it. Further, it is hard to make someone appreciate the need for version control without getting them to write enough code first.
Several things will work, but the odds are that you will end up learning git eventually and there's no good reason not to learn it earlier rather than later. It's probably not as bad as you think
Not necessarily.. depends on your choice of browser. I prefer Chrome, but I know a lot of web-devs, esp those are on Linux or those who have been coding from pre-Chrome days, prefer FF/Firebug. Also, when developing for compatibility with multiple OS/browsers - you sometimes end up using many. Ee have even used "IE DevTools" to debug some of the IE specific issues :-)
I spent a good amount of time trying to find a decent good place to learn node but couldn't find anything I liked.
I ended up buying Manning's Node.js In Action. It's not bad and I'm about halfway through it. I'd like if it included some exercises instead of the follow along approach.
We realize this is a curriculum, not the best curriculum. We'd love your feedback on whether this is useful, and what we might change or add.
Also if you’re so inclined, we’d love feedback on our product SlideRule itself (a Yelp-like catalog of online courses), which you can access it by clicking on “COURSES” in the header.
EDIT (based on some of the comments):
We're very encouraged to see the response to this.
1. On which other subjects would you like to see such Learning Paths?
2. If you're interested in helping us build more learning paths (on any subject), we'd love to hear from you (in comments here or at founders@mysliderule.com)