Las cosas que como programador deberías saber (Parte 1)

* Este post esta inspirado en una excelente charla a la que asisti mientras estudiaba en Hack Reactor, definitivamente fue una de las mejores charlas que escuche en mucho tiempo. Un agradecimiento gigante a Laurie Voss CTO de NPM por sus enseñanzas. Para dudas, sugerencias y mas... me encuentran en twitter como @chitopolo. *

Bueno comencemos.

Que es lo mas valioso en un buen programador?

Según Laurie, después de 18 años de experiencia en el rubro del software y luego de haber consultado con distintas empresas en el transcurso de su carrera, la simple pregunta de "¿Que es lo que quisieras que todo programador sepa y que habilidades quisieras que todo programador tenga?"

Y es por las respuestas que llegamos a lo que viene a continuación.

No sabemos nada!

Todos, incluyendo programadores con experiencia.
Primero porque se trata de que no sabemos que no sabemos, y porque tampoco sabemos lo que si sabemos y esto tiene un nombre:

El efecto Dunning Kruger

Que es el efecto de dunning Kruger?
Según wikipedia:

El efecto Dunning Kruger es un sesgo cognitivo, según el cual los individuos con escasa habilidad o conocimientos sufren de un efecto de superioridad ilusorio, considerándose más inteligentes que otras personas más preparadas, incorrectamente midiendo su habilidad por encima de lo real. Este sesgo, es atribuido a una inhabilidad meta-cognitiva del sujeto de reconocer su propia ineptitud. Por el contrario, los individuos altamente calificados tienden a subestimar su competencia relativa, erróneamente asumen que las tareas que son fáciles para ellos también son fáciles para otros.

Como funciona el experimento basado en dicho efecto.

Se dividió a un grupo de personas en 4, con el objetivo de que resolvieran un problema matemático. En el primer grupo estarían los mejores en el area y en el ultimo grupo los que no eran sobresalientes en la misma.

Y por su puesto las personas del primer grupo eran increíblemente buenas, sin embargo ellos no sabían cuan buenas eran respecto a los otros grupos por lo tanto ellos podrían calificar su desempeño como promedio, o pensar que el problema fue sencillo ya que todos los miembros del grupo lo resolvieron sin ninguna complejidad.

Aquel sentimiento de subestimar lo que sabes tambien tiene un nombre y es el de "Síndrome del impostor", de esto hablaremos luego de acabar con el ejemplo.

Ahora hablemos de las personas del ultimo grupo, las de "bajo desempeño en matemática", en este grupo, los integrantes no podían reconocer que eran malas para aquella tarea, a pesar de que podrían admitir que seguramente habían personas que eran mejores que ellas. Obviamente debido a que no pueden percibir una medida de quien es realmente bueno para esto, porque si lo hicieran se darían cuenta que si son malos en esto.

Pero de esto se trata el experimento, ningún grupo sabe que grupo es si es del grupo de los buenos buenos o de los malos malos.

Y lógicamente todos los grupos, se sienten totalmente orgullosos de sus capacidades debido a que no saben de las capacidades del otro grupo.

Asi que siempre cuidate de sentirte orgulloso por saber mas que los demás, porque no sabes en que grupo te encontraras.

Cuidate del sindrome del impostor

Es un problema muy común en el mundo Tech, por gente que no creen que de verdad son muy buenos en lo que hacen, inclusive ellos no están seguros de cuan buenos son, o de que tal vez no son para nada buenos y se sienten fuera de lugar, cuando definitivamente pensar así es simplemente envenarse la cabeza.

También existen personas que creen que son increíblemente buenas y creen que la demas gente es inferior.

Para algunas tareas tu podrías estar en el ultimo grupo del experimento de Dunning Krugger y para otras podrías estar en el primer grupo del experimento, eso quiere decir que por ejemplo, si tu eres la mejor persona en CSS, eso no quiere decir que tengas que ser la mejor en algoritmos, no es ni si quiera predecible.

Si estas pensando en empezar tu startup y crees que eres muy bueno para desarrollar apps, y dices voy a revolucionar el mundo de la salud, NO! eso no quiere decir necesariamente que tu vas a ser muy bueno en dicho tema solamente porque eres muy bueno haciendo apps. Es decir, no te metas en un sector por haber asumido que eres tan bueno en cierta cosa, que seguramente lo eres en la otra, puede que si, pero eso no siempre aplica.

Dunning Kruger Effect

Bueno, ahora empecemos con lo que de verdad nos hace mejores!

¿Eres de los que typea sin mirar las teclas? ¿Tienes idea de cuanto tiempo puede ahorrarte el enfocarte a mejorar en ese aspecto?

