Future Skills for a Budding Web Designer?
ericdfields asks: "One of my lifetime career goals is to establish myself on some decent level or another as a well-rounded, (mostly) standards-based web designer with some backroom web development knowhow. The problem is I have no clue where to begin. HTML, CSS, JavaScript are an obvious start, but what about other web-driven languages? PHP, XML, SQL, Perl... the list goes on. Should I be looking to grab hold of some Flash and Director skills? What abilities will be needed on the horizon that I can get an early start on learning today?"
Flash is a great program, and has some incredibly appropriate uses, but more often than not people learn flash and then say they're web designers.
Please, learn the standards first, as you've given a tendency towards already. When it is time to learn flash, using it from a proper structural understanding of how the web actually works, including information structures, user interface experience and page interactivity will all help you construct better pages that take advantage of all the technologies at your disposal.
How about learning the "skill" of not using Javascript at all? If everyone had this skill, it would make make the Web a more pleasant place. Nest up, the elite "skill" of not polluting pages with Flashdross.
Don't blame Durga. I voted for Centauri.
HTML first, you need this no matter what. And learn it right, don't go putting FONT tags all over the place or build nested tables 6 levels deep.
CSS is next. This is what you use to make your HTML look pretty. Memorize all the little things, there aren't that many really.
PHP next. Play around with generating dynamic HTML.
Then MySQL (or other database), and practice creating forms that get saved to a database. I'd recommend spending a good amount of time on this one and learn things like database architecture and how to tune things.
Javacript should probably be last, since you shouldn't need it much, if at all. A lot of sites have a hundred K of javascript code to try and make things "cool". Go for functional, not cool. Things like confirmation dialogs are good. Things like form validate is WRONG - the backend should do that, not the client.
Photoshop is fairly important, but won't get you far unless you know the other stuff. Although you could do this right after HTML and CSS if you want to do some static websites for people. For dynamic stuff, functionality is usually more important than looking pretty is a business environment, but your results may vary. Besides, proper design will let your site look cool without a lot of eye candy.
As for Flash I don't personally like it and haven't bothered to learn it yet simply because I don't have a NEED for it. That's what it comes down to. Flash isn't necessary for web design. If a customer needs it, subcontract it out.
There are a lot of skills, as you've already realized, that go into web development. But to be successful commercially, you are going to need to learn to work as a team. Quite simply, if you are a good designer, you'll have too much work and will be a bottle neck.
The hard part of being a developer is troubleshooting, debugging and optimizing. The only way to know effectively do it is to have a complete understanding of the entire web process. Those skills really come only from experience.
It is learning how ALL the pieces of the equation fit together and interact. I.e How does the HTML in the site render with the browser, is the traffic effecting the performance, if so are the images to blame or possible a database connection? Is there a caching issue in the browser causing upodates not to show? What version of apache/PHP are running, how is each configured?
I own and run a small hosting company. I also do a lot of development using mainly PHP, but there are a few PERL scripts, shell scripts and even a C program here or there. My company specializes in hosting small developer and designers who are just getting started. So We actually get a lot of questions and issues, that usually stem from the fact that the people just do not have a complete picture of the system.
For example one of my larger more experienced customers who has two dedicated servers, and hosts about 300 domains on them, called me with a problem with a shopping cart she has used many many times before. For some reason the site was excruiatingly slow, and she did not know why. A quick glance at the config file told me she was running a database off a server in another datacenter. So there was a lot of overhead from the lookups. She knew this, but didn't realize the impact that geography makes, and she wasted a day trying to figure it out before calling me.
Anyway, in my opinion it is good to lear one or two skills really well, and assemble a team of people around you that can fill in the gaps. But it is equally important to know a little bit about as many skills as you can. This is important for several reasons:
1. If you are farming out the work you can give the subcontractor good specs, and can in general communicate your needs better.
2. If you do need to learn the skill it will be easier with some background to start.
3. A lot of the skills and languages and tools you learn share common elements, or at least common ideas. So by learning new things, you can often take those skills and apply them to your area(s) of expertise and become better.
4. learning about the features and benifits of a wide range of tools will help you identify the best tool for the particular project. That will help you be more efficient, and thus make more money.
Anyway if I were starting with a blank slate and wanted to be an independent developer. I would learn HTML and CSS as they are the fundemental building blocks. A server side language is also very handy, and will allow you to truely take advantage of the numerous free scripts. It is one thing to install a script, it is another thing to fully integrate it into a site, knowing the language will help. I prefer PHP.
If you pick up PHP, knowing basic SQL and specificall MySQL will go a long ways.
Flash, is handy but I try to avoid it for most sites, animated banners are pretty worthless none and really do not provided the customer with any bang for the buck. If your client insists on it, it is easier to farm out the Flash dev.
Graphics skills are very handy, but can be very tedious and time consuming. It is a good idea to know how to "tweak" images, change colors, crop, scale, etc using Gimp or Photoshoto, etc. But Like flash you may be better off letting an artist do the none technical design work.
Javascript has come a long way (or more accurately browsers have come a long way) since now it seems much easier to get Javascript to work across the various browsers. There is a plethora of quality free javascripts
First, I would say the market is full. Web Designers, unless they are very artistic, are low man on the totem pole. IMO, to say "when I grow up I want to be a web designer" for a teenager today is about like saying, "when I grow up, I wanna drive a UPS truck." That's why the other fellow's humor about flipping burgers is funny, sad, but true. You need to think more long term. Also, beware of the wave of out-sourcing
Go to college, and at least get a Business minor. Most of the technologies that are needed for web development are self-teachable, so (again, IMO), if you want to go into computers you may not needa a CompSci degree. Many organizations look for somebody who is technical, but who understands their industry--hence the business minor advice. By that, I mean, you'll understand a bit more about business. However, a business minor (or degree) is really generic.
I used to do IT, now I'm in law school. I don't necessarily plan to be a lawyer--I presently am inclined to return to IT. Having an advanced degree in an industry also helps your job potential.
When it comes to which languages to learn, HTML is too easy to learn to be mentioned--just follow the advice of others on this list and learn HTML properly, not like the WYSIWYG editors might teach. I'd recommend PHP, Perl, Python, all three. I'd also recommend a systems language (Java, C, C++), Mysql is prefect because it helps you learn the fundamentals of databases at a low cost (free).
Depending on where in the country your are, though, you may have to submit yourself to Mr. Bill. In my local market (I moved from where I did IT), Unix skills aren't as marketable as MS skills.
Anyway, a lot of service IT can be self-taught. So, educationally focusing on something else is good for balance. Business helps you communicate to the business types. Other degrees to other specialties. An advanced degree also helps as well as increasing salary potential.
Finally, Be Flexible.
What those who want activist courts fear is rule by the people.
You say web designer, so I will assume you want to go for a more visual development, than a programming/scripting side of it.
With that in mind I would suggest the following:
Now for the theory. This seperates the person who was good with crayons as a kid from someone who can seriously understand what a website means. You need to learn concepts beyond just simple design. You need to understand how web interfaces work and how users relate to them. Read the articles at use-it.com to get a initial understanding of this. You should understand concepts like the "page fold" and how does it relate to content on the page, how much time should a page take to load, most common page dimensions, what actions people commonly do under certain situations and what link colors people are used to and how should links look like. All of this mainly falls under Visual Information design. You have to know how to communicate what the information is trying to say. If you're the type who likes to go for the big flashy images, then you missed the whole point. If you start off your introduction with "I'm a print designer" or "I come from the print industry" then you need to stop, turn around and go back to the books.
Now for the tougher part. Adding in the developer side of things. If you want to become well rounded, the main questions to ask are:
This is not to discourage but to at least ask the basic questions
If you want to at least have an understanding, then I would suggest...
If you want to do development, then I would suggest...
...if you want to be a designer or a developer.
By the definitions that are used in the circles I am involved in a web designer is someone that mostly is designing the visual, purely front end, aspects of the web site. The web developer on the other hand involves the addition of software development that happened to involve using the web browser/web server client/server paradigm with dynamic content.
Between the two, you will be much more marketable as a potential employee / contractor if you are the developer.
Like any other software developer, you need to be familiar with general computer science topics. Also learning to think algorithmically and having a solid handle on the theories of procedural and object oriented programming and then expand into the languages that are relevant to your specialization - In this case web programming.
Another important prerequisite is an understanding of software life-cycles. Web based applications (yes, a web site is a web application) are no different than their desktop cousins in that they grow, adapt and ultimately reach a point that they need to be updated and replaced with newer iterations of code.
With respect to specific technologies, if you have solid grasp of procedural and object oriented programming, moving between PHP, Perl, Java etc. shouldn't be that huge of a leap. A prime example of this is that PHP and Perl share a great deal of like syntax.
My personal opinion on the "essential" technologies of web development with respect to languages are as follows:
PHP and Perl - If you want dynamic content you need a web language. Java servlets have a little higher of a learning curve, so I would start here.
SQL - If you have dynamic content you need to store it somewhere and flatfiles are poor for performance and developer sanity. Learn SQL (mySQL is a good and cost effective place to start)
CGI - Although CGI is a communications environment to get data to your script when executed server side, and not a language per say, you need to know how it works in your sleep. The moment you have one dynamic thing on a web site you are touching on CGI in some way and just relying on your language of choice to decode passed information to you is not going to cut it in the real world.
Apache - One other thing to mention is that you should also become very well acquainted with the behaviors of your web server. I would recommend Apache for two reasons. One is that it is readily available in an unencumbered form. Second, although there are many fanboys that may pipe up and recommend there favorite although less popular web server. Apache quite simply is dominant because it covers all the bases, performs well and quite frankly makes it so there isn't a major reason to bother with anything else. Apache has a multitude of modules available that extend and enrich the functionality of the base server platform. Knowing how to make use of them is something that you don't want to pass up.
As far as non-essentials to pick up on once you have the above out of the way:
Java - In many places where you are developing a large scale web application, a well placed java applet can be helpful. This can include real-time communications interfaces for chat functionality, or multimedia services.
Flash - I'll be the first to advocate NOT using flash wherever possible, except in some extreme cases. However there is a point to be made that knowing language is a good thing, not for just writing new things, but also for reverse engineering or porting an application to another language.
My $0.02
You don't want to be an HTML designer forever, so:
* Learn how to communicate, make presentations, be very professional.
* Understand usability requirements and learn how to incorporate them into less-than-ideal project environments.
* Think of where you want this field to take you. Keep nursing those skills too.
to establish myself on some decent level or another as a well-rounded, (mostly) standards-based web designer with some backroom web development knowhow. The problem is I have no clue where to begin. HTML, CSS, JavaScript are an obvious start
This is just an opinion, but it would seem to me that if you don't already know a big chunk of html, css, and some kind of scripting language, you're not really in a position to decide that web designer/developer is the right career. Get some experience. Find out if you like it. Then start planning how to enter a career.
As for web technologies, especially on the developer side, be prepared to enter a never ending learning cycle. There are tons of different standards and technologies out there that all have to do with presentation on the web. Many of them are in flux.
As for what a person should learn first... the plethora of technologies makes that an open question depending on what kind of projects you are working on. On the bright side, learning any kind of web programming will move you closer to your goals. Some tips:
* Target rising technologies like PHP.
* Avoid obsolete stuff like ASP.
* Avoid anything that is "company XYZ's blah". For example, Macromedia ColdFusion.
* If you are not a developer, avoid complicated platforms like J2EE or ASP.NET. Simpler scripted languages like PHP or (shudder) ASP will be easier to get going productively.
Also, I don't know what kind of background you are coming from, but you should realize that good web design requires a strong design background. It has little to do with languages. Being from the other (developer) side of the pond, I've found books like Steve Krug's Don't Make me Think and Robin William's Non-Designer's Design Book to be quite valuable and easy to read.
Just make pretty pictures, chop them up, and slap them into Adobe GoLive, poof, you're an instant web design professional! Now open wide and wait for your money to roll in.
Seriously though, at one time I wanted to do web design as a part-time side job, but after creating a couple sites I decided it was a terrible idea. So, unless you enjoy making websites for people that have no freaking clue what they want on their site and aren't willing to provide you with any text related to their website topic, then don't do it.
Less "web designers" == Less worthless websites
The fact people view the programming as trivial is why there are so many crappy, bloated web pages out there. The graphics arts is the part that is trivial... you can make a great informative, usefull, and traffic'd site without any graphics at all. Just look at /. These sites that are all done w/ graphics and flash might be fun to look at but are for the most part very annoying to use... especially for those w/ lower bandwidth.
I would start w/ Jakob Nielsen's book Designing Web Interfaces. That will give you a basic foundation of thinking about a good user interface. Then you might want to read Zeldmans Designing with Web Standards and Cederholms Web Standard Solutions. That will give you a PROPER understanding of standards based html markup and a good intro to CSS. (Read Eric Meyer's books to further your CSS).
As to the programming for web driven apps - I like PHP the best - XML and SQL you would use within PHP. You want to have a good understanding of both of those... SQL especially to hook into database type stuff. Javascript, I'd just get a Cookbook or something - most of what you want to do with that you can quickly pick up from sample scripts.
Remember - HTML Editors are the devil!
i would suggest he learn XHTML 1.1 rather than HTML (start with the latest
That's not advisable. "The latest" rarely works well. In this particular case, you are going to be incompatible with almost everybody. It's a bit silly to go around telling people to use something that is going to cause problems when your only justification is "it's got the highest version number".
XHTML works great in all current browsers
No it doesn't. It doesn't work at all in Internet Explorer (it treats it as soup), and it works less well in Gecko-based browsers than HTML 4.01 (if you don't believe me, take a look at Bugzilla or even the Accept header that Firefox sends).
a compliant, doctype'd page renders faster than HTML 4.0 in Mozilla and IE
Demonstrably false. Internet Explorer can't tell the difference between XHTML and HTML, and Mozilla renders XHTML slower than HTML.
there is no need to suport netscape 3.0 anymore
No, but plenty of other user-agents need supporting, and XHTML support is far from common amongst them.
Learn how to evaluate a complicated mathematical expression. There are examples you can use everywhere but if you don't know how to read the math symbols you won't know how to apply them.
Know how logic works. Conditional statements are what makes a web application do almost everything it does. If this condition, do (a), if some other condition do (b), else do (c). You can copy and paste code to get some functionality to happen but if you don't know how it's logic operates you won't be able to customize it to your particular needs.
Compose things, don't just throw them together. Composition includes balance, hierarchy of importance, and purpose. Use composition when creating the look of a site and when designing the architecture and user flow.... composition tells your audience how to use your site and what is important and what is they should pay attention to.
Marketing and Business skills will help you understand your clients needs as well as aid you in your own personal success whether you work with a company or on your own.
Everything else you learn now will most likely be old-fashioned or worse yet EOLed by the time you get into your career... even if you plan to start working in 2 years... languages come and go, applications change all the time and new ways of doing things are constantly being invented or 'innovated'.
A fool throws a stone into a well and a thousand sages can not remove it.
XHTML barely has any compatability concerns worth complaining about.
No, there are a bunch of them. Things like character encodings. Things like document.write not working. Things like empty elements needing extra spaces. Things like empty elements meaning something entirely different to some user-agents.
The thing is, you might be familiar with them and I might be familiar with them, but somebody just starting out will not be familiar with them. It's best to put off dealing with some of the - quite frankly weird - XHTML peculiarities until they are familiar with developing websites first. There's no need to jump in the deep end.
XHTML 1.1 became a recommendation more than 3.5 years ago. It's not bleeding edge, nor is it risky or dangerous to use it.
You cannot use XHTML 1.1 and be compatible with Internet Explorer and the majority of search engines without going out of spec. Not following the specifications is risky. Even today it is less well supported in Gecko than HTML 4.01 is. It is certainly bleeding edge.
XHTML 1.1 resulted in a reduction in file sizes
You are confusing separation of content and presentation with the move to XHTML 1.1.
not saying that this can't be done in HTML, just that it is encouraged by writing XHTML 1.1
It is encouraged by writing in HTML 4.01 Strict as well.
Caching is not a concern to me, nor is "wasted bandwidth".
Well then I guess you only operate small websites. It's a concern to professional web developers who need to reduce operating costs and server load.
I never said I dont need to validate pages because I use Mozilla.
Then what did you mean by this?
Mozilla will tell me without needing a validator.