Vastly different criteria are applied in different areas of programming:
- depending on the level of a contest, may require either basic knowledge of programming (ifs and loops) + very basic mathematics, or sophisticated algorithms and data structures and problem solving (of course, it’s not binary but rather a spectrum)
- you never code longer than one day. your code is read-never
- writing fast is more important than reading. You use macros to short-cut typing
- there is no-one to ask for help
- job applies a completely different criteria. Depending on the area, you likely don’t need data structures and algorithms.
you work in a team
- most often than not, team members can help you find a solution
- size of projects is noticeably bigger
- readability becomes important
- technical debt
levels. even on the job, the criteria change depending on the level
- juniors are expected to know the language
- middle level developers are expected to know “best practices,” patterns, etc.
- senior developers are expected to have a very broad and deep understanding of programming and selected technology. They should also be good at working in a team, teaching other developers, etc.
as you grow, you also change roles. they all require different skills
- tead lead