There are three layers to skill: Apprentice, Journeyman (or Professional) and Master. In programming, the master craftsmen separate into designers and architects, See McBreen's book on Software Craftsmanship.
Basic Level of Competence -- Journeyman
Can you write code? Does it compile? [Seriously, if you have trouble getting things to compile, you're not very professional.]
Can you write unit tests for that code? [If you don't have or use unit testing tools, you're not really very professional.]
Does the code work when you're done writing? [If you have debugging problems, or there are details that never seem to work right, you need someone to oversee your work; you're an apprentice, not a professional.]
Does it meet minimum quality standards? If you posted it here would you be ignored because it was acceptable? Would you be upvoted because it was actually good?
Does it look like open source projects in the same language?
Do you know what are in the libraries that come with your language?
Can you find things in the library documentation?
[None of this involves trivia or obscure language features. This is basic, core skills at building stuff that works.]
If you purport to be a web developer, can you build and install into a the web server and show that it actually works?
If you purport to be a desktop developer, can you build something that someone else can install and run and see that it actually works?
The next level of skill is being a master craftsman and designing for journeymen. You need to know more because you have to do the above things without personally typing the code, but guiding others to typing the code you imagined.
The next level of skill is architecting so that journeyman can become master craftsmen by creating designs for apprentices to implement. Here you need to imaging how people will create designs from your architecture.