Ideas For Beginning Web Developers
excid3.com
excid3.com
I would revise this: Spend as much time as you want. If you get interested in something - keep going. Don't force yourself to keep moving according to this arbitrary list. Go where your interest takes you. JUST. KEEP. GOING!
Here's one more comment.
11. Add Unit tests to anything you've developed that you want to keep developing.
I used RubyMine when learning Ruby/Rails, after having used IDEA for years (Java), and the two things which helped me learn Ruby and Rails faster than anything else were code completion (for finding methods which I may have not found otherwise) and the Source Navigator (for want of a better term). Being able to Ctrl-Click on a method and instantly see the source for it(Whether in a gem or in Rails itself) was a massive time-saver when it came to understanding what was going on under the covers.
Edit: Agree 100% with adding tests.
I know Mojo offer more but I would like to know whether there is another language with a framework where you have a complete box that is easy to deploy on any platform, comes with built in templates, comes with tools for testing, the ability to seamlessly grow Sinatra-style application into well structured Rail like stuff, a good plugin interface, a WWW library to directly get JSON or DOM elements from a remote location in one command, logs, interfaces for cgi, fastcgi, etc., production and development server with helpful exception handling inside the browser.
I know you can have all of this when you use libraries, but it makes applications harder to deploy and maintain. Besides that it's way easier to write and read stuff when it's an all in one solution. I looked for something like that in Node.js and Ruby, but couldn't find anything.
Ah yes, the "single purpose tool by design" fallacy. PHP wasn't designed for Ajax or JSON or HTML 5. Perl wasn't designed for the web.
Install a library. It's a general purpose programming language designed for you to use libraries.
And yes, I know the benefits of Ruby's OO. I have used Smalltalk, so please don't tell me all the wonderful things you can do. I know them. But using Perl is like using a lot of experience for practical stuff. That's Perl's strength. There is a lot of knowledge in it and it's designed for practical stuff, the real world and not to look good or to be easy to learn. I still recommend Ruby to people who ask me about programming. Simply because it's better to understand a lot of things and I think it's easier if you start out with a programming language like Ruby. But staying with one language is just stupid. You will have a lot experience with a particular, but knowing different approaches to solve problems is even better.
Then there is this TIMTOWTDI dogma it that receives a lot of criticism, but I think it what keeps Perl alive. It makes it very flexible so you can use it like a completely different language. One can use it for small scripts or one-liners and huge applications. Also it's not true that there are no start up. DuckDuckGo is maybe the most popular example.
But this doesn't mean you should all use Perl. People do things in different ways and they think in different ways. It's not about choosing one single language that receives a lot of hype. Just learn and what's more important understand them. And with understanding I mean the philosophy. A lot of C people for example use Perl like it would be C and then say it's bad because it's like C and slower. GitHub is a nice way to find out how people are using a language and receive some inspiration. It's like everyone should at least try Small Talk and a language like LISP or Haskell. And everyone should learn what Assembly is all about. It will make you a better programmer no matter what language you'll be loosing in the end.
Oh, sorry. This is so off topic. I just wanted to know what stuff I might have missed, because it's really been a while since I had a look on other languages. Sorry!
If you are really a beginning web developer, read the HTTP RFC. Learn HTML. Learn Javascript. Learn CSS. Learn basic Unix. Pick one simple project and implement it in three different languages. Then implement it with three different database layers. Then implement it with three different web servers. Then implement it on three different operating systems or at least Linux distributions.
Now try to benchmark and scale. Compare multiple front end load balancers. Compare various NoSQL database architectures and caching solutions. Try some cloud hosting, see where it falls down.
This will teach you far more than fiddling in one framework.