Questions about what to focus onskill wise to be succesful

I am looking at becoming a part time freelancer in the future to generate some secondary income. I mainly want to design sites for small businesses, non-profits, and community organizations and possibly wordpress theme development. I have a pretty solid understanding of html, css, and general web design principles. I haven’t dove much into HTML5 or CSS3 yet though. I have also started working with wordpress. My question is should I continue to focus on becoming more of an expert in just HTML and CSS or should I branch out and start learning PHP to further dive into wordpress? Is it better to be a generalists who has a variety of programming skills or stay with a narrow focus and become really good at just a couple of areas?

Any help would be greatly appreciated.

Bryan

If you’re going to freelance, the broader your skill set, the more likely you will be in demand.

I wouldn’t worry about html5 atm because it is still in development and it will be a few years yet before it is finalised and officially recommended by the W3C. In addition to the skills you already have, maybe consider spending some time building up your javascript skills (for client side functionality) and PHP for server side processing, especially if you will be building database driven websites. Skills in SQL will be a must have if working with database driven websites.

There are millions of people out there who can write HTML and CSS, with many of them in developing countries that’ll do it for far cheaper than you ever could. As a result you’ll want to rely on your design skills if you’re marketing yourselves as a front-end guy.

On the subject of WordPress, if you’re using it as a CMS then you’re doing it wrong. WordPress can work as an incredibly basic CMS for clients, but you’ll find that it is often viewed as a sign of inexperience or a lack of development ability. If you’re starting at the bottom then learning PHP just to handle WordPress probably won’t make you much of a developer either.

If you want to be a developer, then my canned response is the following advice from Joel Spolsky from the [url=http://programmers.stackexchange.com]Programming StackExchange for someone aiming to become a programmer.

I usually prescribe the same sequence for anyone who wants to learn programming. It’s very theoretical, but it lays a good foundation. It should take three or four months of fulltime study, but programming isn’t something you learn overnight.

If you can’t get through this sequence, you’re not going to be able to program, so you might as well give up now.

Code, by Charles Petzold.
The C Programming Language, K&R
The Structure and Interpretation of Computer Programs, Abelson and Sussman.

My rule is: work your way through those three books by sheer force, if necessary. Ask any questions you have, but only after struggling to figure it out on your own. If you can make it through those three books, congratulations, you’re a programmer, now I can throw you PERL IN 15 MINUTES or whatever rubbish is at the bookstore in the Big Bookcase of Java and you will manage fine. If you can’t make it through those three books, give up, go home, you’re never going to get it.

I don’t think you need to learn C and Scheme, to be honest. They’re just a foundation for future learning. These two fairly simple books are both very simple on the surface (C and Scheme are super-easy languages) but they get very deep on the real art of programming without wasting time on confusing syntax, so they are excellent to start to re-wire your brain to be a good programmer.

Attempts to take a shortcut and go directly to learning the exact thing you want to learn right now (like starting with C# and ASP.NET) are doomed.

As already stated, the broader your skill set the more likely you’ll be in demand. However, a jack of all trades makes you a master of none, and no one wants to hire someone that is okay at everything.

After a couple of years experience you’ll naturally find yourself refining your skills in a specific area. Most developers I know with a ton of experience tend to stick to what they know really well and they often get paid very well for doing that one thing.

You need to become an expert. It makes no sense to be decent in several different languages. What’s going to make you stand out is not the amount of languages you know, but how good you’re with them. If you work is great then people will remember you, but you will not be remember and wanted for subpar results.

I agree with Ultimate. If you are going to be a front-end developer working only with HTML and CSS, you’ll wanna make sure you’re a pretty good designer. Not just run of the mill template man. Being able to do custom web designers will get you the furthest in front end work.