Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

General Discussion

Understanding the process of Building Websites..

I've been using treehouse for quite a while now. I've learnt quite a bit and I would say my main skills are css,html,javascript. But I'm completely not a techy person. I work day to day in a completely different environment and I don't speak to anyone about web development. I just signed up as I wanted something to learn and it looked interesting.

It's been great so far and with what I learnt I can make a decent static website using HTML, CSS and JavaScript. However I was sat thinking the other day about how other websites work and realised I don't have a clue what is really going on.

What I mean by this is let's say I was going to make a website for a shop. The way I build websites would require someone who understands html,css and javascript to constantly update it if they want to make changes or add things. And I thought to myself this can't be the process, people who pay for websites to get built don't know how to code so how are they updating them by themselves. Silly I know but I've never thought like that before because I've never had the intention of making websites for other people.

For example say someone had a small clothes shop. They would need a process in place to add new stock and update new things regularly. So then I thought well they must use a content management system. I've never read a thing about CMS so I really don't have a clue what they do, but the first place I looked was wordpress and I saw all the themes available and I suddenly thought well what is the point of html, css, javascript.

I guess what I'm really asking is what is the process to produce a website for a client that these great web design companies are making. These uniquely designed websites that are completely self sufficient, one that people with no coding skills can update and add new things to themselves.

say for a simple example and website like this:

http://www.telegramgallery.com/ or http://www.endclothing.com/gb/ or aything similar

how are these websites being made??

I'm sorry for the essay and also if it's a silly post. But I've just became very aware of how little I know and I'm really interested to know how these websites are being made. I also hope I haven't been lazy and skipped over important things that would have gave me the answers. For someone like me who just started learning as a hobby, looking back I was just learning but I didn't know what or why. It would be great to get a better understanding as I feel I want to learn something else to improve my skills and make better websites but I don't really know what to do because I don't know how these more advance websites are being made.

Thanks in advance for any replies.

4 Answers

[EDIT] In short, a dynamic website like a webshop is a cake with many layers.

Essentially, on top, you have HTML, CSS and JavaScript which tell browser what to show. This is basically a View

How those 3 components are delivered to the browser varies a lot depending on many factors:

Any frameworks or CMS-es you might want to use. -Maybe general purpose CMS like Wordpress or Joomla, or a dedicated eCommerce platform like Magento on Linux stack, or perhaps nopCommerce on Windows Server.

Your choice of a CMS or eCommerce platform influences -Scripting language you use to interpret the HTTP requests and deliver content back to client: PHP, Python, ASP.Net, C#... -and database engine MySQL or Microsoft SQL Server where you will store your data

which further narrows down your http server software -Server software on the host machine: nginx, Apache or IIS

and eventually you have to choose the -Server OS you use to host the website: Linux or Windows

This is as simple as I managed to make it. There are many more choices about each of these points to make, but don't worry, no one is meant to know it all. That is why it is all about teamwork.

[/EDIT]

I recommend this course if you wish to find out more about how things work behind the scenes. http://teamtreehouse.com/library/php-basics

Or a PHP developer Track. http://teamtreehouse.com/tracks/php-development

The actual process for building a website is going to vary greatly across projects and agencies depending on how they do things. Most of the time you have a client updating a website you are going to have CMS. Typically this is going to be WordPress/WooCommerce, XCart, Magento, Spree, etc. There are hundreds if not thousands out there, but only a few that really meet the top 5% of what is truly useful and worthwhile implementing.

Figuring this all out is a skill in itself, it is a matter of asking the right questions, understanding your client, their clients, and the business process needs that they have. For a small boutique shop you could easily use a WP site with WooCommerce to allow them to easily add products, track orders, etc. As you work with larger clients there are far more business needs.

While I was working at a very large ecommerce retailer, we had to build custom solutions to a lot of the technologies we worked with. There was an entire process surrounding the creation, photography, and upload of products to a website, as well as automation like price adjustments, discounts, order processing, etc.

