- Abstraction Programming and Education
- Four Questions about Math Education
- The Future of Education
- A New Curriculum
- Writing with Less Writing
- The Goals of Learneroo - How I Hope to Improve Online Education
- The Java Job Market
- Kickstarter Success, Thank you Backers!
- Comments and Chat
- Path to Learning Java
- Aristotle on Learning
- Programming Bootcamps as an Alternative to Lectures
- The Education Dialog
- The Mean, the Median and Startup Equity
- Membership on Learneroo
- Discounts - Satisfaction Guaranteed!
- Lecture Videos and Learning
- Learn Programming by Example and with Challenges
- Java Coding Contest Results
- Coding the Java Explorer
- New - Java Budget Bootcamp
- Java Jobs II
- The Web for All - Kickstarter
- Finding a Web Host and Creating a Site
- Web Development for Entrepreneurs, Marketers and Biz-devs
- Web Development for Non-Developers
- Lessons from my Unsuccessful Kickstarter Project
- Changes on Learneroo
- Learneroo on Reddit and the Powers of 10
- Free Membership for Teachers
- New Algorithms Tutorials
- Free Membership on Learneroo
- Algorithms for Interviews and Jobs
- Interactive Cartoon Guide to Ruby on Rails
- Kickstarter Launched
- Learn Web Development Kickstarter - Q & A
- Ruby on Rails for Web Designers
- Web App Framework vs. CMS vs. Website Builder
- Real Web Development for Entrepreneurs
- What Programming Language Should You Learn?
- Lessons from my Successful Kickstarter Project
- Ruby Coding Contest Live!
- Understanding Recursion
- Ruby Coding Contest Recap
A blog about education. On Learneroo Itself. Blog Home
Web App Framework vs. CMS vs. Website Builder
Ruby on Rails vs. Wordpress vs. Weebly - Code & Control
Say you want to create a website for your organization, community or small business. Or maybe you want to create a web application that will be the Facebook for X, the eBay for Y, or the Yahoo of Z. What tool should use to create your site?
In my last post I said that you should learn the highest level option that forms a complete abstraction layer:
Learn the highest level that can serve your purposes without requiring you to do dig beneath it.
I discussed using the Ruby language, the Ruby on Rails framework and the ActiveRecord ruby library. But there are website-builder tools and CMS's you can use to create websites without writing any code at all. If the highest-level tool is best, these tools would be better than custom-coding your app. When can you use such tools, and when do you need to code? How do you evaluate the tradeoff between an easy tool and a powerful one?
While higher-level tools let you build things more quickly and easily, you're always trading giving up some control or performance in exchange. In many cases, this doesn't make a real difference. For example, Ruby is a much better language to create your web app in than C not discussing huge high performance sites, even though C runs much faster on a computer. These performance differences rarely matter, especially when you're starting out.
Languages vs. Frameworks
Now that you're using a high-level language, should you use a framework or code your app from scratch? Back in the 90's people often coded from scratch, but in the 2000's frameworks like Ruby on Rails were developed. In almost all cases, you should go with a framework like Rails. They provide a standard architecture for building web apps and provide useful libraries and re-usable components that make it easier to develop sites quickly and according to best practices. The more ready-built components you can use, the better.An exception might be if you wanted to develop a completely new category of software application, but then they would basically need to invent a new framework to do so.
Interested in learning web development with Ruby on Rails? Check out my Kickstarter!
However, with website builders you lose control to do what you want. You get full control of the content of your site, and a fair amount of control of the look and layout, but you cannot control what your site does. You can pick from the provided options, such as wiki or blog, but you cannot develop your own features. If you're just creating a small standard site that fits into one of these checkboxes, you may as well use them. However, if you're creating a new type of application you'll need to develop it on your own. Large website will usually have custom needs, but you can still use website builders for a small site or to test out an idea.
(See What to Use to Create Your Own Website for more tools you can use.)
CMS's are in-between a website builder and a framework. They are used for managing content-based sites, such as for news or reference. The most popular one is Wordpress, which started as a blogging platform, but evolved into a platform for any type of content site. If you install Wordpress on your own web host, you will need to keep it up-to-date and secure but retain control over your application. There are a large number of plugins you can install on wordpress sites to add features without writing code, and you can develop your own plugins to add potentially anything. However, if you are planning on developing a custom application early on, Wordpress is rarely the best choice. Instead of architecting an application to fit your purpose, you will need to deal with a large existing codebase that was built for a different purpose. So go with Wordpress if your site fits into a standard blog or CMS, but go with a framework if you want to develop a custom application.
In short, if you need a standard content site, a website builder or CMS are a good choice. Otherwise, go with a framework like Ruby on Rails, which gives you full control without requiring you to re-create common components from scratch.
The picture above shows the level of control that each category provides (the width of a brick)) and the amount of work or coding you need to create your site (the height of a brick). Note how a framework offers practically the same control (to create any kind of site) as coding from scratch, but requires much less actual code to do so. As you move up the tower, you give up control in exchange for using more pre-built parts.
The table below summarizes what each category can do:
|Category||Example||Use case||ready out-of-the-box||Control - What can you do?||Work - what you need to do|
|Language||Ruby||Build application with radically new architecture||Standard language libraries||Everything||Everything|
|Framework||Ruby on Rails||Practically any web application||Structure to follow and libraries to create site with||Almost anything||Create site using provided libraries and structure|
|CMS||Wordpress||Blog or news site||Actual website||Change look and structure of site, add plugins for new features||Customize, maintain and keep secure|
|Website Builder||Weebly||Company info site||'polished' website||Change style of site||Pay them (for full features)|