DEV Community

Discussion on: What is Your Competence Level?

Collapse
 
curtisfenner profile image
Curtis Fenner • Edited

The difference between "stage 1" and "stage 2" should not be language. The fact that semicolons are optional in JavaScript has absolutely nothing to do with the competency of people who use it. (Neither does it, nor the lack of static types, make JavaScript any "easier" as you are implying; in fact, both of these make wielding JS effectively harder).

The difference should be how reliable your code is (and, maybe more readily seen, how reliable it needs to be). If all you are writing is one-off spreadsheet processing code, a) your code doesn't need to be very reliable, it just needs to work on the one input, and b) if it's slightly wrong (e.g., using population variance instead of sample variance), it probably wouldn't really matter anyway. Being able to write code that (mostly) works in simple cases is in itself a feat; but when you can write truly robust, reliable code, you have progressed.

Also, the apex of of programming ability also need not be towards the hardware. If we're going by activities that require a significant amount of specialized knowledge and experience, there are other extremely complex aims, such as building software systems that are extremely fault tolerant and/or consistent when distributed geographically, or solving extremely complex algorithmic problems effectively (such as graph isomorphism, schedule planning, and constraint satisfaction)

Collapse
 
engrumair profile image
Umair

Hi Curtis, Great analysis.
With scripting, I wanted to imply No Filling work, No remote connections, No threading work and etc. Additionally, nobody is going to write 10000 lines of JS code that is going to run in the client browser. (Leaving semi-colons is a lesser concern).Also, reliability is a relative term. One can write an unreliable device driver and reliable input validation for a web-page.

I believe apex of programming is more geared towards hardware. How would you write or even choose for the fault-tolerant systems when there is huge technical debt of the underlying hardware.

Building a geographically distributed systems in only viable if one understands how to distribute tasks on a single system/OS and understand underlying concepts of scheduling and resource management.

Finally, complex algorithms problems can be solved, studied and analyzed without writing a single line of code and using the good old mathematics. As I know there are people who are good at algos/maths but could not implement bubble-sort in JavaScript!

Collapse
 
curtisfenner profile image
Curtis Fenner

nobody is going to write 10000 lines of JS

This is outright false. First, distinguishing between the browser and not is meaningless; you are singling out the language, not the environment. Second, projects like Google Maps, Gmail, etc, are hundreds of thousands of lines of client side JavaScript; Slack is definitely at least tens of thousands; etc.

Finally, complex algorithms problems can be solved, studied and analyzed without writing a single line of code

The correct implementation of algorithms is it's own skill that requires significant experience and knowledge. Exactly because of what you said, being good at math does not mean you are good at programming, is why I called it out.

Thread Thread
 
engrumair profile image
Umair

I believe that all great frameworks/products i.e Gmail are written by at least stage 4 programmers. Secondly, it is not the norm.

The last point is true. Correct implementation of algorithm is a programming/engineering skill. Not studying or analyzing. So, therefore, there is no 'Apex of Programming' if you only know the algorithms.

If one is good at implementing algorithms in isolation that would be level 3. If one is great in implementing algorithms AND integration of other systems that will be level 4.