
Ask HN: How to train my students to be Unicorns - freedevbootcamp
I have a free dev bootcamp for exceptional people who have a dream of becoming a software developer. I only have the front end curriculum ready but wanted to get some input on what I might add for front end or back end. I don&#x27;t have most of the books listed but the learning is a combination of the best books with the best online videos.<p>Thank you so much for you input. I really appreciate it.<p>1. Setup Workstation<p>2. Learn Linux or OSX at the command line<p>3. Learn vim<p>4. Learn Git<p>5. HTML<p>6. CSS<p>CSS Frameworks <i></i><p>L. Bootstrap Framework
	M. Foundation Framework<p>7. Javascript<p>Javascript Frameworks <i></i>
	A. Angular.js
	B. Backbone.js
	C. Knockout.js<p>8. JQuery<p>9. Pro Developer Tools
	a. Yeoman
	b. Grunt
	c. Gulp
	d. Bower
	e. Coggle
	f. Balsamiq<p>BACK END<p>10. Node.js<p>11. Databases and Caching Technologies<p>12. Webserver, reverse proxies and load balancers
======
mikekchar
Several people have written nice supporting responses with good suggestions.
One person (that I have seen so far) has written a testing question. I don't
want to discourage you, but sometimes with ventures like this, I think testing
questions can be more valuable than the good answers to your original
question.

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!

~~~
freedevbootcamp
Thank you for taking the time to comment. My motivation behind this is to
teach people who have a goal or dream to be a software developer that can't go
to school for whatever reason and can't afford a bootcamp.

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.

------
moron4hire
"Unicorn" is a term usually used by experienced developers who think specific
job listings are asking for unreasonably broad skill sets. i.e. "I've been
doing this job for 15 years and even _I_ can't fill this Jr. Dev role."

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".

~~~
balquhidder
I can only look forward to the time when all recruiters are looking for "Full-
stack ninja unicorns" to crush code.

~~~
moron4hire
It will at least make for a useful Gmail filter to auto-send to the trash.

------
erikb
Don't overload them. Present an easy to get started IDE and prepare some code
that already generates a hello world in a GUI/browser. Then teach them a
little fancy stuff like color changing, making a ball jump by pressing space,
etc. If you hit a newcomer with vim and expect him to do something without
giving him 2 years, then he will just think that programming is not for him.

~~~
freedevbootcamp
I picked vim because of all the plugin support and its long history. A person
is going to have to learn an editor anyway so might as well learn the best.
The learning methods I use for vim are just one book and several videos. I do
not expect anyone to move on to the next learning topic until they feel
comfortable and positive about learning vim. So if it takes a few months to
learn vim they will retain the knowledge before they move on.

Thank you so much for your comment.

~~~
erikb
Look, I'm a huge fan of vim and use it 99.999999% of the time. But think about
the first time you tried to quit from vim or to enter something, or to
navigate while in command mode. That takes a huge effort. If you want to make
your course about vim, that's also fine. A human brain can only take a certain
amount of pain, though.

------
dangrossman
This list is more than a 4-year CS program would hope to teach a dedicated
student. It's not realistic to expect someone to go from learning how
variables work to load balancing a server they wrote from scratch, in vim on a
shell, in a bootcamp.

~~~
sitkack
Totally.

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.

------
s_kilk
What exactly do you mean by the term "Unicorns"?

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.

~~~
sitkack
In The Valley, Unicorns are devs that also have some graphic design skills.

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.

------
purerandomness
You're setting yourself and the students up for a really bad experience.

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.

~~~
qzcx
Anyone who has ever lost or accidentally saved over a file should appreciate
git. They might not appreciate the complexity of git, but they can see the
purpose.

------
gtirloni
You can find a lot by researching what other web frontend / basic backend dev
bootcamps offer:
[https://www.google.com.br/search?q=programming+bootcamps](https://www.google.com.br/search?q=programming+bootcamps)

------
Achshar
IDK, maybe pull down a little on the frameworks and add another "traditional"
back end language like python maybe? Or dare I say php since it's easier to
pick up. Because all those frameworks look a lot of work for a bootcamp IMO.
People can't go from learning command line and html to handling servers and
complex frameworks in the course of a single camp.

------
Hytosys
Hmm, are you advertising that this is a series on web development? Do these
students have prior development education? I fear that you're agenda is
bloated.

* 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.

~~~
freedevbootcamp
Thank you for taking the time to comment. You gave me some really good ideas.

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.

------
djmill
Maybe for a small backend project, you could use Ruby on Rails? RoR gives you
easy JSON API capabilities, an app server, and an out-of-the-box sqlite3 db.

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!

------
siscia
How long is the boot camp ?

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...

------
pbhjpbhj
Why Vim?

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.

~~~
collyw
I am of the same opinion.

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.

------
meira
You're not going to train an unicorn teaching technical stuff. This can be
learnt easier and better using the internet.

------
atmosx
Looking at that curriculum if my newphew wanted to learn programming, I sure
as hell wouldn't send him to your bootcamp.

You can't seriously expected anyone to learn 10 disciplines in one go.

------
Warewolf-ESB
Encourage them to participate in open source projects! They will learn from
some pretty awesome developers, and also contribute to the greater good :)

------
radleymith
This is a lot of work. How long is the bootcamp?

~~~
freedevbootcamp
The bootcamp really does not have a time because it is free, and what they are
really getting is a mentor who can help them and guide them to all the best
resources. I put together the curriculum after searching for the best books
and videos and it took me 9 months.

------
mauvm
It would be awesome if you would include ReactJS for the people who lean
towards app development.

------
nphyte
How to get in touch with you?

