It has been ~15 years that I've been into web design where the first 5 was totally amateur, 7 years were for creating client projects and the last 3 is focused on personal ones.
When looking back, I'm thankful to many stuff that helped me improve my skills on web design/development. And, there are some important ones that makes me say "I wish I had..".
This article is mostly focused on the "I wish" part hoping it may help anyone who is new to web design.
They are not the absolute truths, in fact, they may be wrong. They are simply my thoughts based on what I experienced. You decide if they'll fit you or not.
So, starting now. If I had started web design today, I would (share yours in the comments):
Start With PHP
When I started web development, the stability of open source was still a question mark and developers were discussing whether ASP or PHP was more powerful.
As a user of Windows, having Ms Access already installed in my PC and no idea what MySQL was, I started with ASP. Bang!.. wrong move.
ASP is not developed further after 2000 however PHP is improved so much and so is its community, tutorials, etc. Today, it is clearly the most popular scripting language.
There are also many other great languages like Python, Perl, ASP.NET, Ruby, etc. However, learning the most popular one at first is the easiest, most functional and you can better decide which other language you want to learn after that.
Learn JavaScript Very Well
JavaScript was always popular but never as this much. And every new day makes it more popular and required.
It was mostly used for form validations, displaying alerts or pop-ups and knowing few things about it was enough.
Today, it is hard to think of a non-Ajaxed web application, we can pull tweets, Flickr images, draw images, implement animations and much more.
Also, it is the best cure for the biggest headache: browser incompatibilities. And, the HTML5 world will push it more.
Use Frameworks
To me, words like CodeIgniter, Zend, MooTools or jQuery sounded like totally new languages and didn't know why to use them when I already can do anything I want.
After spending few hours to understand their basics and experiencing them, that was the moment when I realized I was coding so slow and not.. that organized.
Why not use something that enables to manipulate images or upload files with ready-to-go functions and validate forms or use Ajax easily and better?
There are awesome frameworks for every language, just spend some time on reading/understanding them, choose one and master it.
Store Snippets
Within time, you start re-coding stuff like a contact form, an e-mail validation pattern ,etc.
I started storing such snippets ~3 years ago (better late than ever) and it now takes me to build a membership module (new user, e-mail validation, forgot password & login) no more than 15 minutes.
Also, in every project, take a little time to look skeptically on the snippets used that will help you to figure out any possible bugs and make the code better (if needed).
Store (or Bookmark) Resources
While building something, I used to say "I had seen something nice that would fit here but can't remember the URL". Pretty sure, you live that too.
Whether it is an icon set, an application or a tutorial, store or bookmark them with a good categorization. That saves too much time.
Learn Tricks Of Image Editing
If you design a website in an image editing application (like Photoshop) and it gets too much time of yours to make it look good, then you may be missing the tricks as they are the one that makes the difference.
Not everyone is a designer, that's ok (I'm not as well) but learning tricks like using filters, gradients, patterns or effects can convert a standard object into something impressive.
Besides the basics, make sure you learn them (following tutorials is a great way).
Never Build A CMS
Many developers don't like ready-to-use codes but prefer to build everything from scratch. That has a reason: "it is usually harder to learn another system compared to building your own".
By thinking the same, I have built various CMSs for years, small to complicated ones or project-specific ones to smarter ones that would fit many projects.
When I look back, I see that none of them were better than WordPress, Drupal, ExpressionEngine, Modx, etc.
There are lots of talented designers/developers creating themes and plugins for these platforms that are making them better and better everyday. Just pick one and become an expert on that.
Start Writing A Blog On Web Design
Even if you are not an expert in a field, writing about a subject helps improving yourself so much.
You share your knowledge, then work hard to share more and better, others comment to your thoughts and so. It is a recursive learning process.
And, meeting new people about the subject is another big plus.
Focus More On Personal Projects
I'm pretty sure every web designer/developer has a great project in mind for months/years but couldn't bring it to life because of the client projects.
Same for me. After 7 years of client projects, decided to quit them all and started building the ones in my mind.
I'm definitely not saying you should do that because it is risky and requires the right time.
However, personal projects are usually more satisfactory as the playground is totally yours and at least making few of them online will be great. They will grow within time (while you're still into client projects) and can easily become your first job (which is good to have options if you ever want to quit client jobs).
Resource from http://www.webresourcesdepot.com/if-i-had-started-web-design-today-and-you/comment-page-1/#comment-184554