¿Qué se necesita para ser realmente bueno en la programación?

Esto está bien establecido. Como en muchas otras artesanías cognitivamente exigentes, unas 10 000 horas de práctica deliberada . [1]

La práctica deliberada consiste en:

1. El mayor esfuerzo posible para mejorar su rendimiento. (Básicamente, necesitas estar constantemente al límite de tus habilidades mientras practicas)

2. Diseñado específicamente para mejorar el rendimiento. (AKA leer noticias de hackers no cuenta: P)

3. Retroalimentación inmediatamente disponible (sobre qué tan bien lo está haciendo).

4. Realizar repetidamente tareas similares (hasta que las domines).

5. Nivel de dificultad que lo hace no agradable.

La mayoría de los artistas de élite en diversas áreas (ajedrez, música, medicina, atletas) practican por no más de 4 a 5 horas por día (incluidos los fines de semana). Esto se debe a que los humanos generalmente son incapaces de mantener un nivel de concentración lo suficientemente alto como para la práctica deliberada por más tiempo. Además, generalmente practican solo alrededor de una hora y luego se toman un descanso con una preferencia para practicar en las mañanas. [2]

Sé que hay muchos críticos con el modelo de práctica deliberada y muchos artículos que afirman “desacreditar el mito”, pero en realidad estos artículos se centran solo en el número de horas en lugar del número de horas de PRÁCTICA DELIBERADO. Además, el documento de investigación que afirma que “desacredita la regla de las 10 000 horas” amplía la definición de práctica deliberada tanto que ya no coincide con la definición original.

Hay un par de otras buenas áreas de investigación que parecen ser útiles para ser realmente buenos en cosas (incluida la programación) como:

  • La mentalidad de crecimiento.
  • Contrastes Mentales + Intenciones Implementaciones
  • Escritura expresiva

Pero la práctica deliberada es la más importante.

El gran libro sobre cómo implementar esta idea en la vida laboral cotidiana es Deep Work by dr. Calvin Newport. También su blog es impresionante.

[1] Ericsson, KA (2008). Práctica deliberada y adquisición de desempeño experto: una visión general. Medicina de emergencia académica: revista oficial de la Sociedad de Medicina de Emergencia Académica , 15 (11), 988-994.

[2] Ericsson, KA (2006). La influencia de la experiencia y la práctica deliberada en el desarrollo de un desempeño superior de expertos. El manual de Cambridge de experiencia y desempeño experto, 38, 685-705.

Creo que para convertirte en un muy buen programador necesitas desarrollar la capacidad de entender y reconocer patrones.

En mi opinión, un buen programa es aquel que utiliza las mejores prácticas modernas para segmentar el programa de tal manera que los cambios en un lugar no necesariamente causen errores en lugares lógicamente dispares. Son fáciles de probar, mantener y extender, y reinventan la menor cantidad de ruedas posible.

Un buen programador es alguien que escribe buenos programas, por lo que los buenos programadores necesitan saber cómo escribir código que dé como resultado las cualidades anteriores.

No sé mucho acerca de la construcción, pero sí sé que el estándar de la industria para enmarcar edificios residenciales es de 16 “desde el centro de un poste hasta el centro de los montantes adyacentes (hay casos en los que se permite 24”, pero el punto es que hay normas). No hay nada que impida físicamente a un constructor separar los montantes a cualquier distancia que elijan, pero hay buenas razones para cumplir con el estándar de la industria. Los espárragos colocados a 16 “de distancia en el centro son un patrón.

Los constructores no tienen que saber cómo llegaron los ingenieros a ese número para garantizar un nivel mínimo de calidad de construcción; simplemente pueden seguir el patrón asegurando así ese nivel de calidad. Si alguna vez se necesita reparar, remodelar o agregar un edificio, los futuros contratistas pueden incorporarse y ampliar o actualizar el edificio sin tener que aprender la idiosincrasia y las peculiaridades de los constructores originales.

Al aprender y reconocer patrones, los programadores pueden diseñar y crear un software que aproveche la experiencia de aquellos que han llegado antes. Quizás aún más importante, tales prácticas alivian el esfuerzo de contribuir para otros programadores.

Hay patrones a lo largo de la programación. Existen patrones formales que describen formas probadas y comprobadas de realizar tareas específicas dentro del código, como el clásico “Patrones de diseño: elementos de software orientado a objetos reutilizables” [1].

Existen patrones arquitectónicos como la Inversión de control [2] que ayudan a hacer que todas las aplicaciones sean más extensibles y mantenibles a lo largo del tiempo.

Existen patrones de estilo de codificación que ayudan a que el código se vea consistente en toda la aplicación. Por ejemplo, el equipo central de dotnet ha elaborado una guía de estilo que rige las contribuciones de código abierto. [3]

La normalización de la base de datos [4] es un patrón para organizar bases de datos relacionales para reducir la redundancia de datos (reduciendo el riesgo de corrupción del modelo de datos), optimizar el rendimiento de las consultas y aumentar la claridad.

Terminaré esto con un par de enlaces a otros patrones con los que creo que los buenos programadores deberían estar familiarizados.

  • Principios de diseño SOLID [5]
  • Separación de inquietudes [6]

Notas al pie

[1] Patrones de diseño: elementos de software orientado a objetos reutilizables: Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Grady Booch: 8601419047741: Amazon.com: Libros

[2] Inversión de control – Wikipedia

[3] dotnet / corefx

[4] Normalización de la base de datos – Wikipedia

