GOPHERSPACE.DE - P H O X Y
gophering on hngopher.com
HN Gopher Feed (2017-07-23) - page 1 of 10
 
___________________________________________________________________
The Odin Project - Learn Web Development for Free
65 points by gkop
https://www.theodinproject.com
___________________________________________________________________
 
unclebucknasty - 5 hours ago
Wait. Somebody figured out how to do Web development?
 
  tempodox - 3 hours ago
  Not really.
 
gkop - 5 hours ago
The Show HN from over 3 years ago:
https://news.ycombinator.com/item?id=7466487Anecdote: I hired an
Odin Project "graduate" in early 2015, somebody who had gotten a CS
degree 10 years earlier but never done anything with it. The Odin
Project had prepared him to hit the ground running on modern web
software development, and also prepared him for evaluation for our
job, with an impressive capstone project. He was a successful hire
without a doubt.
 
vosper - 5 hours ago
I question starting people on Ruby for web development. It was big
and popular, but I feel that the popularity is fading (has faded?)
for new projects, and there's a lot of magic in that language,
too.Anyone starting web development now would do well to stick with
Javascript. No, it's not the nicest language, but there's no
avoided it. And you can always use that on the backend if you have
to - and if you need to spend time learning something for the
backend part you'd be better served learning about relational
databases than Ruby.Anyway, between JS, HTML, and CSS, you're going
to have a lot to learn. At least with CSS these days you can pretty
much start with flexbox for layout, and maybe if you're lucky
you'll never have to learn all the old horrible methods of getting
things to look reasonable - or you'll have a solid foundation when
you do encounter them.
 
  RangerScience - 2 hours ago
  Based on what I've seen "in the wild", my current recommendation
  is to first learn the basics in Ruby (a week or two - from basic
  arithmetic through objects), and then jump to Javascript.This is
  primarily because most of the "learn X" that I've seen  for
  Javascript is pretty web-centric, while the "learn Ruby" things
  that I've seen are much more general CS. So the idea is to first
  get a basic grounding in general programming, and then jump into
  the thing you'll use a lot for your particular
  application.Example: Learning about scope in JS versus basically
  anything else.Also, Rails really does encode basically all the
  best-practices - so when you literally don't know any better, you
  can still succeed. And then when you move away from Rails, you
  have a known-good way to start anything.
 
  nickstefan12 - 4 hours ago
  This assumes you want anything to do with the front end :).Maybe
  a better tact at why JavaScript first: people are far more likely
  to hire junior front end people than junior backend.
 
    edoceo - 3 hours ago
    This is how I hire
 
  gkop - 4 hours ago
  When hiring junior developers, I look for experience in at least
  two general purpose languages, because I think comparing and
  contrasting at least two languages gives you a valuable and
  necessary perspective. In web software engineering,
  Ruby+JavaScript (or Python+JavaScript or Go+JavaScript, etc) is a
  convenient and powerful way to check this box, but "full-stack
  JavaScript" falls short.
 
    slaymaker1907 - 4 hours ago
    I think Java would be a better second language than Ruby. It is
    radically different from JS despite the name and is incredibly
    useful to know due to its wide usage. It also serves as one or
    the lingua francas of the CS community (alongside C of
    course).Not that I think Java is a pleasant language. It is
    quite a monstrosity in terms of syntax and verbosity, but that
    doesn't mean it isn't useful to know.
 
      rhizome - 4 hours ago
      As a data point, I started actual-programming in Perl 15
      years ago, started on Rails about 10 years ago, and am now
      taking Java classes to get some interview-question
      fundamentals under my belt, since Rails is historically a
      recovery path for Java programmers. I don't know how it works
      the other way around, but for me Java has been pretty easy
      after writing Ruby for some years.
 
  aaronchall - 3 hours ago
  > I question starting people on Ruby for web
  development.This.What's a synergistic language? Javascript (i.e.
  it's required learning for the browser, and you get the backend
  with Node - and you point this out.) Javascript has advantage
  from browser monopolization.What's a great and increasingly
  popular language for the backend? Python.  And Python is so nice
  that we don't need a slogan about how "Guido is nice so we are
  nice" (with apologies to Matz and the dwindling Ruby
  community).Write your software so simple that there are obviously
  no deficiencies, not so complex that there are no obvious ones
  (Hoare, 1980). Ruby is way more complex than Python because
  there's a bajillion different ways to do it.To me the only point
  of learning Ruby is if you're already in a job that maintains a
  Rails app.The battle for the supreme interpreted language isn't
  over, but, like Perl, it's my humble opinion that you can count
  Ruby out.
 
    RangerScience - 2 hours ago
    > we don't need a slogan about how "Guido is nice so we are
    nice"  > there's a bajillion different ways to do itI would
    definitely say that these are serious strengths of Ruby, not
    weaknesses. Here's why:Ruby is foremost concerned with the
    experience of the person using the tool. To use an analogy,
    many of us spend a lot of time finding keyboards and layouts
    that harm us less, or do not actively harm us. You would avoid
    using a hammer if the grip was painful to hold.Ruby may appear
    to have a bajillion ways to do something, but actually, it's
    just many different ways to communicate the same few things to
    other people. Since you are free (and able) to use any of many
    ways, you can choose the one that is actually the most
    communicative, not the one that should be the most
    communicative. But, as you begin to peel back that facade and
    understand what's underneath (that everything is a thing that
    is a combination object, reference, and function), you see that
    it's actually pretty simple.The result of this is that in Ruby,
    you can - and can benefit from - deeply considering the
    structure of the thoughts that code describes. Particularly in
    Rails, you can consider the idea of the thing you are dealing
    with, and then you write down the description of that thing;
    Ruby magic then makes that description code.That is,
    ultimately, why I think Ruby is a "synergistic" language, and
    an excellent one with which to start: it [can] teach you to
    think in a way that's independent of any given language - about
    what is occurring for the computer, and more importantly, what
    is occurring for the programmer. You can then take that
    learning and apply it everywhere else.Mostly, I just know how
    bloody frustrating it is to work with (most) libraries and APIs
    that aren't from (or inspired by) Ruby-land, and how
    (generally) easy and convenient it is to work with things from
    (or inspired by) Ruby (and Rails).
 
  bdcravens - 3 hours ago
  Probably the same reason there's so much jQuery in the front-end
  curriculum. Five years from now it may not be true, but there's
  still a ton of jobs in Ruby and jQuery. (more so than in some of
  the "cool" stacks)
 
  jaequery - 2 hours ago
  im not so sure if js is the right choice for beginning
  developers. i actually would not encourage beginning developers
  to jump into javascript. well, im assuming we are talking full
  stack here and not just client side, as the state of js is in
  flux and the js fatigue is real. and i cant imagine letting
  beginning developers to go through that even when experienced
  devs are having trouble dealing with it.basically nodejs is not
  just getting into express anymore. although optional, most likely
  you will soon have to get into things like react, flux,
  transpiling, and understanding immutable and fuctional
  programming, which are all IMO a bit too much for developers to
  jump in to. also, js is currently changing at a rapid pace, what
  they learned a year ago is most likely  obsolete in todays
  standards, ie: es5/6/7/next. i have not seen a language change so
  many times in such a short  period of time, i cant imagine how
  beginning developers can deal with it.i actually had a chat with
  recently grad bootcampers who went through a 3months courses of
  rails and then nodejs/react from General Assembly in LA. their
  responses to rails was easy to learn and they picked it up right
  away. but once they got to react/nodejs their experiences were
  something closer to horror.id say js indeed was a good choice for
  beginners 3 - 4 years ago but now there are so many baggages
  involved such as dealing with setting it up through webpack and
  its many ways to transpile such as esnext/jade/stylus/etc.so
  unless you have a few years of programming experience, i would
  not recommend devs to go through js at this time.basically i can
  teach someone rails on how to build real world applications in a
  few weeks. but with js, id still be explaining the internals like
  what is a promise, async vs synchronous function, etc. and this
  even before diving into the  world of redux, map reducers,
  webpack, immutablejs, higher order functions, and ... the list
  goes on.anyway you take it, its a long road ahead with js, much
  longer than most people will tell you.
 
  ryanSrich - 1 hours ago
  I tend to agree. Ruby isn't super applicable in 2017 either. Most
  tech companies have moved to a microservices architecture and
  while they may have some legacy Ruby hanging around, it's
  unlikely they're building anything new with it.Someone learning
  web development now has a long road ahead of them. They'll need
  to learn everything. Not just some backend language, but all the
  front-end frameworks, functional programming, Sass, build tools,
  typescript, etc. The list is endless.
 
  Immortalin - 4 hours ago
  Problem is, none of the frameworks allows you to get up and
  running as quickly as Rails. Even Django doesn't come close in
  matching the sheer amount of magic in the Rails. There are gems
  available for everything under the sun; it's fun and all to play
  around with new frameworks but having to reinvent the wheel gets
  tiresome really quickly. Debugging can be a bit tricky and it's
  not the most performant framework out there but the overall
  productivity still outweighs everything else on the long term.
  Nothing else (except perhaps MS Access and their RAD tools) comes
  close to the speed at which one can get a CRUD app up and running
  and CRUD apps are pretty much 80% of all web apps.
 
    icelancer - 1 hours ago
    >none of the frameworks allows you to get up and running as
    quickly as RailsNearly every single PHP framework is faster and
    more intuitive to deploy than Ruby on Rails.
 
      trcollinson - 58 minutes ago
      I find that rather hard to swallow. If you are trying to
      deploy PHP frameworks on your own there are a number of hoops
      you need to jump through on the server side to get things
      going. If you are using a deployment service, it's hard to
      beat things like Heroku and AWS ElasticBeanstalk for
      deploying Rails application.I am definitely a fan of Ruby and
      Rails. So I am biased. But I have deployed my fair share of
      PHP and find it hard to imagine how it is easier.
 
    vosper - 2 hours ago
    But I think if you really are just starting out learning
    programming then it's still a lot of effort to get a Rails
    system up and running (you need a database, too, which is
    another new thing) compared to the bare minimum, which is to
    use something like Meteor, Firebase, or even (gasp!) Mongo.I'm
    not saying that Rails has no place, and it might well be the
    best next step, but I wouldn't put it (or Django, maybe
    Express) in a course for absolute beginners. Perhaps in the
    follow-up course :)
 
    shagie - 3 hours ago
    Magic is wonderful when it works right, and painful when it
    goes wrong.  I will absolutely agree that the magic built
    around speedy crud apps that handle 80% of what a web developer
    does making it only take a small fraction of time is a
    wonderful thing for productivity.The problem with the magic for
    the 80%, is that the remaining 20% takes up the remaining 80%
    of the time.  With the first 80% of the delivery in 20% of the
    time, the final 20% taking 4x longer because of the lack of
    understanding of the magic gives no advantage in the end.Thats
    if everything goes well.  If the 80/20 rule fails, you get the
    ninety-ninety rule ( https://en.wikipedia.org/wiki/Ninety-
    ninety_rule ).RoR lets one build crud without understanding
    what goes on beneath the ActiveRecord.  RoR is great when there
    is low complexity of the code and it is easy to follow the data
    through the pipes.  Once it goes beyond that, adding complexity
    to that with the spooky action, highly declarative style that
    RoR encourages it can be painfully difficult to do - and
    something that far beyond what the 'write crud in 30
    mintes/hours/days' classes offer.Beyond that, with the failure
    to understand the before and beneath, one gets the impossible
    to debug bugs and security holes that lie within libraries that
    have been imported (
    https://williamedwardscoder.tumblr.com/post/43394068341/ruby...
    ).
 
      RangerScience - 2 hours ago
      > RoR is great when there is low complexity of the codeI
      disagree. RoR is great when there's moderate complexity.
      Microframeworks (Sinatra) are better for low complexity, and
      everything with high complexity is a unique and special
      snowflake.> Magic is wonderful when it works right, and
      painful when it goes wrong...and really educational when you
      start digging into it, and then you generally realize it only
      went wrong because you were trying to do something stupid.>
      the remaining 20% takes up the remaining 80% of the timeSure,
      but that's because the first 80% took a fraction of the time,
      not because that last 20% takes a multiple.Do you have a
      particular example?> spooky action, highly declarative style
      that RoR encouragesThis is a bit of a "cognitive style"
      difference. In most of RoR - particularly your models - you
      want to be describing the idea of the thing. Since most
      people start programming by writing procedures, this is a bit
      of a leap. RoR Models are not about how a thing gets done,
      but about what that thing is. When you think from this
      perspective, RoR models are easy and nice.> Beyond that, with
      the failure to understand the before and beneath...Straight
      up, I want you to explain the complete before and beneath of
      your favorite tech stack or this is problematically
      hypocritical. I would then also want you to explain why it's
      reasonable to expect this of all programmers, rather than
      just senior programmers.
 
    wolco - 2 hours ago
    Getting php with the laravel framework running is much easier
    and quicker
 
    computerex - 3 hours ago
    The nodejs ecosystem with npm allows you to create CRUD apps
    very quickly. Look into express.js.Also, my experience with the
    nodejs ecosystem has in general been better than with Ruby
    Gems. I have always hated Ruby magic and the problems it causes
    in gem incompatibilities.
 
