Question – What milestones must you reach before you can be considered an intermediate level developer?
Programming isn’t easy. I know myself as a self-taught programmer from a non-technical background.
One of the key difficulties is that there’s really no one to tell you whether you’re there yet. At what magical point do you transition from being a programming learner to a programmer.
Had the opportunity to touch on this in a reply on eunak.com which a friend is doing as a forum for young(er) people to ask questions related to their careers. Putting my reply below!
What milestones must you reach before you can be considered an intermediate level developer?
This question has been on my mind for a long time but Google, Quora, and Reddit did not give me a definite answer yet. There are 3 common job titles for develpoers: Junior, intermediate, and senior. As a self taught developer, this roadmap is unclear to me. Hence I would want to know from people in the software dev industry (especially in LAMP stack development) 1. The type of applications/functionatlities that you have to build. (E-commerce, blog, Enterperise resource systems) 2. The specific amount of knowledge that will allow a junior developer to be considered “intermediate level” ?
Self-learnt programmer and self-proclaimed “intermediate developer” too so hopefully I can lend my two cents.
There really is no fast rule to it but my own classification would be this:
The tiers I define
Junior: You are able to *edit* current features and do bug-fixing. High juniors will also be able to introduce new *features* into an existing project, albeit with some guidance from a senior developer.
Intermediate: You are able to introduce new features into an existing code base independently and build a product from scratch. If you have experience building and deploying a commercial product (that means no calculator apps etc.) you will by most means be considered at least an intermediate.
Senior: You are able to make proper decisions regarding beyond just making a workable product but things such as appropriate technologies to choose, a good deployment flow, knowledge about security measures *and their trade offs*, macro-decisions regarding how to reduce developer cognitive burdens and make hiring easier etc..
My own tiers for WordPress
This should be a rough guide that applies to all types of programming but the exact definition of what each means differs according to the tech stack. For example if it’s PHP, my first question is if you’re talking about a framework like CakePHP, FuelPHP, Laravel or something like WordPress? I can’t speak for the former but as a WordPress Engineer I’ll say the following.
Junior WordPress engineer – Able to do theme edits. Mostly confident CSS and HTML too. Understands to some extent how to WordPress loop works.
Intermediate – Can develop a theme from scratch. Able to use custom fields (and know which plugins to use and not). Can handle CSS and HTML confidently.
Advanced – The above but also being able to develop plugins which will work for the general ecosystem. Maybe being able to develop a complex and commercializable WordPress theme. Use of WordPress’ API system. Possibly optimizations regarding code splitting etc.
Each ecosystem has their own set of benchmarks so it may be better do talk directly to someone in the field.
Oh but for intermediate engineers there is some basic computer science concepts that apply to all fields that you are likely to be expected to know. Ask yourself about whether you can answer the following confidently:
- What is Object Oriented Programming?
- What is Functional Programming?
- What is the difference between passing a variable by value and by reference.
- What is the point of an early return in a function?
- What is the stack and what is the heap?
- What is the difference between client-side scripting and server-side scripting? (This is more junior but well.)
Hope this helps!