[5] SOLID (diseño orientado a objetos) – Wikipedia

[6] Separación de preocupaciones – Wikipedia

Dedicación, en su mayoría. Apagar la televisión. No FB. Limite su exposición a Quora …

Luego, pase 4 horas todas las noches – después de la escuela / trabajo / chat social – solo la codificación. Fallando, obteniendo ERROR SINTAX. Intentando otra vez. Por miles y miles de horas. Luego, consiga un trabajo como desarrollador, pero continúe haciendo esas 4 horas nocturnas.

Se necesitan 7 años para convertirse en un desarrollador realmente bueno. Para cualquiera, no importa quien seas.

Como alguien más escribió aquí, se trata de la dedicación. Un programador “normal” solo quiere realizar la tarea “this” para el software “that”. Un buen programador quiere aprender sobre la API de ese software solo por saberlo / por diversión, quiere saber cómo funciona el código base, mejor si es de código abierto, quiere hacer un código mejor y más rápido, incluso si ya existe un solución y así sucesivamente.

Se Flexible. Hago código desde que tenía 15 años y ahora tengo 35. ¿Crees que codifico solo cosas ahora? Cada segunda línea de código busco algo al respecto en Google. Porque es C ++ y no JavaScript. O porque es una nueva técnica. O porque existe esta nueva biblioteca que hace que todo sea mejor, si supiera cómo. Oh, quiero usar esa biblioteca incluso si el código de precesado funciona bien. 🙂 O simplemente porque olvidé cómo hacer un bucle while simple en Java.

Programé en casi todos los idiomas, incluidos los motores de juegos. No preguntes por Cobol / Fortran y esas cosas, dije “casi” .. 😉

Obtenga algunos buenos conceptos básicos, pero no los pegue a su idioma amado. Solo tiene que “eliminar” cosas en C ++, por ejemplo, pero es bueno saber acerca de cómo funciona el recolector de basura en todos los otros idiomas, y que tienen uno.

¿Nunca he oido hablar de? ¿Quieres saber sobre *? * Eso es lo que hace un buen programador. Y hacker. Si tu quieres. No lo hice. 🙂

Hay tres cosas que necesitas para ser realmente bueno en la programación:

  1. Practica la escritura de programas.
  2. Practica la escritura de programas.
  3. Practica la escritura de programas.

Ninguna estrategia ni recurso puede sustituir a la práctica. Cuanto más practiques, mejor serás. Eso es todo al respecto.

Preguntas por cualidades. Sí, también hay cualidades necesarias:

  • paciencia
  • persistencia
  • atención
  • Dedicación
  • capacidad para el trabajo duro
  • ¿Qué se necesita para ser realmente bueno en la programación?

    Comparta consejos, estrategias, recursos, habilidades, cualidades, etc. que lo ayudaron a convertirse en un mejor programador. ¡Gracias!

PROGRAMACIÓN – mucho.

Más programación.

Leyendo sobre cómo programar mejor entonces …

MÁS PROGRAMACIÓN.

Aprenda un (principalmente) lenguaje de programación funcional donde las personas hablan y escriben sobre métodos funcionales como la forma principal de pensar acerca de la programación.

(No solo uno que ha pegado en algunas construcciones funcionales).

PROGRAMACIÓN de uso y las ideas que ofrece.

Las respuestas más cortas están aquí …

  1. Practica para hacer lógicas.
  2. Borrar los fundamentos de la programación.
  3. C, C ++, JAVA aprende claramente.
  4. Práctica práctica práctica.
  5. Sé y mantente apasionado en la programación.
  1. Lee el código de otros pueblos: lee 100 veces más de lo que escribes.
  2. Aprender a pseudo código (lenguaje de programación agnóstico de la forma de pensar)
  3. Conoce y conecta bien con tus herramientas. Para tener una curva de aprendizaje empinada, sus herramientas deben proporcionarle una respuesta casi instantánea a medida que cambia y refactoriza su código.
  4. No piense demasiado en el código, piense más sobre cuál es el problema y cómo llegar a la solución. El código seguirá tu manera de resolver problemas.
  5. Preguntar, preguntar, preguntar Pregunte por cualquier cosa simple que no esté clara para usted. Aquí también hay un consejo: si tienes miedo de que tu pregunta sea estúpida, no existe tal cosa, solo hay respuestas estúpidas 🙂

Si bien no diré que soy muy bueno programando, lo estoy haciendo ahora durante los últimos 5 años, y me gusta a diferencia de muchos profesionales de la industria. Cuando comencé a programar en la universidad durante mi baja de graduación, pensé que la programación tiene que ver con escribir códigos y muchos códigos. Estoy de acuerdo que lo es, pero también es mucho más que eso. En mi mente, los programadores eran personas que no necesitan comunicarse con el mundo exterior, quiero decir por qué tendrían que hacerlo. Usted escribe printf (“Hello World”) y su programa imprimirá “Hello World”. ¿Derecha?

Nunca trabajé en habilidades de comunicación, nunca hablé mucho con la gente y este es mi mayor arrepentimiento como programador. Sería un mejor programador. Si hubiera sido la mitad de bueno comunicándome (en todas las formas. Escribiendo, hablando y leyendo) como lo estoy haciendo en los códigos de escritura. Lo que se necesita para ser un buen programador es el equilibrio . Golpee el equilibrio, escriba las respuestas de stackoverflow, contribuya al código abierto, inicie su propio blog. Te hará un programador mucho mejor.

Talento, experiencia e interés.

Se necesita estudio y práctica.