olegious - 2 hours ago
Is there a Python version of this?
 
  hackermailman - 27 minutes ago
  w/Django yes https://www.springboard.com/learning-paths/web-
  development-p...There's also this Java/Typescript curriculum
  https://www.edx.org/micromasters/software-development
 
bdcravens - 3 hours ago
Interesting that the graphic for "Build Your Own Tools" is the
XCode icon, even though this is a web development course, not a
mobile one.
 
rolae - 1 hours ago
I am currently learning with the odin project. I see most of the
discussion so far focused on whether ruby is right language. I
think the project is very valuable not for its choice of language
but for its overall excellent content and approach. A few examples-
When doing my first lessons on ruby you are asked to read several
tutorials. I thought, well I already learned that, but in every
article I managed to find something new.- It uses a multitude of
other learning sources, does not even try to cover too much
themselves. So you get to learn in very different ways. Reading
good articles, watching some talks, downloading a repo where you
need to write the code to make the test run successfully. Overall I
feel, I get the best content, not because they write the best
content (who could do that for all the subjects?), but it points
you to great content.- Contrary to many online tools, it forces you
to work on your own system, which is a good thing.- It often forces
you to define the problem you are solving yourself. Many online
courses make it too easy, you just learn coding. You don't learn to
structure the problem.- It also tries to give you a solid
programming knowledge before going into web development. I really
appreciate that. It's so easy to learn some angular or vue.js, then
you... just need to fetch some data, ah how do I store data, oh and
authentication and authorization, oh and... and quickly you get
lost. I think it's is very beneficial to first get some solid
programming knowledge before diving into the whole server / db /
frontend stack.So I can highly recommend this approach. BTW: even
the creators are thinking of driving the course more towards JS
(https://github.com/TheOdinProject/curriculum/issues/5633)edit:
formatting
 
srikz - 4 hours ago
Thanks for making this.  Quick feedback: The 'Points to Ponder'
section in the 'Javascript Basics' course should probably be put in
a Bootstrap Well. On browsers/OSs where the scroll bar isn't shown
unless you scroll, it can easily be missed. I feel if it has to be
a scroller within a scroller, it should be visibly distinguished.
Good luck!
 
scyclow - 4 hours ago
The fact that their website looks like garbage on mobile doesn't
really inspire a lot of confidence in me.
 
  gkop - 4 hours ago
  Perhaps they make up for this with a hilarious Contact Us page?
  https://www.theodinproject.com/contact
 
    qmarchi - 3 hours ago
    I spy with my little eye, way too much italicize.
 
    sjroot - 3 hours ago
    Not really.
 
snowcrshd - 1 hours ago
Is this still active? I had the impression they (the project's
creators) had left this in favor of Viking Code School
[1].Apparently Viking Code School has both Ruby and JS separate
tracks (I may be misremembering, though)[1]
https://www.vikingcodeschool.com
 
  weston - 56 minutes ago
  Odin, iirc, is for people who are more self-guided. Viking seems
  to be for those who need more help (mentors, tutors, etc.)