Grow your CSS skills. Land your dream job.

How Web Tech Concerns Change

Published by Chris Coyier

As a beginner in any specific web tech, your first concern is "what is this and how does it work?" As you level up, those concerns change. You may still learn about about how it works as you dive deeper, but other concerns will emerge the more you know, the more you use it, and the more work of others you are exposed to.

CSS

Beginner

  • How do I make stuff look how I want?

Intermediate

  • How can I keep this under control?
  • Can/should I use frameworks/libraries?
  • How do I deal with cross-browser problems?
  • Should I be using a preprocessor?

Expert

  • How can I write less of this?
  • Can/should I create frameworks/libraries?
  • Is testing possible?
  • How can I improve the tooling?

JavaScript

Beginner

  • How do I make stuff happen?

Intermediate

  • How can I organize this?
  • What are the best practices regarding speed and efficiency?
  • What jobs are best left to other web tech?

Expert

  • How can I write less of this?
  • Are Preprocessors appropriate for this?
  • How can I keep this really fast?
  • How does a team write this?
  • How do we make less mistakes?

HTML

Beginner

  • What tags do I use for what?

Intermediate

  • How can I write this really efficiently?
  • Am I being as semantic as I can be?
  • Am I being as accessible as I can be?

Expert

  • What tags do I use for what? lol.

Back End Languages

Beginner

  • What is the syntax?
  • How do I perform basic loops and logic?

Intermediate

  • How do I organize this?

Expert

  • How can I keep this fast?
  • How can I keep this secure?
  • Am I using the right languages for the right jobs?

Databases

Beginner

  • How can I store and get stuff?

Intermediate

  • How do I structure this intelligently?

Expert

  • How can I scale this?
  • How can I predict our future needs?
  • What types of databases are right for what kind of data?

What does it mean?

I'm not sure exactly. It's just interesting to think about. Here's some maybes:

From an education perspective it would be interesting to know how many people there are out there at each level and how interested they are in getting help on those questions.

From a hiring perspective it may help identify the relative skill level of hires by seeing what kind of things they are concerned about at the moment in a particular area.

From a self improvement perspective it may help you understand what is in store for you as you level up.