As you can imagine the process and timelines for a small local business are drastic compared to an enterprise company. However there is an overlap of certain elements. Currently I have a system in place that is modular and allows me to remove unnecessary bits as the project needs are determined:

Planning and Research: Business Needs (what is the goal of this project) Competitive Analysis (SWOT - strengths, weaknesses, opportunities, threats) User Persona's Story Boards (This only really happens on the big projects where we need to really understand customer segments) Existing Site Audit (SEO, Sitemap, Usability) Scoping (determining everything we need)

Design: Lofi - Wireframes and/or Rapid Prototype Hifi - PSD/Sketch/Illustrator or HTML Mockups Review Process

Development: Framework Development (taking the scoping information, creating dev environments) Code everything! Cross Browser / Device Testing Usability Testing Content Implementation (Proofing, link checks, etc) Validation (W3C) Performance Tuning (throughout the process)

Launch: Last Minute Touches (always undersell and over deliver when possible) Site Migration Documentation (CMS usage, passwords, etc) Client Handoff

Post Launch: This is where it gets tricky. With larger clients you generally have another Research stage where you might have Phases of updates, adding new features or content. Sometimes this also includes maintenance if there is a retainer fee.

This is all a lot obviously to do, but this is the process I have used at every agency, either because I implemented it or it was already close to the case, and it works very well because it is structured. Even on a personal level I'll take bits and pieces of this just to make sure I am not missing anything.

A process really is just a set order of how you do things, that works best for you, and makes your more efficient. As with any programming project, you just need to break it down into the pieces that it consists of (plan, design, develop, launch) and if you want or need to, break it down even further.

Here are some more resources: http://www.smashingmagazine.com/2011/06/following-a-web-design-process/ http://www.smashingmagazine.com/2012/05/design-process-responsive-age/ http://www.printmag.com/featured/phases-of-the-web-design-process/

You just got a taste of what is called the "back end" of a website. All of these websites do function on some sort of CMS. Whether it be a prebuilt CMS like wordpress (among many others) or it's a completely custom CMS.

The back end of websites are almost always languages such as Python, Ruby, PHP, Node, etc. Built on these languages are MVC frameworks. MVC stands for Model, View, Controller, and it's simply just a way to organize your website. It's very widely accepted as a best practice to structure your website in this way, and yes Treehouse has a lot of courses on what MVC is, and how to use these MVC frameworks.

The frameworks themselves would be Django or Flask for Python, Sinatra or Rails for Ruby, Laravel or Slim for PHP, and Express or Sails for Node.

Most all websites can benefit from a MVC set up, whether custom or within a framework.

In regards to I looked was wordpress and I saw all the themes available and I suddenly thought well what is the point of html, css, javascript

Pre-built wordpress themes, are not really used in the web industry. If you want to work in the industry, and you want to work as a front end dev, you'll need to understand html, css, and javascript. These pre-built themes are for people who don't know how to code, and need a fast, easy site. They're often bloated, limited in features and functionality, and sometimes not support well. There is a lot you can't do with a pre-built theme.

Being a front end, or back end dev are both lucrative careers. Clients would expect a back end to ship with their site, whether it be Wordpress, Drupal, or a custom CMS built on an MVC framework.

My response is limited because I haven't had the chance yet to work with an agency that builds custom applications. If the software developer understands the demand of the client and has available tools to meet that demand, then the developer can deliver. It's a full stack problem. If there's a database tracking the items that are available to the enduser, then an mvc framework can be wrapped on in the front-end to display the content in a meaningful way without constant maintenance from a developer.

Another possibility is that the developer educates the client on some basic side of the coding so that the client can maintain their product on their own.

I know Nordstrom just started using a stack with AWS/Express/React, and there's also a lot of data out there with IoT so there's probably going to be a lot of new apps coming out interpreting that data like with d3.js.

I can imagine this is an insufficient response, and I'd be interested as you are to hear from someone that's currently working in the industry on projects that don't rely on a CMS like WordPress.