If you don’t understand how statements in JavaScript are terminated, then you just don’t know JavaScript very well, and shouldn’t write JavaScript programs professionally without supervision, and you definitely should not tell anyone else how to write their JavaScript programs.
de las tonterías más grandes que he leído.
Casi todos los lenguajes tienen casos muy extremos donde hasta los más profesionales acaban cayendo, el mejor ejemplo es C y como ha plagado de bugs de seguridad por buffer overflow casi cualquier cosa que está escrita en este lenguaje, incluso librerías y programas que están hechos por gente de mucho nivel como openssl o curl.
Está bastante aceptada la idea de que cuanta más carga cognitiva tenga que tener el programador, cuantas más cosas tenga que tener en cuenta a la hora de escribir el código, más probabilidades hay de que cometa un error, sea lo profesional que sea, por que al final es algo humano, por eso C++ es un lenguaje muy criticado debido a su complejidad.
En python no hay que poner ; en ningún sitio, en C en todas las sentencias, en javascript no hay que ponerlo pero ojo que en ciertos casos si no lo pones puedes tener problemas. Esto es a todas luces una cagada por parte del lenguaje, que es herencia del diseño original de js que ya se sabe que tenía algunos aspectos problemáticos. Cuando un lenguaje tiene estás cosas (como pasa en casi todos) la solución es ayudarte a ti mismo todo lo que puedas para evitar caer en algún caso extraño, y no la cita esa que has puesto de "los verdaderos pr0 133t no caen nunca en esos fallos, no seas n00b y aprende cada detalle absurdo del lenguaje", por eso me parece más sencillo simplificar y ponerlo siempre aunque no sea obligatorio.
Y sobre lo de usar un linter para que te ayude a cazar cosas problemas no recuerdo haber dicho nada al respecto ni haber dicho que no lo uses, de hecho al contrario, está más bien en consonancia con lo que digo de cuantas menos cosas tengas que tener en tu cabeza mejor, yo también recomiendo usar un analizador estático que te cante problemas, lo que he criticado ha sido recomendar no poner ; en un lenguaje donde no ponerlo puede ser problemático.
Ah y si ya nos queremos poner técnicos para ver quien sabe como funciona js y quien no, el ; no es opcional como tal, si no que el intérprete lo inserta de forma automática al evaluar el código en caso de que tú no lo hayas puesto, y este es el motivo por el que se pueden producir sentencias ambiguas ya que si no lo pones tú de forma explicita el interprete lo puede insertar en otro sitio que no es el que esperabas y cambia el significado del código.
Pero vaya que no deja de ser una opinión, que cada uno haga lo que quiera, yo sigo con mi recomendación de ponerlo siempre y fuera.