Comments

  1. Comments I got from Jonathan Neal when thinking about this:

    For me, the curve was generally consistent, I wanted to learn how everything worked, then I wanted to learn how to avoid the pitfalls of the language / browser, then I wanted to learn how to scale it.

    And somewhere between each of those steps, collaboration is the best means to grow.

    And from Tantek Çelik:

    There is a general beginner vs. expert pattern: trading off initial setup for maintainability

    In reference to the database antipattern.

  2. Interesting, I find myself asking questions from many levels of the same area at the same time

  3. I would say I’m at an intermediate level and one of the biggest problems I have is the daunting prospect of knowing what you don’t know. Your aware of most of the languages and tools you need to do certain things but because there is so much to know its easy to get overwhelmed by it all. Its incredibly useful if you have a few people in the know to point you in the right direction. There are a lot of guides, tutorials, books and manuals that assume you know something and if you don’t whatever your reading / studing very quickly goes over your head and you are exposed to yet more things you don’t understand. Quite often if you take someone through the steps and explain things, it all becomes very clear.

  4. Crispen Smith
    Permalink to comment#

    In your post article comments you called out maintainability. But as I grow I find that maintainability and portability really my biggest new point of emphasis in any field; Once you get to the “is it fast, is it pretty” point, the next thing you start obsessing over is making it agnostic and maintainable. Having drop-ins or mix-ins or plug-ins that do things you need to do often are a key part of the process.

  5. Worrying about preprocessors and frameworks in CSS I would say are more advanced topics. I also think an indicator of an intermediate person is “should I read the specification?” but advanced is “should I contribute to the specification?”

  6. I think though the web is more open, we must also build a way to categorize people.

    When you are a beginner at a language, it is difficult to find the set of people at your level. This makes the beginners unable to collaborate effectively than the experts. Something must be changed!!!

  7. Patrick
    Permalink to comment#

    Being self taught in both CSS and HTML I was interested to see that I’m thinking like an expert and seem to have missed some Intermediate stages out. This maybe has higlighted why I struggle with some things I’d like to do but can’t seem to get right.

    Obviously not asking myself the right questions.

    Nice thing about CSS Tricks is that no matter what level I’ve been at it’s always provided the answer or at least a gentle push in the right direction.
    Thanks , or should that be Thanks Again?

  8. Ephram
    Permalink to comment#

    I’m surprised you didn’t mention structuring HTML for SEO.

  9. Michelle
    Permalink to comment#

    Interestingly, I clearly fit into the intermediate categories on each of these, but I can see my thinking shift more toward the advanced end.

    There’s definitely a difficulty in getting information in the intermediate spectrum for those of us that are self taught. I don’t know if it’s a lack of information that is accessible to someone coming from the beginner stages, or if it’s just that there’s SO much out there that has interdependent information (You have to understand concept A to understand concepts B and C, but concept A includes some of concept D, etc.) but I’m finding it difficult to get to the more advanced “how to do it” topics. Everything that isn’t dead simple and entry level or advanced “how to make it better” topics seems to be too specialized to be of much use.

    It’s a jungle out there!

  10. Keith
    Permalink to comment#

    Great article! One item I think that should be address is in each section would be.

    Beginner: Read and use code from blogs/resources without checking author credibility/date posted.

    Intermediate: Knowing where to find current/valid information from trusted sources.

  11. Nolan Reed
    Permalink to comment#

    I’m commenting only to say the Zero/Hero image is incredible. Who created that?

  12. Nelson Hereveri
    Permalink to comment#

    Thanks for the article, as it is a great contribution in making our resume.

    I am at intermediate level in most, but not think it’s a fault of mine, but it is very difficult to maintain a cutting edge, although no specific point is technical.

  13. It Helpfully for me ..

  14. Hi Chris,
    Its very true that first of all we must know that what it is and how it works because i use the same strategy to learn the things and languages..

  15. There’s an almost beautiful naivety when you’re learning, your not so concerned with best practises or old techniques – you just kind of find what works and learn from your own mistakes. The more you learn about cool new techniques as you progress the less you use them in real-world as you resort to your ” it just works” methods. Its always good to discover things for yourself.

  16. I think you focus on the individual rather than a team member here. Maintainibility, readability, caring about version control, mentoring, meeting skills (I really hate scrum) are all the area of an expert.

  17. Regarding HTML

    Expert
    - What tags do I use for what? lol.

    That is so true it’s not funny!

  18. Michelle M
    Permalink to comment#

    All so true! Based on this, I’m solidly in the “intermediate” level and like many others in these comments I suspect it’s because I’m self-taught and work alone. I read a ton of tutorials and tips/tricks stuff but nothing compares to actually collaborating on code.

    I would love to participate in some kind of mentorship program, where I could share my knowledge with a beginner, while myself learning from an expert. Having someone to go through just one project with me (I’m a WordPress developer so I’m playing with CSS, PHP, Javascript/jQuery and MySQL) to share their “your code would be more efficient if…” tips would be absolutely amazing.

    I’d also be up for helping to set up this kind of pay-it-forward program with anyone out there who thinks it might be worthwhile. Thanks for the super-thought-provoking post Chris!!

  19. So true about the HTML!!

    Especially now that HTML5 has come out, and you have to relearn that you don’t need use the / in the br tag and other little goodies.

    Thanks for the good laugh.

  20. For CSS right now I feel comfortable with LESS but really worried about how to deal with cross browser issues. Thanks for the Post.

  21. James
    Permalink to comment#

    Solid intermediate in areas, and beginner in others. It’s great have these stages visualized and really makes you reflect on where you are and how to get to the next level.

  22. Henry
    Permalink to comment#

    did you test ur blog in ie 6,7,8 ? It’s terrible :|

  23. Michael Almyros
    Permalink to comment#

    Great Post!!! It’s not like we didn’t know about it but it was fun for me to read!

  24. Umer Iftikhar
    Permalink to comment#

    Just came while searching for introduction to css. This post just reminds me my beginning days of learning HTML,CSS and Javascript. Now being a programmer when I go to my post, this post reminds me so many things. :) Keep it up.

This comment thread is closed. If you have important information to share, you can always contact me.

*May or may not contain any actual "CSS" or "Tricks".