Varias personas en React Conf me pidieron consejos para ser un mejor programador. Por alguna razón, la gente me ve como un programador bastante avanzado que vale la pena escuchar. Pensé que valdría la pena escribir mi “modelo mental” de cómo he enfocado la programación a lo largo de los años.
Permítame tener claro que estos son solo algunos consejos para mejorar sus habilidades. En última instancia, necesita averiguar qué funciona mejor para usted. Estas son solo cosas que he encontrado útiles.
- Encuentra personas que te inspiren, pero no las idolatres.
A lo largo de los años ha habido muchas personas a las que he admirado y he estado buscando nuevas tecnologías. Aprendí mucho simplemente confiando en que tenían razón y profundizando en las cosas en las que trabajaban. Estas personas tienden a ser muy productivas, brillantes e inspiradoras. Encuéntralos y deja que te inspiren y te enseñen.
Sin embargo, asegúrese de no idolatrarlos. Es fácil parecer intimidante de un feed de Twitter, pero si observas cómo funcionan en la vida real, verás que no son tan diferentes. Hacks por todos lados, etc. Todos estamos experimentando. Por último, no confíes ciegamente en ellos; Si no estás de acuerdo, compromételos y aprende de ello. Algunas de mis conversaciones más productivas sucedieron de esta manera.
- Como INTJ, ¿qué debo hacer para mejorar mi inteligencia emocional?
- ¿Cómo mejoraste en la resolución de problemas en tu campo?
- ¿Cuál es tu mejor manera de matar la pereza?
- Pienso demasiado y complico cada situación. Como me detengo
- Cómo enfocarte en mejorar la vida de los demás en lugar de en ti mismo
Mi configuración de Emacs es un desastre. No sé por qué se interrumpe mi autocompletado de OCaml (se ha roto durante más de un mes). No automatizo las cosas y tengo que buscar en el historial de mi shell para encontrar los comandos que necesito a veces. Escribo el código más feo al principio. Pongo las cosas en el objeto global hasta que sé lo que estoy haciendo. El programador más experimentado usa hacks todo el tiempo; la parte importante es que estás haciendo cosas.
- No devalúe su trabajo. Los programadores más nuevos tienden a sentir que su trabajo no vale mucho porque son nuevos. O quizás eres un programador experimentado, pero trabajas en un área nueva que te hace sentir incómodo. En mi opinión, algunas de las mejores ideas provienen de los programadores más nuevos que ven mejoras en la tecnología existente que los que ya tienen opiniones formadas no ven. Su trabajo vale la pena, no importa qué. En el peor de los casos, si su idea no funciona, la comunidad habrá aprendido mejor por qué ese enfoque no tiene sentido. (Una nota para la comunidad: depende de nosotros ejecutar esto y dar la bienvenida a los recién llegados).
- No te sientas presionado a trabajar todo el tiempo. Con la nueva tecnología que sale cada día, puede sentir que el mundo seguirá sin ti si te tomas una noche libre. Eso no es cierto. De hecho, trabajará mejor si se desengancha mucho. Tu perspectiva será nueva y, de manera inconsciente, surco nuevas ideas cuando no estoy trabajando. La mayoría de las cosas que se lanzan todos los días son solo una repetición de las mismas ideas. Las cosas verdaderamente revolucionarias solo suceden cada pocos años. Una buena charla para ver sobre este tema es Hammock Driven Development.
- Ignorar la pelusa. Una de las formas más grandes en que puedes mejorar objetivamente más rápido es ignorando “pelusa” que en realidad no mejorará mucho tus habilidades. Otra forma de decir esto es “usa tu tiempo sabiamente”. Solo tienes tantas horas en el día y si lo dedicas a cosas más profundas, verás una gran diferencia en http://time.Así que, ¿qué es “pelusa”? Depende de usted, pero puedo darle algunos ejemplos de lo que yo considero pelusa: sintaxis de lenguaje, API de biblioteca y configuración de herramientas de construcción. Aprender una nueva sintaxis de ES7 JS no te hará ser un mejor programador tanto como aprender cómo funcionan los compiladores, por ejemplo. Adoptar una nueva biblioteca que implemente la misma idea pero con una nueva API no es tan interesante. Todas estas cosas son importantes, por supuesto, pero recomiendo pasar más tiempo aprendiendo conceptos más profundos que lo recompensarán por años. Aquí hay una pregunta que me gusta preguntar: ¿pasa la mayor parte del tiempo haciendo que su código se vea “bien”? Si es así, te recomiendo no enfocarte tanto. Tu código va a cambiar mucho con el tiempo de todos modos. Es mejor centrarse en los problemas centrales que intenta resolver y pensar detenidamente en sus capas de abstracciones. Después de que haya clavado todo eso, puede pasar un poco de tiempo puliendo su código. (Esto también se aplica al principio DRY. No te preocupes tanto. Siéntete libre de duplicar).
- Profundiza en investigaciones pasadas. Si estás entusiasmado con una idea, es muy tentador sentarte y ponerte en marcha de inmediato. Pero no debes hacer eso hasta que hayas hecho una investigación superficial sobre cómo las personas lo han resuelto antes. Pasar unos días investigando el tema siempre cambia completamente la forma en que voy a resolver http: //it. Es valioso aprender a leer documentos académicos. No sé nada acerca de la semántica denotacional / operacional / etc, así que hay muchos documentos que no puedo leer. Pero hay muchos que usan código en lugar de matemáticas y no son tan difíciles de leer. Hay una gran cantidad de conocimiento en los documentos de los últimos 30 años. Si eres bueno en extraer esto, serás un líder de pensamiento en ningún momento. El más bello es un ejemplo perfecto de esto. Sabía lo que quería pero no tenía idea de cómo implementarlo. Después de una pequeña investigación encontré este documento y después de unos días supe exactamente lo que tenía que hacer. Tuve algo básico trabajando en una semana. Si hubiera ignorado la investigación anterior, habría tardado mucho más. Si buscas documentos, el repo de Papers We Love GitHub es un excelente lugar para comenzar.
- Asumir grandes proyectos. Ponte incómodo. No hay nada mejor que la experiencia. No todos están en condiciones de experimentar, pero si tienes tiempo, prueba algunos grandes proyectos. Ni siquiera necesitas terminarlas. Tratar de abordar algo como escribir un compilador te enseñará toneladas en las primeras semanas. Honestamente, odio la sensación de que no tengo idea de cómo resolver un problema complejo. Es incómodo. Sé que tendré que investigar mucho y aprender antes de estar cerca de una solución. Pero después, siempre soy un programador mucho mejor. Empieza por aprender un nuevo idioma. Es la forma más efectiva de sacarte de tus hábitos actuales y ver las cosas desde una nueva perspectiva. Para mí, lo mejor que hice cuando era un programador joven fue aprender Scheme. Es un lenguaje extremadamente simple y lo obliga a hacer todo en un estilo funcional, y realmente aprender los fundamentos de cómo funciona el código. Los pocos años que pasé en Scheme todavía están dando sus frutos hoy; La forma en que veo el código se cambia fundamentalmente. (Incluso nombré a mi compañía Shift Reset LLC después de los operadores de cambio / restablecimiento de Scheme). Aquí hay una lista de algunas cosas que recomendaría hacer. Estas son todas las cosas que tuvieron un gran impacto en mi carrera de programador. La mayoría de ellos siguen dando sus frutos de manera sutil y me ayudan a deconstruir nuevas ideas mentalmente. No es necesario que hagas esto para convertirte en un buen programador , y hay muchas otras cosas que puedes aprender para mejorar, pero estas son las que me ayudaron. Aprende C – Solo lo básico, si no lo has hecho ya. Creo que es valioso entender por qué todos se quejan de ello. Escribir un compilador : tal vez la mejor manera de sentirse incómodo y aprender. Echa un vistazo al compilador super pequeño. Aprenda macros : vea Esquema, Lisp o Clojure (Script). Las macros realmente cambiarán tu forma de ver el código. SICP – SICP es un libro antiguo que creo que sigue siendo relevante hoy (algunas personas no están de acuerdo). Asume muy pocos conocimientos de programación y le guía a la hora de implementar un evaluador y compilador meta-circular. Otro libro que realmente disfruté y que va mucho más profundo en compiladores es Lisp In Small Pieces. Comprender las continuaciones : las continuaciones son un mecanismo de flujo de control de bajo nivel. Scheme es el único lenguaje para implementarlos, y aunque nunca los usará en producción, cambiarán su forma de pensar acerca del flujo de control. Escribí una entrada de blog tratando de explicarlos. En todo caso, simplemente intente un nuevo idioma : independientemente de lo que haga, debería explorar otros idiomas. Recomendaría cualquiera de los siguientes: Clojure, Rust, Elm, OCaml / Reason, Go o Scheme. Todos ellos tienen características únicas y te obligarán a aprender una nueva forma de pensar.