Good code always starts with the editor that works best for you:
Git is a coder's best friend. On second thought, it's more like your best friend who is also your DD, makes sure that you don't lose your wallet, and tells you everything that happened the night before.
Click here to check out GitHub.
There are infinite tools needed -- here's a way to knock out a few:
Test Driven Development
The theory behind test driven development (a subset of behavior driven development [BDD]) is that if you plan and write comprehensive tests for your application, watch them fail, write code that satisfies the tests, and then refactor the written code, then you will be more productive, your app will be tested, and you will be a happy developer.
Being able to write accurate, coherent stories for whatever you're working on is a must, if not for the next person who sees your code, then simply for yourself. Cucumber--being a form of integration testing--refines this practice and tests your code from a UI perspective.
Click here for a great Cucumber slideshare presentation.
First off, this, coupled with the Selenium webdriver, is great way to get the feel of coding if you're not familiar with it. It is mostly used for integration testing (making sure all your separate modules work together), though running a standalone version of Capybara which does not depend upon a framework like Ruby on Rails is a great way to get associated with these 3 things:
If you're feeling a little crazy, Capybara does not have to be limited to testing your application:
For example (don't try this at home):
Click here for the GitHub repo.
RSpec is a fantastic tool that should be a significant part of any Rails developer's testing know-how. Since I cannot do it justice, I'll let these articles do the heavy lifting:
If you don't already know, designing the layout and CSS bells and whistles for your app can be more time consuming and frustrating than all of the rest of the app development combined. Nevertheless, your design is as important to your app's vitality as salmon and hikers are to grizzly bears. When a potential new client or user visits your site, if you've designed it to look like your toothless feral cousin who your extended family hides in the attic, what's to prevent these clients from thinking that the rest of your code is just as frightening? They need to trust your app from the start, and this is done by taking the time to make it aesthetically appealing.
In short, you will have to be able to structure elements and style them, no matter what sort of development/web-based job you have. Forget Dreamweaver and other drag and drop web design tools--you will not learn what you need to learn. Many tutorials would have beginners start from scratch, but I take a different approach: throw yourself in to boilerplate code, make changes, and see what happens.
A few useful tools for beginners (assuming you understand a little syntax) and professionals alike are:
(This site is actually a conglomeration of styles from each of these.)
What is so great about Bootstrap and Skeleton from a professional standpoint is that they remove the pain of having to create an enormous CSS style from scratch, allowing you to alter the CSS provided to fit your needs. From a beginner standpoint, they show you the way HTML elements should be organized and the way CSS should be utilized. They also give you the satisfaction of seeing some pretty page elements and the ability to play with them without going through the terrible pains of creation at such an early stage.
TL;DR jumping in and pushing buttons is a good way to learn.
Basically, HAML and SASS are (in our opinion) much more readable ways of writing HTML and CSS; HAML compiles to HTML, while SASS compiles to CSS. The thought behind tools like these is that code should be beautiful, easy to read/write, and therefore allow one to be more productive. Take this HTML example on the left, and the HAML example on the right:
Although the HTML is not wholly unattractive, consider this:
Some people prefer HTML to HAML. I say, "Whatever toots your flute." If you are more productive with HTML than HAML, that is your choice. However, there are also a large number of people who find HTML "DNA" or "Snakes" to be too much clutter--this is what HAML is for.
Unfortunately, I will not cover SASS in this, but it is a great tool and SASS is to CSS as HAML is to HTML. Savvy?
Here are two fantastic links for taking your HTML or CSS and turning them in to HAML and SASS (definite time saver!):
Rails is a web application framework that is built upon the Ruby language. To become a valiant Railseteer, one must possess a decent understanding of Ruby; otherwise, it's akin to setting sail for the open seas with dreams of swashbuckling good times and a big hole in the bottom of your boat. It could work for Jack Sparrow--it will not work for you.
There are very many, "Hey! Let's make a blog!" tutorials out there. Unfortunately, those didn't really work for me. I found that the only way I could actually learn anything was to start my own project.
As I went through the initial motions of creating a new Rails project with scaffolding, I was fortunate enough for a now fellow Jack Russell Software employee, Patrick Klingemann, to notice that I was not writing my controllers myself. "Hello," he said. "Can I see that for a moment?" He proceeded to delete all of my generated controller files and all of my views. "Okay, now do it again, but this time from scratch." This was one of the best lessons I could have learned, and I was lucky enough to have somebody around willing to teach it to me: While you are learning, once you complete a file, immediately delete it and re-do it. You'll thank me later.
As mentioned under the "Making Stuff Pretty" link above, your design is as important to your app's vitality as salmon and hikers are to grizzly bears. Even if you think you know HTML/CSS, I cannot reiterate the importance of good design (visual and in your code) enough! There are also a number of very cool things going on with CSS3 transformations and whatnot (no link... just Google it).
In English, JQuery is a JavaScript library (a bunch of code bundled together for your pleasure) that allows you to manipulate a page (the Document Object Model, CSS, etc.), create animations, and much more.
Regarding how I learned JQuery: I learned to use it via CoffeeScript, which compiles down to JavaScript but looks a lot better in development. This really gave me the ability to focus less on syntax (since I didn't know JavaScript...) and more on understanding what I was doing and making cool things happen.
It's awesome
There are a few solid within-the-browser Ruby/Rails/HTML5/CSS/JQuery places out there:
In my honest opinion, there is no better way to learn than to fail over and over and over again. Ruby Koans, as well as CoffeeScript Koans, present the user with failing tests that must be corrected in the code by the user. Once the user corrects one failing test and moves beyond it, (s)he is immediately met with another failing test. The user corrects this one, and repeats for the duration of the koans.
The Koans are no quick tasks (took me a few days). They require users to find ways to make the tests pass, and this often involves looking up the subject matter and doing a fair amount of learning. For every failing test there is, a "koan" is offered to the user as Zen motivation.
I recommend learning through the Koans while sitting on your back porch/deck, if you have one, on a weekend afternoon. Also, always remember: "When you lose, don't lose the lesson."
Here are a bunch of links to some screencasts, tutorials, and whatnot:
Good information
These are some of the sites and resources I used to get where I am currently.
My name is Robert Pearce. I am 24 years old, work at Jack Russell Software, LLC., and first started learning how to code 8-9 months ago. On the side, I am a local musician, tennis player, surfer, and world traveler.
Ask any professional who enjoys his or her job about the moment they were infected with a love for whatever it is that they do, and one will likely hear a story about discovery, passion, and an insatiable thirst for knowledge about whatever it is that they do. Many programmers, developers, designers, and the like can often point to such a specific event that struck a single, beautiful note within them and led them to the profession and joy that they experience in their lives and workplace today. A number of the aforementioned people likely discovered this passion early in life, studied their passions in school, and participated in their communities, all the while learning new tools and bettering themselves.
However, there also exists a significant percentage of newly aspiring developers of all ages who were not fortunate enough to be introduced to the joy of programming early in their lives and now, after having a taste of its fulfillment, do not have any place to begin.
Ruby on Rails, for all its surface ease of use and aesthetic coding value, is not just one tool that one can use to create web applications; in fact, it is a conglomeration of any number of separate tools that any aspiring developer can find intimidating and disheartening. In addition to this, there are myriad web sites, blog posts, and books that are dedicated to educating anyone interested in Rails. The average person who has only a cursory knowledge of programming may be able to create a custom blog via e-instructions (a.k.a. tutorials), but what do they really learn, and through what process can they, to steal the phrase, "refactor their wetware?" How can they get introduced to Rails without feeling lost in a snake-esque sea of @controllers, <% erb %>'s, and--as of Rails 3.1--CoffeeScripts? What tools act as effective stepping stones?
Nine months ago, I knew almost nothing about programming, developing, and designing. With the help of the fantastic people at Jack Russell Software, along with a large amount of exploring, myself, I was able to advance from coding illiterate to full-time, paid employee in just a matter of months. I have a drive--no, I have a responsibility--to inspire future developers and try to give them access to the knowledge and tools they need to enter a field that has so many ways to accomplish tasks that it's almost impossible to get started.