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 I got from Jonathan Neal when thinking about this:
And from Tantek Çelik:
In reference to the database antipattern.
On topic, I really liked this article by Oskar Krawczik (founder of JSFiddle): The 4 stages of obsessing about your code.
Basically it says:
By the way, great read Chris!
Rails database migrations seem to get rid of the database antipattern you speak of. They turn out to be a joy to work with, especially if you want to switch databases or get a team member setup on the same project.
Interesting, I find myself asking questions from many levels of the same area at the same time
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.
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.
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?”
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!!!
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?
I think that’s the biggest issue that experts have when trying to help beginners. Experts will be asking questions back to the beginner when the beginner is just looking for answers.
Example:
Beginner: How do I do XYZ?
Expert: Well, why are you trying to do it that way? Have you considered doing ABC?
I fall into this trap all the time in the forum. You really want to help the person get to the best answer possible but forget that you’re skipping over years of experience at the “Intermediate” level that provides that really deep understanding of the subject.
Well put.
I’ve been helping a friend begin his journy into the web and its really dificult to rain in my urge to over complicate and over explain.
I like ite idea of having some simple ‘Beginner’ questions to try and keep my frame of referance within.
I’m surprised you didn’t mention structuring HTML for SEO.
I’ve always praised the motto:
“The more I know, the less I know”
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!
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.
I’m commenting only to say the Zero/Hero image is incredible. Who created that?
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.
It Helpfully for me ..
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..
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.
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.
Regarding HTML
Expert
– What tags do I use for what? lol.
That is so true it’s not funny!
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!!
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.
For CSS right now I feel comfortable with LESS but really worried about how to deal with cross browser issues. Thanks for the Post.
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.
did you test ur blog in ie 6,7,8 ? It’s terrible :|
Great Post!!! It’s not like we didn’t know about it but it was fun for me to read!
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.