Si en este momento puedes escribir 30 palabras por minuto y trabajas 8 horas al día versus escribir 40 palabras por minuto (lo cual no es difícil de conseguir) estarías ahorrando una hora al día, y ahorrar una hora al día en un año puede ahorrarte meses de trabajo en las que podrías usar es tiempo a tu favor, en el que puedas hacer cualquier cosa.

Aplica este principio para TODO

¿Tu computadora es muy lenta?, entonces comprate una computadora mas rápida, te esta robando la vida.

¿Vives muy lejos y te demora mucho el llegar hasta tu trabajo? Mudate!, imaginate usar a tu favor todo ese tiempo que pierdes al ir a tu trabajo!

Si tu proceso de Deploy es muy lento, si tu programación de código CSS es muy lento, si tu relación esta llena de drama y tienes que perder toda una tarde tratando de arreglar un problema, probablemente algo así como con tu pareja, tambien aplica!

Una de las otras herramientas con las que puedes pasar mucho tiempo pueden ser por ejemplo, Unix, se muy bueno con la linea de comandos o terminal, aprende los atajos de teclado, aprende Bash y grep, no sabes cuan util puede convertirse estas herramientas cuando las conoces bien, porque los pequeños bachscripts pueden ser muy útiles, te pueden ahorrar muchísimo tiempo, si te pasa que tienes que escribir 15 lineas de comando todos los días, porque mejor no escribir un par de lineas de comandos bash para que bash por mi añada esas 15 lineas y ya este listo!

Personas que son buenas en la linea de comandos, es de predecir que seguramente son excelentes en general.

Otra de las cosas en las que debes ser bueno, es en tu editor de texto, ya sea en VIM, en NANO, o cualquier otro.

Si puedes escribir rápido y ser bueno en tu editor, todo lo demás se vera acelerado.

Estas son unas de las cosas tan simples y "obvias" en las que no deberíamos perder el tiempo de repetirlas sin embargo hay cientos y cientos de personas en la industria que escriben algoritmos increíbles usando 2 dedos de cada mano.

HTML

Html significa muchísimo y no solamente en su semántica. No solo es una forma de presentar información, sino que es una forma de definir la información, esto es es el header, este es el body, este es un navbar, esto es código, etc etc.

Pensar de esta manera es ideal, porque le da sentido a tu contenido y no solamente para los buscadores.

Aprende a lo que en verdad es HTML y como funciona.
La etiqueta < dl> por ejemplo, es muy importante ya que te permite manejar key-value pair en tu código html, es como una base de datos sql en tu propio HTML!

  • Forms grab-bag
  • Placeholder
  • select multiple
  • labels for = "id"
  • optgroup
  • Autocomplete = off
  • autocapitalize = off

Aprendelos!

El código tiene olor

  • Leerán el html que construiste y te juzgaran
  • No pongas tus comentarios en el html, pon comentarios en el código que genera tu HTML, tus usuarios no obtienen ninguna utilidad al saber que tus comentarios están en el HTML.
  • No escribas nada relacionado a la presentación (CSS) en tu código HTML, si estas interactuando con la forma de presentación en tu HTML probablemente lo estas haciendo mal.
  • No utilices < br>

CSS

Master the box model

Entiende el modelo Box.
css Box Model * No pierdas tiempo cambiando parámetros y viendo los cambios realizados una y otra vez. * Si te pasa esto es porque no entiendes el modelo Box CSS en lo que de verdad se representa. * En vez de acordarte lo que hiciste antes, es mejor que lo entiendas muy bien.

Stupid CSS tricks
Box-sizing: border-box  

usalo tus paddings y margins tendrán mas sentido

Display: table-cell  

centraliza el contenido de lo que tienes en tu tabla.

@media selectors 

Quieres darle compatibilidad con smarthphones a tu web, aprende a usar "@media selectors"

Si no entiendes como funcionan las cosas, no sabras como hacer debugging a tu código

Attribute selectors, y otros, aprende a usarlos!

Algunas otras cosas respecto a CSS

Animaciones en CSS son excelentes!

SASS y LESS, aprende a entender lo que hacen!

Javascript del lado del cliente

No hay mejores formas de escribir javascript, cada uno tiene la suya.

No hay una sola forma de escribir JS

No hay una forma especifica para escribir cualquier lenguaje, hay muchas cosas que debemos evitar y obviamente patrones y anti patrones que son muy importantes de tomar en cuenta.

Aprende Javascript

No quiero decir CoffeeScript o jQuery, si no Javascript, eso es lo que corre en el navegador!, porque eso es lo que tendrás que debuggear.

La segunda parte estara muy pronto, mientras tanto sígueme en Twitter! @chitopolo

Rene J Polo

Read more posts by this author.

Cochabamba - Bolivia

Subscribe to Chito Tech Tips

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!