While not required, I recommend the following pre-reqs:
* Buy a Mac or install Ubuntu on your dev machine
* Read “The Pragmatic Programmer”:http://pragprog.com/the-pragmatic-programmer
* Learn Vim or Emacs
* Learn Git & make a “GitHub”:http://github.com account
* Use Firefox with the Firebug extension or Google Chrome for development
Understand this protocol or prepare yourself for perpetual confusion. Read “the RFC,”:http://www.w3.org/Protocols/rfc2616/rfc2616.html or at least the following sections:
* “HTTP Message”:http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4
* “Status Codes”:http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10
Read “The Pickaxe”:http://pragprog.com/book/ruby3/programming-ruby-1-9 if you don’t know Ruby or could use a refresher.
Read “Agile Web Development with Rails 4th Edition”:http://pragprog.com/book/rails4/agile-web-development-with-rails
“Rails Guides”:http://guides.rubyonrails.org/getting_started.html is an excellent free companion resource to “the official Rails api docs”:http://api.rubyonrails.org/
Do “this Twitter clone Rails tutorial”:http://ruby.railstutorial.org/ruby-on-rails-tutorial-book
Read “CSS Mastery 2nd Edition”:http://www.amazon.com/CSS-Mastery-Advanced-Standards-Solutions/dp/1430223979
* Read chapters 1, 2, and 3 for the basics on CSS selectors, specificity, the box model, and positioning.
* Read the rest if you want even the slimmest chance of helping your app not look like it has drunken clown makeup smeared all over it.
If you finish that book and your app still looks like someone sat on a bunch of ketchup and mustard packets, read “The Principles of Beautiful Web Design 2nd Edition.”:http://www.sitepoint.com/books/design2/
Do the following jQuery tutorials:
* “How jQuery Works”:http://docs.jquery.com/Tutorials:How_jQuery_Works
* “Getting Started with jQuery”:http://docs.jquery.com/Tutorials:Getting_Started_with_jQuery
Read the “jQuery Types Documentation”:http://docs.jquery.com/Types and the “jQuery API Docs”:http://api.jquery.com/ – all of it.
Now would also be a good time to learn “Coffeescript”:http://coffeescript.org/
h3. Extra Credit (which is also required)
* “Old yet good REST article”:http://www.infoq.com/articles/rest-introduction
* “REST stands for Representational State Transfer”:http://en.wikipedia.org/wiki/Representational_state_transfer
* “Underscore.js (required by backbone, and useful in it’s own right)”:http://documentcloud.github.com/underscore/
* “MongoDB”:http://www.mongodb.org/ is easiest to transition to from ActiveRecord if you use use “Mongoid”:https://github.com/mongoid or “MongoMapper”:http://mongomapper.com/
* “Dive into HTML5”:http://diveinto.html5doctor.com/
h3. Extra Extra Credit
Do it again using “Ember.js”:http://emberjs.com/ instead of Backbone.js.
h3. More Resources
* Install “Bundler”:http://gembundler.com/ and use a Gemfile to manage your dependencies for each project.
* “Know what works in which browser.”:http://www.quirksmode.org/compatibility.html
* “What gem or plugin should I use for X?”:https://www.ruby-toolbox.com/
* Deploy your demo apps to “Heroku.”:http://www.heroku.com/
* Use “Capistrano”:https://github.com/capistrano/capistrano/wiki to deploy elsewhere.
* Try “HAML”:http://haml.info/ & “SASS”:http://sass-lang.com/
h3. Independent Study
If you’re bored with everything being a RESTful resource represented in your database, Rails model, Rails controller, Backbone.js model, and view, (or just not sure what to do next) then try a different approach altogether.
Rewrite your sample app using “FAYE”:http://faye.jcoglan.com/ and “Node.js”:http://nodejs.org/ to build your app on a publish-subscribe model of communication between your client and server.
If I missed anything important, please let me know.
I started making sites 13 years ago… I wonder what this would’ve looked like back then.
Regardless, I can verify this as a good list if you’re doing Ruby/Rails development in particular. I feel like Rails is a really good thing to use once you’ve learned another language, though. For one, you skip over learning about actual SQL and use the Rails paradigm instead. Plus, all the lol-magic commands are nice, but you kind of skip over the detail with some of them. By no means a criticism of the language, but I wouldn’t recommend it to a pure beginner. Plus, if you use something else you can potentially nix the “Buy a mac” requirement without a lot of headache.
I guess I’m oldschool in the fact that I like being able to buy some cheap hosting for 4 bucks a month and not have to worry about environment hell deploying to it when I just want to write up some small pages and experiment.
@David I also dove into web development before Rails existed or Ruby was popular. My first web dev environment was Java / JSP with a custom Java Servlet. That was followed by PHP and Perl CGI scripts with text file, MySQL 3.x, and curl -> another webapp backends. Those experiences made Rails a cakewalk to learn when I was eventually introduced.
I choose Rails as a first tool because I feel it has the best marketability for the kind of work I like to do – custom greenfield web application development.
I think a Mac is a shortcut to a useable OS with a nice command line interface. Before my first Mac I went through 3 PC laptops with Gentoo installed from stage1 tarballs. Eventually I decided to trade money for the time of custom linux installation management by buying a mac. It was a personal decision, but one I feel worked very well for me and wanted to share with people who might not have considered it. It’s definitely not something I would have considered while in college ;)
Also, if you’re looking for cheap Rails, Node.js, or Clojure hosting, I highly recommend heroku. For Rails in particular, it provides a very smooth deployment process which requires very little setup on the part of the developer.
Yeah, I come from a different background. I taught myself HTML when I was 12 and made fan sites for TV shows, funnily enough. I used PHP first (and still do) since it was easy to learn and really flexible. I’ve been a PC gamer through the years so I always have had a Windows box. I love it being a consumer/gamer, but it leaves a lot to be desired being a developer.
Having only just made a Rails app recently I can say that developing with that platform on Windows is painful. I went through most of the Agile Web Dev w/ Rails book on Windows before hitting the wall at deployment and RVM. Plus, rakes are slooooow. Which is fine I suppose, I do have a Mac :P
Yeah, I’ve heard of heroku. I mostly just remember the days when having a shared host with FTP, a control panel and being able to upload your site without deployment scripts was the norm :) I feel like that approach is easier for a beginner to website making (possibly). It would likely take longer starting there to get to the point of being a “real” web developer, of course!
It does my heart good to see you have a gentoo background. :) Also to see that you ended the article in French. :)
I also try to include http://compass-style.org/ in all my sites now. It provides all kinds of “mix ins” for CSS dev and can fully integrate with Blueprint CSS or Susy grids, and SASS. Makes it so I don’t have to worry about browser compatibility for all kinds of new CSS (CSS3 or unsupported CSS—you know which browsers. :) ).
Same here, styling without compass/sass is just blergh with all the custom CSS3 you need to do a shadow or gradient.
I would add:
– Register on StackExchange and ask & answer questions there to learn from others and learn by teaching.
– Purchase http://pragprog.com/book/actb/technical-blogging and make your own work notes blog using tools like Markdown, Jekyll, WordPress, Tumblr, etc.
I’d wager I had one of the stranger web beginnings. Back in 1996/7 I got to write an intranet for Charles Schwab & Co. and on it, using a Dialogic telephony card, and Visual Basic, published morning calls through Real Audio ra/ram files.
I used Visual Basic for years as my primary web development language. ASP was a great environment to write quickly and vastly. I do miss those days. By 1999 IE 5.0 and XMLAPI were magical, writing browser interactivity that years later would became AJAX. ASPX and C# now take up my web time. I’ve never even tried Ruby or Rails yet have programmed the web for 16 years. So, I’d have to say that you might want to cure the lack of a Microsoft option for server side execution. It’s still pretty prevalent in the world.
A lot of these choices/frameworks are arbitrary.
Idunno, sounds to me like you want ppl to learn everything they need for reinventing the wheel.
IMO, it’s much simpler than that. First, learn to program properly – design patterns, refactoring, algorithms and data structures. Read Steve McConnell’s Code Complete, and Steve Maguire’s Writing Solid Code.
Then go on and choose a few technologies which allow you to develop and deploy applications easily on many platforms. Chances are these won’t be mainstream, established technologies, like RoR. For one, if something is already well established, it means it has some history, which means somebody already had the time to come up with something better. RoR may provide a nicer server-side environment + language, but it it is hosted by way less providers than PHP. PHP is also cheaper to host. And not just RoR but any framework providing a full server-side stack for web apps is not nice anymore, now that AJAX allows you to move much of the logic to the browser.
I have the following utilities in my web development tool box (under windows), just to take the bite out of debugging your code:
– Fiddler 2, an HTTP debugger, that allows you to see really what is going between your browser and your website, very useful for debugging file uploads and webservices… and also what is going on if you have any flash objects that are talking to a remote server. Firebug does have some of fiddler’s capability (network tab), but Fiddler can do it better, and is browser independant… Great for that upload bug you can never reproduce under Firefox!
– An extra extension of this would then be Wireshark, which is a network debugger, as then you can see everything your machine is sending and recieving, not just over HTTP…
– StrikeIron Web Services Analyzer is a great tool for understanding what a SOAP webservice looks like without going mad trying to make sense of a WSDL… Paste the WSDL link and presto, there is the values and structure of the service… (I am prone to a fatal allergic reaction when trying to understand a raw WSDL on my own!)
Rhis nice information,,,
ok i correct the error,,
This sounds good if you want to dive into Ruby. But my current gig, and all previous gigs, no one uses Ruby for anything. Funny enough this topic came up at work, and no one I work with used Ruby at any past job. So I asked around to some friends and none of them have either. (I asked web developers.)
Obviously Ruby is good at many things and highly regarded but in terms of what you would actually use on a job… well that will depend.
I build my first website (for my wife’s business) in 1996 using CGI,Perl and HTML. Since then I’ve used PHP, Java, and C# in that order. I’ve played with Python a bit, but not investigated Ruby yet. My main reasons for using PHP are cheap hosting and familiarity. Most of my work in the last 7 years has used one form of MVC or another, so Rails would probably be familiar.
I might give it a try some day when I have the time.
This an arbitrary transitional vocabulary.
Modernity is tansitional by definition, and the products in the list are partial by their transitional nature: dedicated only to web development, a type of application, etc.
I prefer to wait for the good features to be incorporated in integrated development environments as Java or Microsoft.NET.
For example, in a combination of C# and F#, I can adress the best of OO and functional, a lot of platforms and yet share a lot of code: Web, Desktop, Phones, a lot of OS: Windows, Mac and Unix (Mono), etc., and many of these “modern” features are now incorporated.
This reminds me that for a few years Cold Fusion was modern and was on everyone’s lips. And Cold Fusion in fact has some new good features for WEB applications, but in addition to maintain old projects, I think that very few organizations are starting new projects in Cold Fusion.
it’s a cool list however this list doesn’t focus on the architecture of web apps using python
Overall pragmatic (except for “Learn Vim or Emacs” of course … which is silly given the productivity gains other tools offer).
Good post. This is very useful. Thanks for sharing.
Comments are closed.