Thank you so much for you input. I really appreciate it.
1. Setup Workstation
2. Learn Linux or OSX at the command line
3. Learn vim
4. Learn Git
5. HTML
6. CSS
CSS Frameworks
L. Bootstrap Framework M. Foundation Framework
7. Javascript
Javascript Frameworks A. Angular.js B. Backbone.js C. Knockout.js
8. JQuery
9. Pro Developer Tools a. Yeoman b. Grunt c. Gulp d. Bower e. Coggle f. Balsamiq
BACK END
10. Node.js
11. Databases and Caching Technologies
12. Webserver, reverse proxies and load balancers
In that spirit, I hope you will allow me to explore some questions that might help you narrow down what you are doing. To reiterate what the other poster asked, "What do you mean by Unicorn" and I will tack on, "and why is that the goal?"
You say you want to target "exceptional people". What do you mean by that? If a person is "exceptional", why do they need your help? What gap are you filling?
Finally doing this kind of thing is often difficult and time consuming. What is your motivation for starting? How will you measure your success? How will you sustain your motivation over time?
Now some advice: Like some others, I have started many projects. Some have lasted a weekend. Some have lasted for years. Quite a few projects (even ones that lasted for years) had very few participants other than me. This was OK for me because I enjoyed building stuff. None of my projects (so far) became super popular. That's pretty normal I think. Exceptional things are exceptional by definition. Making sure that you are OK just building stuff because you enjoy building it is a good way to make sure you don't get jaded.
Having said that, if your motivation is driven by having a following, learn something from the lean startup guys. Do the tiniest thing that could possibly work and just go. See if you get any interest at all. Fiddle with the parameters until you start to get some interest. Don't build a whole big website and gamble on the all-or-nothing. Build it and your following together over time and don't engage in too much risk.
I hope the questions I asked will help you narrow your scope and help you find the fastest way to deliver something and start testing the waters. Good luck!
By Unicorn I mean rockstar or be in the top percentage among peers instead of just being average.
It has been hard to find quality people who have the motivation, passion and drive to be able to have the determination to teach themselves.
What I meant be exceptional is someone that has tried and failed to teach themselves but is willing to give it another go. I should have used dedicated instead of exceptional.
I have already done the Front end curriculum this past year and weeded out all the bad videos and books to find the best material. It would take a part time student learning at night about 9 months for the bootcamp.
Thank you for your input.
EDIT: oh god, I just glimpsed a future where asshat recruiters on LinkedIn have co-opted the word "unicorn" and are starting to use it like "rockstar".
Thank you so much for your comment.
Just getting enough context to know what you don't know is often unattainable for those who have been in the field for years.
I have mixed feelings about bootcamp/codecamps, mostly because I think they are Web 2.0 University of Phoenix that preys on people that are in a disadvantaged state. My experience with people who have bootcamped is that they exist in an uncanny valley, some stimulus responses they react to, others result in a blank stare.
Wanting to learn how to code so the IT guy can no longer fsck with you, great! Make awesome macros in Python for Excel, cool. Learn SQL so you can reduce your own data, all the more power.
But to say that someone can learn "to code" in even three months is preposterous and potentially very damaging. Only use codecamps that take payment after you have been hired.
In my mind, rare and mythic creatures (and their human analogs) cannot be trained into existence. Sure you can take a group of people and show them how to do something, but the result would be closer to a squad of foot-soldiers than a herd of Unicorns.
In other places, they are often devs that also have deep domain knowledge. Like an elevator repair tech who also codes, esp useful for your elevator repair startup.
@OP: My suggestion would be to start with something you are really good with and start building a community from there. The "JavascriptIsSexy" blog/curriculum might be an example of an approach like that. What he does really good is combining existing tutorial/services (codecademy, books, etc), spot their weaknesses and offers guidance on how to overcome these towards a more rewarding learning experience. Another suggestion would be to take a look at the various (in-person) coding bootcamps and see what structure they are following.
People have to experience repetitive text editing before realizing why vim would be valuable. They need to copy and paste code and make file backups by hand to get a clue why git would help. They need to try to build a big JavaScript application to appreciate why all the frameworks exist.
Don't rob them of having to experience why all these projects were created and what problems they're trying to solve. Ignite the spark with some fun, playful basic stuff.
* Vim deserves a class of its own. My personal experience is that it takes months of using Vim before it starts paying off. Your students will struggle with and be distracted by Vim.
* Git is an invaluable, industry-standard tool for collaboration. Still, is it helpful for learning to code or is it also a distraction? Pastebin/Dropbox/etc. are sufficient for collaborative efforts when your students are writing no more than 100 lines of code a day.
* Angular/Backbone/Knockout are all opinionated and assuming. jQuery is also too much "magic" for someone who just learned what a variable is a few weeks prior. These are just getting in the way.
* Yeoman/Grunt/Bower are cool. But there is something much more intuitive about just manually linking in a .js file to learn about dependencies.
* Gulp/Coggle/Balsamiq are similarly unnecessary.
In general, I think you're trying to teach opinionated tools that will frustrate, distract, and mislead your students. There will be a lot of "wait, which one's Bower, again?"
I hope I haven't been discouraging and unnecessarily critical... my doubts would certainly need to be revised if these students indeed had prior experience. My idea of a schedule for starting web dev:
* Very short overview of how a web browser and a server communicate.
* HTML: creating interactive elements for humans with textual markup.
* Node.js/Sinatra/etc. (students might benefit from using Node.js here as to not be overwhelmed with languages later): code a simple server to respond to a POST.
* CSS: modifying the visual representation of HTML elements for a better user experience.
* JS: react to HTML element events.
* Expand your Node.js server to respond with JSON instead of HTML, and rig your JS to asynchronously communicate with the server.
* Throw in a simple JSON/SQLite database. Flat file databases are great. Make the tried and true to-do app.
* Teach deployment (real-world servers). Git should probably be fit in here!
* Bonus: a whole class on how to solve problems using Google.
If your students are intermediate/advanced, ignore me completely.
I thought maybe the agenda was kinda bloated too especially since this is just the Front End Development. If you add Back end development you would probably be looking at 2 years to complete. Luckily my bootcamp is free and you can take all the time you need and only move on to the next topic when you feel comfortable with the current topic.
Vim - Here is what I have for vim and surprisingly enough is just enough to be proficient in vim.
3. Learn vim a. Do vimtutor b. Read Learning the vi and Vim Editors, Seventh Edition c. Up and Running with vi d. Venture Into Vim e. OReilly - Mastering Vim f. Vim for Advanced Users g. Learning vim plugins
Git - I use two video tutorials that will make anyone an intermediate person within 2 weeks.
HTML - We do about 12 websites CSS - We learn almost everything about CSS. It does take about a month just to do the videos and books. Javascript - We learn it in depth with three of the top books and several videos. This is where most of the time is spent. We do not move on to JQuery until we are proficient in javascript so we do not use JQuery as a crutch.
Bonus - We have the students sign up for HN, Reddit, and StackOverflow to teach them how to troubleshoot problems.
Im running out of room here but thank you so much for your input.
I figured I'd throw it out there because for a beginner, all of these things would be wrapped into one application and it might be easier for a beginner to maintain; however, you'd need to call out that not all frameworks have everything that RoR has.
And I'm not saying RoR is a 'best practice' backend approach, because I'd never use it as a real backend service, but it might fit in nicely with your bootcamp!
Supposing is not very long I won't teach any framework, but I would let them discovered it.
After they manage the CSS I would make them build some simple page, and I will let them know that there are some CSS framework already done...
Similarly for the Js part, teach them how to inject html in a page first and finally let them know about framework...
Also I will cover react.js, not because is particularly cool or new or hot, but because is a completely different approach, actually closer to the CSS / front end way to code...
Also, I won't really teach them vim... Maybe sublime is a safer bet...
Edit: downvotes, so .. it's the only thing I've not personally used in his list, I've been using nix environments for over 20 years and never got beyond <esc>:q! (or whatever it is). It seems the author considers it an important tool for being an accomplished web-designer - enough to have it as a prereq - so I'm interested in the OP's reasoning.
I can use Vi / Vim enough to get basic stuff done on a server, but I'll stick with eclipse for doing my main development. Having a reasonably intuitive interface means I can concentrate more on the code and less on trying to remember strange key combinations.
You can't seriously expected anyone to learn 10 disciplines in one go.