<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Jamie Thompson &#187; html</title>
	<atom:link href="http://jamiethompson.co.uk/tags/html/feed/" rel="self" type="application/rss+xml" />
	<link>http://jamiethompson.co.uk</link>
	<description>Web Developer</description>
	<lastBuildDate>Tue, 08 May 2012 10:58:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Advice for Budding Web Developers</title>
		<link>http://jamiethompson.co.uk/web/2008/08/18/advice-for-budding-web-developers/</link>
		<comments>http://jamiethompson.co.uk/web/2008/08/18/advice-for-budding-web-developers/#comments</comments>
		<pubDate>Mon, 18 Aug 2008 17:00:38 +0000</pubDate>
		<dc:creator>Jamie Thompson</dc:creator>
				<category><![CDATA[Web]]></category>
		<category><![CDATA[advice]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://jamazon.co.uk/?p=106</guid>
		<description><![CDATA[
The following guide came about after I was tasked with transferring my Web Development expertise into two VB developer colleagues. No mean feat in the one month I have left at my current place of work. Ultimately it&#8217;s possibly a futile task, but it&#8217;s worth a shot.
Web Development is not just collection of related technologies. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://s322999261.websitehome.co.uk/wp-content/uploads/2008/08/webdeveloper.jpg" alt="Jamie Thompson - Web Developer" title="webdeveloper" width="530" height="190" /></p>
<p>The following guide came about after I was tasked with transferring my Web Development expertise into two VB developer colleagues. No mean feat in the one month I have left at my current place of work. Ultimately it&#8217;s possibly a futile task, but it&#8217;s worth a shot.</p>
<p>Web Development is not just collection of related technologies. It&#8217;s a state of mind, and in that respect it is very much like <a href="http://www.imdb.com/title/tt0416394/quotes#qt0089411">Yorkshire</a>.</p>
<p> What follows is aimed at existing developers (VB or otherwise) looking to move into Web Development. The advice I offer is that of best practice in the field of Web Development. The books suggested are generally those which I have read myself that or that come highly recommended by friends and colleagues of mine.</p>
<h2>What is a Web Developer?</h2>
<blockquote><p>A web developer is a software developer or software engineer who is specifically engaged in the development of World Wide Web applications, or distributed network applications that are run over the HTTP protocol from a web server to a web browser. Many web developers are also skilled in related areas such as web design, information architecture, usability engineering, web content management systems, web server administration, database administration, software engineering, project management, network security, and search engine optimization.</p>
<p>Developers often specialize in either front-end or back-end work. Frontend developers tend to focus on the client-side and typically work with technologies such as markup languages, ECMAscript and its variants (JavaScript, JScript, ActionScript), CSS, and the DOM. Backend developers usually focus on the interaction between server-side frameworks using Perl, Python, Ruby, PHP, JSP, or .NET and databases. Some back-end developers maintain databases directly on their web servers, while in other situations the backend developer calls data, managed by a database administrator, on an external system.</p>
<p><em>- Wikipedia</em></p></blockquote>
<p>In my experience the statement about specialization comes into play more within larger organisations. Small to medium enterprises tend to look for generic web developers with a grounding in one or maybe two server-side frameworks as well as an understanding of (X)HTML / CSS and JavaScript. Generally speaking, most web developers begin their careers within smaller organisations, and while it is not always the case, you will tend to find a large degree of overlap between front-end and back-end web developers for this very reason.</p>
<h2>The Right Tools for The Job</h2>
<p>There was a time when the in thing was to use a WYSIWYG editor to design and develop websites. Those days have gone (Microsoft please pay attention! Visual Web Developer 2008? OMGWTFDONOTWANT!!*). Dreamweaver, whilst it&#8217;s design view should be used for nothing more than ridicule, is a perfectly adequate syntax highlighting code editor for web development. It also has the benefit of it&#8217;s built in FTP client which is very handy. What you use to edit your code is entirely a personal preference. Something with syntax highlighting and brace matching will save you time by helping you to work faster. Some options include:</p>
<ul>
<li><a href="http://notepad-plus.sourceforge.net">Notepad++</a>  &#8211; Windows  &#8211; Open source syntax highlighting code editor, many plugins available including an FTP client (compatible with Wine.. sort of)</li>
<li><a href="http://www.aptana.com/studio">Aptana Studio</a>  &#8211; Windows/Mac/Linux  &#8211; Eclipse based editor with an invaluable PHP debugger plugin as well as working nicely with html/css/javascript right out the box</li>
<li><a href="http://en.wikipedia.org/wiki/Notepad">Notepad</a> &#8211; Windows &#8211; included with any copy of Microsoft Windows (There&#8217;s no reason that, at a push you can&#8217;t ply your trade with this trusty tool)</li>
<li><a href="http://www.adobe.com/products/dreamweaver/">Dreamweaver</a> &#8211; You should be familiar with it if nothing else. For some reason your employer might INSIST that you use it.</li>
</ul>
<p>Mozilla Firefox is an excellent developer&#8217;s browser, and with the following plugins installed is close to a perfect development environment.</p>
<ul>
<li><a href="http://chrispederick.com/work/web-developer/">Web Developer Plugin</a></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/1843">Firebug</a></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/6683">Firecookie</a></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/271">ColorZilla</a></li>
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/249">HTML Validator</a></li>
</ul>
<p>For testing in multiple versions of Internet Explorer in Windows, <a href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a> is an invaluable tool. <a href="http://www.tatanka.com.br/ies4linux/page/Main_Page">IEs4Linux</a> is handy for linux based development environments but there&#8217;s not substitute for running virtual machines with differing OS/Browser setups to cover all bases. It is also a good idea to invest in a Mac of some description for testing purposes.</p>
<p>* To avoid confusion, the budding Web Developer should attempt to learn <a href="http://en.wikipedia.org/wiki/Lolcat">lolcat</a></p>
<h2>First Things First</h2>
<p>Your first task is to forget everything you think you know about Web Development. Forget Dreamweaver (for now). Please forget Frontpage. Don&#8217;t even THINK about cranking up Visual Studio, it isn&#8217;t a web development tool despite what Microsoft might tell you. To be sucessful in web development whether you plan to move into front-end or back-end development or even if you just want to be a competent web designer you need to start from the ground up. That&#8217;s HTML and CSS.</p>
<p>Knowing (X)HTML inside out is not an option. You cannot skip this step. CSS guru status is possibly optional for those in a soley back-end role where presentation and layout are the consideration of a front-end developer. Even so, I would argue that there&#8217;s no excuse for not learning at least the basic principles of CSS.  Whether you&#8217;re a designer designing for the web, a front-end developer implementing the designs of others, or a back-end developer providing the business logic behind someone else&#8217;s front-end, you should always strive to fully understand the medium in which you&#8217;re working and the way in which your design patterns impact on others.</p>
<p>It is possible to grasp the fundamentals of designing for the web in XHTML and CSS in a fairly short space of time. I know this from experience after watching a colleague of mine, a talented graphic designer, learn web design from the ground up simply by reading and trial and error over the course of several months. Of course, it goes without saying that the intricacies of cross browser compatibility can take years to fully master, and in this respect there is no substitute for the wealth of experience gained over time fixing one mind numbing IE6 bug after another, over and over and over again, until your eyes start to bleed and what&#8217;s left of your brain trickles out of your nose. One year and a bit later <a href="http://ricknunn.com/blog/2008/08/14/advice-to-budding-web-designers-developers/">Rick</a> is still a talented graphic designer but one who makes my life all the more bearable by chopping up his own designs and turning them into perfectly semantic valid XHTML and CSS. All it takes is patience and a thirst for knowledge.</p>
<h2>The Fundamentals</h2>
<p>Broadly speaking a page on the World Wide Web consists of</p>
<ul>
<li><strong>Markup</strong> &#8211; HTML or XHMTL &#8211; The bare-bones of the page structure and it&#8217;s content</li>
<li><strong>Style </strong>- CSS &#8211; colors, fonts, layout etc</li>
<li><strong>Client-side logic</strong> &#8211; JavaScript &#8211; how the page deals with complex user interaction.</li>
</ul>
<h2>Marking it up</h2>
<p>The only possible starting point is to learn to write markup. Markup is what defines the structure of the pages which make up the web. A common misconception, and one that&#8217;s more commonly held by those already within the IT industry is that there are many different technologies for displaying pages on the web. Whether the url of your page ends in .html, .asp, .php or one of a multitude of other extensions, the page that you see is your web browsers interpretation of some (X)HTML markup (hopefully) in conjunction with some CSS. The important thing to remember is that no matter what technology is used on the server-side to generate a web page, the web page is self never amounts to anything more than some HTML and CSS. We&#8217;ll touch on JavaScript later on but for now we&#8217;ll pretend that it doesn&#8217;t exist. So I have to say sorry to all you .NET developers but I&#8217;m afraid that ASP.NET pages really aren&#8217;t some kind of magical in-browser .NET application. It&#8217;s an illusion created by Visual Studio, Some poorly auto-generated HTML forms and a heap of really bad old-school JavaScript.</p>
<p>The standards for (X)HTML markup are set out by the W3C (World Wide Web Consortium). As a Web Developer you should strive for as much as much of your (X)HTML to validate against the doctype you specify; and you should ALWAYS declare a doctype (or the sky catch fire). You should validate your markup regularly during development and before release. Having a HTML validator built into your browser (such as Firefox) saves a lot of time in this respect. One of the best resources for learning the fundamentals of HTML and CSS is <a href="http://www.htmldog.com">htmldog.com</a>, whether you&#8217;re a total n00b or you&#8217;re halfway proficient in the basics already they seem to have tutorials and reference to suit. <a href="http://www.w3schools.com">W3Schools</a> is also a very good (but ugly) source of quick reference for pretty much all web technologies including HTML, CSS, JavaScript and most major server-side languages.</p>
<p>If you&#8217;re planning on heading down the .NET route of Web Development (and there&#8217;s nothing wrong with that), it&#8217;s imperative that you fully understand the concepts of semantic, valid HTML, pure CSS layouts as well as good JavaScript practices before you even open Visual Studio. That way you&#8217;ll have a solid understanding of which features of ASP.NET to take advantage of and which you need to avoid like the plague.</p>
<p>It is one thing to understand HTML, it is quite another to write semantic HTML and express context and meaning through markup. I would suggest reading up on the subject of semantic markup before going any further as a solid understanding of these principles will make the transition into the dark world of CSS much less painful.</p>
<p><strong>Reference:</strong></p>
<p><a href="http://www.htmldog.com">www.htmldog.com</a> &#8211; HTML and CSS Tutorials<br />
<a href="http://www.W3Schools.com">www.W3Schools.com</a> &#8211; Web Technologies Reference Guides<br />
<a href="http://www.w3.org/Consortium">www.w3.org/Consortium</a> &#8211; About the W3C</p>
<p><strong>Books:</strong></p>
<p><a href="http://books.google.co.uk/books?id=wm0Yip3Zo78C">HTML Mastery</a></p>
<h2>Cascading Style Sheets</h2>
<p>Style on the web is achieved using Cascading Style Sheets. An in depth guide to CSS is beyond the scope of this article but if HTML is the cake then you can think of CSS as the icing. CSS allows you to take your plain, u-nstyled, semantic markup and skin it anyway you choose without affecting it&#8217;s content or structure. Every presentational element of a website design can be achieved using CSS and CSS should be your only method of styling markup.</p>
<p>CSS support across browsers is inconsistent. Different browsers will render valid CSS in wildly different ways to each other, and it is in dealing with these cross browser issues that the skill and experience of the front-end developer really comes into play. Be prepared for hours of nail-biting CSS debugging action. There is no substitute for learning from your mistakes. It takes time to smooth your way through the minefield of browser incompatibilities but resources like quirksmode.org are a godsend providing explanations of common CSS bugs, workarounds and accepted means of circumventing certain issues (Mostly Microsoft Internet Explorer ones).</p>
<p><strong>Reference:</strong></p>
<p><a href="http://www.quirksmode.org">www.quirksmode.org</a> &#8211; CSS Bugs and Hacks<br />
<a href="http://www.positioniseverything.net">www.positioniseverything.net </a>- More CSS Bugs and Hacks</p>
<p><strong>Books:</strong></p>
<p><a href="http://books.google.co.uk/books?id=Mp1KAAAACAAJ">CSS Mastery</a><br />
<a href="http://books.google.co.uk/books?id=xxOtAAAACAAJ">CSS The Definitive Guide</a></p>
<h2>Client-Side Logic</h2>
<p>It is almost impossible to develop a modern web application without employing at least a small amount of client-side code in the form of JavaScript. But what is JavaScript? JavaScript is not Java, and if you say it is I will hurt you. JavaScript is not like Java. It isn&#8217;t even a stripped down version of Java.</p>
<p>JavaScript is the name erroneously given to the implementation of the ECMAScript scripting language which is built into almost all modern web browsers.</p>
<p>JavaScript is what allows the developer to deal with complex user interaction. Broadly speaking, any kind of interaction between the user and the page which involves more than simply moving the user to another page is probably controlled by JavaScript.</p>
<p>Each web browser implementation of ECMAScript varies slightly and this can catch out even the most experienced JavaScript developer. Many open source projects have sought to level the playing field with comprehensive cross browser libraries which attempt to provide solid cross-browser APIs for common programming tasks. These libraries commonly referred to as as &#8216;frameworks&#8217; allow developers to focus on writing their application rather than on the multitude of cross-browser issues their application faces; and I cannot be more clear when i say that &#8220;You really really need to use a JavaScript framework of some description or you&#8217;ll go clinically insane&#8221;</p>
<h2>JavaScript Frameworks</h2>
<ul>
<li><a href="http://www.jquery.com">jQuery</a> &#8211; The Write Less, Do More JavaScript Library</li>
<li><a href="http://mootools.net/">MooTools</a> &#8211; a compact JavaScript Framework</li>
<li><a href="http://www.prototypejs.org/">Prototype</a> &#8211; Easy AJAX and DOM manipulation</li>
<li><a href="http://dojotoolkit.org/">Dojo</a>  &#8211; the JavaScript Toolkit</li>
</ul>
<p>Some of these JavaScript frameworks make it possible by means of plugins to work on client-side logic with very little in-depth understanding of JavaScript. jQuery for example has a simple enough basic usage that designers with little to no programming experience are often able to integrate fairly complex interface logic unaided via plugins. Should you wish to develop anything more complex than what is available as a plugin you will need to learn JavaScript. For this you will need books. JavaScript is often dismissed as a &#8216;toy&#8217; language or simply as a very basic scripting language but it is in fact a very powerful language in it&#8217;s own right and can take some effort to master.</p>
<p>One thing all these frameworks have in common is AJAX. AJAX is the acronym of Asynchronous JavaScript and XML. To an extent AJAX is little more than a marketing term, like &#8220;Web 2.0&#8243;. Generally speaking, AJAX is a term mostly misunderstood by the vast majority of people who use it. The term AJAX is commonly used to refer to any form of JavaScript based rich user interface (another acronym commonly banded about is RIA &#8211; Rich Internet Application). In essence AJAX is the name erroneously given to any means by which modern web applications communicate asynchronously with a web server to provide a rich user interface. This communication doesn&#8217;t have to be XML, in fact more often than not it isn&#8217;t XML. The underlying technologies behind an AJAX request are way beyond the scope of this article. The best way to learn more about AJAX is by choosing a JavaScript framework and using it.</p>
<p><strong>Reference:</strong></p>
<p><a href="http://en.wikipedia.org/wiki/ECMAScript#History">A concise history of ECMAScript</a><br />
<a href="http://www.w3schools.com/JS/">JavaScript Tutorials</a><br />
<a href="http://en.wikipedia.org/wiki/AJAX">en.wikipedia.org/wiki/AJAX</a> &#8211; Sums it up better than I ever could</p>
<p><strong>Books:</strong></p>
<p><a href="http://books.google.co.uk/books?id=d_EPxT-DyJ8C">Learning JavaScript</a></p>
<p><a href="http://books.google.co.uk/books?id=KUrT29GBK7cC">AJAX hacks</a> (never read but looks to be a great little primer)</p>
<h2>Server-Side Logic</h2>
<p>The Server-side is where your web applications get down to business. This is where you connect to databases, manipulate data and make decisions based on user input. You could say this is the &#8220;real programming&#8221;, but that would be to the detriment of all your hard work on the client-side.</p>
<p>A front-end developer need not learn a server-side language, though it is good practice to understand at least the basics of the server-side language of any project you&#8217;re working on. Back-end developers it goes without saying should be proficient in at least one server-side language as well as SQL and database design principles. There are as many choices of server-side framework as you care to choose but your best option is to pick one and learn it inside out. Popular frameworks include.</p>
<p><a href="http://www.php.net">PHP</a> &#8211; Arguably the most ubiquitous open source server-side language of all time &#8211; That doesn&#8217;t make it the best though<br />
<a href="http://www.rubyonrails.org/">Ruby on Rails</a> &#8211; Favoured by cool kids with slick hairdos<br />
<a href="http://java.sun.com/products/jsp/">JSP</a> &#8211; Favoured for &#8220;Enterprise Solutions&#8221; and by those with smart beards<br />
<a href="http://en.wikipedia.org/wiki/Active_Server_Pages">ASP</a> &#8211; Also known as Classic ASP &#8211; Most commonly VBScript or JScript &#8211; Although defunct as a language, many developers will find themselves supporting ASP web apps for many years to come. It&#8217;s a valuable skill to have<br />
<a href="http://www.asp.net/">ASP.NET</a> &#8211; ASP&#8217;s big brother &#8211; Most commonly VB.NET or C# &#8211; Very powerful yet most usually favoured by those who don&#8217;t know what they&#8217;re doing</p>
<h2>Databases</h2>
<p>As a back-end developer you will need to be proficient in SQL (structured query language) which is often but not always pronounced &#8220;sequel&#8221;. SQL is the language in which almost all Database systems accept queries. The basics of SQL are the same from system to system, but each database system has it&#8217;s own slightly varying syntax. Popular relational database systems include:</p>
<ul>
<li><a href="http://www.mysql.com/">MySQL</a> &#8211; Open Source &#8211; Most popularly partnered with PHP</li>
<li><a href="http://www.postgresql.org/">PostgreSQL</a> &#8211; Open Source &#8211; slightly less popular than MySQL</li>
<li><a href="http://www.microsoft.com/sqlserver/2008">Microsoft SQL Server</a> &#8211; Most commonly used with ASP(.NET)</li>
<li><a href="http://www.oracle.com">Oracle</a> &#8211; if you&#8217;ve got money to burn</li>
</ul>
<p><strong>Reference:</strong><br />
<a href="http://www.w3schools.com/sql">www.w3schools.com/sql</a> &#8211; Basic SQL tutorial</p>
<p><strong>Books:</strong><br />
<a href="http://books.google.co.uk/books?id=Y3uCOQppkUIC">SQL in a Nutshell</a></p>
<h2>Final Thoughts</h2>
<p>So hopefully this has given you some new directions to spin off in on your journey into web development. Hopefully it&#8217;ll help you avoid some time-consuming pitfalls, maybe it won&#8217;t, and maybe that&#8217;s half the fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://jamiethompson.co.uk/web/2008/08/18/advice-for-budding-web-developers/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
	</channel>
</rss>

