Can't agree more with this advice. Everybody's talking about MOOCs, CodeAcademy etc and while I used those platforms for sure, looking back it was the experience that really helped me. The hours and hours of not knowing why your code is not compiling and learning the hard way is invaluable - but schools and classes can't emulate that well enough.
I took my first software classes 2 years ago at the University and HATED every second of it! That summer I landed a co-op where I spent 6 months (I was invited back to mentor) learning Ruby on Rails and related technology. During that time, I tried to throw up as many apps as I could for practice. Thos included Rails apps, Cordova apps, JS apps etc...Those 'practice apps' landed me my first starter position making the industry standard for a rails dev with 2 years or so of experience. I am learning WAY more now then I ever thought I could and have built a hell of a resume over the past year with real world experience. Online tools got my foot in the door. A year and a half later, I am making an honest living and developing features that I thought would take me years to master. I started with a single GOOGLE search...For me, it was a mix. The experience of the co-op was the driver to what I have today though.
It seems a lot of people misinterpret "don't reinvent the wheel" as "if they exist, use lots of pre-written libraries". End result is I see projects with ridiculous numbers of dependencies.
Reinventing the wheel is very useful as a learning experience and to take a peek at how things work behind the scenes. Often you may only need a portion of what a certain library does, and it is perfectly feasible and correct to implement it yourself.
Especially horrible is the message encouraging use of Bootstrap to style web pages. The last thing web design needs is more generic and blatantly obvious Bootstrap layouts. It can be a useful tool, but most people use it wrong and it very often leaves a bad taste.
Rather, the idiom one should follow is "Don't reinvent the wheel, but feel free to refine or re-implement it, as long as you don't end up reinventing the flat tire."
So are you saying that novice developers (i dont think the author would even call himself that) should not use bootstrap and instead waste extra time learning how to structure their pages? Its not hard to insert a 'pre-written' bootstrap css stylesheet and completely change how a bootstrap page looks while still taking advantage of the grid system etc.
I have to say, as a "business guy" cofounder who is finally pushing out his first apps, that starting with Codecademy is probably the worst way to go about things. I don't know how many times I started different Codecademy courses and ended up saying, "OK, I can create a loop... now what?" That is decidedly not the first step in learning how to program.
The first step is learning how to use the command line, getting a text editor, linking those two, and figuring out how to push something live. You can code loops all day long, but until you have any practical implementation of that (i.e. building even the simplest of apps and pushing it live), coding will feel abstract and unreachable.
If I were to start over (I'm learning Ruby/Rails) I would start with a tutorial (Michael Hartl's rails tutorial, Treehouse or One Month Rails), but really I would use them all at the same time, because their emphases are different and each picks up on parts that the other leaves out. Only once I had "finished" a couple of apps following the tutorials (which cover everything from getting a text editor to using github, pushing to Heroku and connecting Heroku with a DNS) would I go back to Codecademy and learn Ruby. The context of knowing what you can actually do with those snippets of code is incredibly important.
And yes, as others have pointed out, building a simple rails app and putting bootstrap on it is not the goal of programming, but knocking that process is like saying "You shouldn't learn to count on your fingers because really you need to multiply."
Agree with this wholeheartedly. I started learning C++ back in 1997 with "Learn C++ in 21 days" and other books. I quickly got burned out with building simple print out programs and over the past 16 years have started different languages in fits and starts.
There are so few one language projects that are worth using, that the single language approach seems really outdated.
To me a much better approach would be to have learning structured around a specific project type. In general projects fall into only a handful of categories so I don't think it would be terribly hard to structure. For example "Web commerce" (Javascript, CSS, HTML5, mySQL), "Machine learning" (Python, Java) etc... You wouldn't learn all the details of a language up front but you would get to your goal more quickly and have a framework/template for future projects.
> "Get help setting up your development and production environments. In English, this means set up where you write your code and where you see the results of it. Setting this up is the biggest pain for us non-technical people. In fact, I think that it is the single most difficult thing in learning to code."
As a lifelong hacker, this is something its easy to lose sight of until you try to help someone else get started.
Last time I needed to help a newbie get running, we tried https://www.nitrous.io/ and it was helpful. It defers dealing with all the environment / sysadmin stuff until later, so the learner can get positive feedback sooner.
It seems like the development environment is the hardest part for beginners. Seems like a niche that all the cloud development environments could go after?
reply