¿Cuáles son las habilidades básicas necesarias para ser un buen programador?

Para convertirse en un buen programador, debe tener una base sólida de lo básico. Y esos conceptos básicos son:

Lenguajes de programación

Una gran comprensión en lenguajes de programación como Python, R, Java, etc. No tiene que aprender todo, pero tiene una sólida formación en uno de los idiomas. Puede ampliar y aprender otros idiomas para mayor flexibilidad, pero ser bueno en un idioma primero es un comienzo sólido. Puede comenzar con Python, el lenguaje de codificación más fácil de aprender.

Habilidades para resolver problemas

Un rasgo básico que todos los programadores deberían tener. La programación no se trata solo de la codificación, sino principalmente del uso de la lógica, el análisis y el pensamiento abstracto para identificar y resolver problemas. Desarrolle sus habilidades de razonamiento practicando con desafíos de codificación en línea . Para ser un buen programador se requiere mucha experiencia en codificación. Solo aprendes cuando codificas. Aplicar lo que sabes es una buena práctica.

Atención a los detalles

El nivel de esfuerzo puesto en cada tarea. Para estar atento a cada detalle, uno debe organizar minuciosamente y verificar las tareas hasta el más mínimo detalle para mayor precisión. Si los programadores no verifican su trabajo, podrían ocurrir errores o resbalar. Estar atento a los detalles evita enfrentar problemas en el futuro que le ahorrarán tiempo y esfuerzo.

Paciencia

La mentalidad de mantener la calma en situaciones frustrantes. La programación puede ser difícil y frustrante, especialmente si no puede resolver el problema. Su paciencia será su ancla para soportar la frustración y darse por vencido. Aprenda a lidiar con errores no resueltos o problemas recurrentes encontrando nuevos métodos para intentar o tomando un descanso para calmar su mente. También tenga paciencia al tratar de estudiar y practicar la programación.

Comunicación

La habilidad que todo profesional debe desarrollar para tener éxito. La comunicación adecuada recorre un largo camino. Saber cómo explicar claramente los problemas a su cliente o jefe podría significar el éxito de su proyecto. La falta de comunicación a menudo se convierte en un vacío en los proyectos, especialmente si hay muchas personas involucradas. Fuertes habilidades de comunicación también se relacionan con habilidades interpersonales, la capacidad de manejar o tratar con personas.

Sepa más y conviértase en un mejor programador. Revisa:

15 blogs para cada desarrollador de software

5 mejores sitios web para tomar cursos de programación

Charlas de liderazgo que debes ver este fin de semana

7 aplicaciones móviles para ayudarlo a aprender codificación sobre la marcha

Los 5 lenguajes de programación más importantes para aprender en 2018

Deberías apuntar a producir código que sea como un ladrillo de Lego

Fuente: https://media.giphy.com/media/sT

El ladrillo Lego es un ejemplo casi perfecto de diseño de producto y proporciona una metáfora perfecta para demostrar qué habilidades hacen un buen programador.

Es simple

El ladrillo es solo eso, un ladrillo con algunos conectores y puertos uniformes para que pueda adherirse a otros ladrillos cuando sea necesario y retirarse cuando llegue el momento.

Un buen código también es simple. En lugar de encontrar una solución de un nivel de complejidad de Rube Goldberg, siempre es mejor encontrar soluciones de codificación que sean tan simples como un ladrillo de lego.

Fuente: https://media.giphy.com/media/wB

Es uniformemente de alta calidad

Todos los ladrillos de lego están estampados con un número que identifica el lugar exacto en el molde del que provienen. Si hay un problema, si el ladrillo no se pega como se supone, el problema se puede solucionar en su origen.

El código desordenado aún puede ser entendido por una máquina. La razón para escribir código limpio es para que otros humanos puedan entenderlo y trabajarlo. Como la pieza de lego,

Siempre está listo para usarse cuando lo necesite

Lo mejor de Legos es que no hay preparación involucrada en construir con ellos. No hay pegamento que deba secarse ni un sujetador especial que deba comprarse. En otras palabras, son utilizables de inmediato.

De la misma manera, es importante hacer que su código esté disponible cuando se espera. Después de todo, la mejor solución del mundo no tiene sentido hasta que la envíe. Si hay una decisión entre una solución estándar que se puede implementar ahora o una solución a medida que le llevará años escribir, tome la solución fácil y pase a la siguiente fase del proyecto.

Un buen programador es un solucionador de problemas, no un artista. Si está tratando de encontrar uno, dele una tarea con una plataforma como Devskiller. El programador deberá usar sus habilidades para producir una solución limpia y eficiente, dentro de un plazo.

Para ser un programador promedio, puedes escapar con solo poder codificar bien. Es el salto de promedio a excelente que requiere un conjunto mucho más amplio de habilidades. Estoy familiarizado con estos temas porque ejecuto escalable, un mercado independiente. Después de trabajar con más de 5,000 desarrolladores, he descubierto los atributos que creo son comunes a muchos de los mejores desarrolladores que existen.

Actitud positiva:

Un gran programador se preocupa por su producto. Son positivos, están dispuestos a hacer todo lo posible para hacer el trabajo y dar lo mejor de sí cada día. Aunque es importante no agotar a un desarrollador con plazos urgentes frecuentes, a veces esto es inevitable. Cuando necesite llevar un producto al mercado o necesite enviar una determinada característica antes de la fecha límite, el gran programador dará un paso adelante y lanzará el producto siempre que sea posible.

Porque les importa

Un gran desarrollador no deja que su ego se interponga en la toma de comentarios.

Habilidades de comunicación:

Las buenas habilidades de comunicación se correlacionan directamente con las buenas habilidades de desarrollo. Un gran desarrollador es capaz de comprender los problemas claramente, dividirlos en hipótesis y proponer soluciones de manera coherente. Entienden los conceptos rápidamente, o hacen las preguntas correctas para comprender, y no necesitan tener todo escrito en un documento de especificaciones. Los grandes desarrolladores offshore generalmente hablan varios idiomas de manera coherente y se sienten muy cómodos con la documentación en inglés. En el mundo de la tecnología, el inglés es el idioma de facto de la mayoría de la documentación y las interacciones de los desarrolladores.

Si no lo hablan lo suficientemente bien, necesitarán intérpretes y traductores, haciendo que sus conocimientos sean de segunda mano y rápidamente obsoletos.

Gestión del tiempo:

Los grandes desarrolladores son altamente confiables. Tienen una fuerte ética de trabajo y se presentan a las reuniones a tiempo. Una habilidad importante es la capacidad de estimar la cantidad de tiempo necesaria para completar una tarea, comunicarla y cumplirla. Los desarrolladores excepcionales son excelentes para administrar a sus clientes o líderes en lugar de que usted los administre.

Habilidad de aprendizaje:

Los grandes desarrolladores suelen ser sorprendentes autoaprendices. Tienen la capacidad de aprender nuevas tecnologías por su cuenta y no se sienten intimidados por las nuevas tecnologías. Tienen la capacidad de extraer datos dispares y procesar información sobre la marcha. Cada programador experimentará una situación en la que él o ella no sabe la respuesta. Los grandes programadores encontrarán diferentes recursos, hablarán con las personas adecuadas y encontrarán la solución pase lo que pase.

La mejor habilidad que cualquiera puede tener es saber aprender, y los grandes desarrolladores han dominado la habilidad del autoaprendizaje. Existe un vínculo claro entre los desarrolladores más talentosos y aquellos que siempre están aprendiendo.

Nuestros desarrolladores mejores y mejor pagados a menudo pasan al menos el 25% de su tiempo trabajando en proyectos personales y probando nuevos marcos.

Profundo conocimiento:

Los grandes desarrolladores han trabajado con un puñado de tecnologías el tiempo suficiente para convertirse en expertos y son competentes con muchas. Comenzarán a funcionar porque ya conocen las tecnologías correctas. Seguirán los estándares de codificación y escribirán un código que sea comprensible y comentado cuando sea necesario y que se pueda pasar a otra persona fácilmente. Al combinar sus habilidades cognitivas y su diversa experiencia en la industria, pueden llegar a soluciones óptimas rápidamente.

Un desarrollador experimentado conoce bien las mejores prácticas como el desarrollo ágil, el software de gestión de tareas (Jira, Trello, etc.), el control de versiones (si conocen a Git, es una señal de que se han movido en sistemas anteriores como SVN) y están trabajando en diferentes entornos (entorno de desarrollo local y conocimiento práctico de implementación de aplicaciones), así que pregúnteles acerca de estas cosas.

Jugador de equipo:

Otra excelente calidad de los desarrolladores premium es su capacidad para ayudar a otros desarrolladores a mejorar. Ofrecen ayuda a los compañeros de equipo cuando están atrapados, enseñan nuevas habilidades a otros y escriben documentación que ayudaría a los compañeros de equipo no solo en su organización sino también en la comunidad de desarrolladores en general. Las personas que se comportan como una caja negra no son buenos jugadores de equipo.

Apasionado:

Me he dado cuenta de que cuando alguien se apasiona por su trabajo, es probable que también sea muy bueno en él.

¡Aspira a estas características y estarás bien encaminado hacia tu objetivo!

  1. Ser capaz de dominar lo básico e ignorar la exageración: uno de los mayores problemas que enfrenté cuando comencé a aprender a codificar, fue que hay un gran número de distracciones que te atraen desde todas las direcciones y te dicen que debes aprender ESTE LUGAR , porque el lenguaje, el marco, la técnica o el patrón de diseño que está aprendiendo ¡ES TAN ÚLTIMO AÑO! Cuando eres un novato, todos los demás parecen expertos, así que todo lo que se necesita es una sola lectura accidental de una publicación de blog de un programador aleatorio sobre por qué “si no estás usando ___ lo estás haciendo mal”. Los últimos 6 meses que ha pasado dominando una tecnología en particular. El mejor consejo que he escuchado de veteranos de la vieja escuela que han estado programando durante décadas es ignorar esa basura y aprender primero los conceptos básicos de tu stack. Si ni siquiera comprende las soluciones que generaron estas nuevas tecnologías, entonces realmente no tiene ningún negocio tratando de dominarlas antes de dominar los fundamentos. La publicidad sobre varias herramientas en la comunidad irá y vendrá, pero los fundamentos probados y verdaderos siempre permanecerán.
  2. Ser capaz de comprender claramente el problema antes de precipitarse hacia la “solución”: esto a menudo resulta en que uno pueda idear soluciones simples para problemas innecesariamente complejos. Siempre me sorprende la forma en que los veteranos pueden tomar lo que parece ser un problema súper complejo para los estudiantes de primer año y segundo año y, en solo unas pocas líneas de código (después de eliminar más de 20), resolver el problema con gracia. Tuve una situación como esta hace un par de años. Al darse cuenta de mi asombro, el programador más experimentado simplemente me respondió, diciendo: “No puedes encontrar las soluciones más adecuadas si no entiendes adecuadamente el problema primero”. Eso siempre se quedará conmigo.
  3. Ser capaz de autoeducarse: con suerte, este se explica por sí mismo.

Lo siento, leí más tarde la referencia sobre habilidades básicas (resolución de rompecabezas y demás, y había entendido la pregunta de otra manera y produje este contenido antes).

  1. Use la terminología correcta : cada vez que se topa con un problema, es casi seguro que alguien más lo ha hecho antes que usted y le ha preguntado en la red. Si utiliza la terminología correcta sobre su problema, obtendrá su respuesta en un instante y luego podrá continuar. No mezcle clase, objeto, instancia o herencia con la composición y toda otra terminología importante para ser exactos.
  2. Paciencia : no hay muchos medios de aprendizaje tan eficientes como cometer un error. Los errores que cometes son esenciales para tu proceso de aprendizaje.
  3. Proactividad : cuando se requiere que tenga una habilidad determinada en su lugar de trabajo, no es realmente el momento de aprenderla, sino más bien el momento de ejercerla. Aprende un poco antes de que lo necesites para que estés consciente de a qué te diriges.
  4. Comunicaciones : la programación de TI tiene un 80% de comunicación. Aprenda UML, especificaciones funcionales, especificaciones de diseño, diagramas de secuencia de tiempo, diagramas de clase, etc.
  5. Contribuciones : Por mucho que te guste aprender de las personas que te rodean, también aprecian aprender de ti. Al menos una vez a la semana, prepare un correo electrónico conciso pero útil para el grupo para que puedan aprender de usted. Sus pares le agradarán por estos pequeños correos electrónicos periódicos y desarrollará una personalidad en su grupo que agregará una dimensión a su trabajo.
  6. Herramienta adecuada para el trabajo correcto : desenroscar un tornillo con un martillo no es una tarea fácil. Lo mismo puede decirse sobre la construcción de una base de datos desde Excel. Siempre hay una herramienta adecuada para la tarea correcta y ninguno de ellos lo hace todo. Sin entrar en la suciedad de todos los detalles para usar cada herramienta, aprenda lo que hacen y cuándo deben usarse para que estén en su radar cuando se presente una tarea a su alrededor. Por ejemplo, en Java, si necesita realizar una generación XML a partir de objetos, use JAXB (o algo comparable). Cualquier otra cosa (incluso hacerlo a mano) es casi seguro que está mal. Necesita transformar XML, usar JAXP … Etc.
  7. Red : colabora con las personas que te rodean y asegúrate de contribuir también a su conocimiento.

Estas son algunas de las mejores habilidades de codificación que cualquiera puede tener:

– Capacidad para aprender cualquier tecnología nueva y la capacidad de adaptar los cambios. Debería estar emocionado de tener nueva tecnología a su disposición, no tenerle miedo.

– Capacidad para crear una estructura de clase completa en su mente tan pronto como los requisitos estén presentes para usted. Esto es realmente útil cuando está con su gerente de proyecto o cliente, discutiendo el proyecto.

– Capacidad para escribir código limpio, mínimo y modular. Si alguien más comienza a trabajar en su código, él / ella debería enamorarse de usted tan pronto como vea su código.

– Capacidad para conocer el problema, junto con la solución tan pronto como escuche el nombre de la excepción. El seguimiento de la pila debe proporcionar evidencia suficiente para encontrar la línea de código culpable.

– Capacidad para trabajar en más de un idioma, plataforma, tecnología. Deberías ser un comerciante de Jack of All, no maestro de unos pocos.

– ¡Abrace la documentación! Necesitas saber cómo poner hermosos comentarios.

Estas habilidades no son realmente difíciles de obtener. Todo lo que necesitas es práctica e interés para aprender cosas nuevas. Solía ​​ser un analista de investigación financiera, antes de comenzar la programación de autoaprendizaje. Si puedo presumir, puedo hacer todo esto sin romper el sudor (excepto la documentación. Odio escribir comentarios).
He visto a muchos buenos programadores que poseen las habilidades mencionadas anteriormente, por lo que no son tan especiales, pero sin duda son necesarios para ser un buen programador.

Codificación feliz


¿Te gustó mi respuesta? Sigue mi blog para leer más en Learn Programming.
Sígueme en Abhi (@ abhi347) | Gorjeo

Me gusta la opinión de Alan Perlis: “Los programadores no deben medirse por su ingenio y su lógica, sino por la integridad de su análisis de casos”.

Hay muchas cosas que los buenos programadores deben hacer para producir software que sea correcto, confiable, eficiente, mantenible, etc. Hay mucho que decir sobre curiosidad, perspicacia y buen gusto. Pero me di cuenta de que lo que separa a mis mejores estudiantes del resto es que desarrollan la capacidad de formar una buena comprensión de los espacios de estado en los que están trabajando. No comprender plenamente las posibilidades parece ser la fuente preeminente de errores en todo tipo de código.

Aquí hay algunas cualidades especiales:

  1. Tiene todos sus conceptos básicos claros.
  2. Tiene conocimiento sobre algoritmos, estructuras de datos y conoce los pros y los contras del lenguaje que utiliza.
  3. Primero analiza el problema, diseña la estructura del programa con algoritmos y estructuras de datos adecuados y luego los escribe.
  4. Pruebas de complejidades temporales con diferentes algoritmos para garantizar un cálculo más rápido del resultado.
  5. Sigue las reglas estándar para nombrar variables, clases, objetos.
  6. Tiene todo su código correctamente sangrado y comentado (los comentarios deberían ser suficientes). Muchos comentarios hacen que el código se entierre y menos comentarios dificultan la comprensión del código.
  7. Incluye todas las verificaciones de errores.
  8. Pasa la mayor parte del tiempo probando el código.

La gente a menudo se equivoca que cuanto más pequeño es el código, mejor es. Pero no es así porque un código pequeño no garantiza la reducción de tiempo.

Cuando comencé a programar y ver el desempeño de otros programadores en mi universidad, la única pregunta que me vino a la mente fue: ¿Son profesionales o tienen talento para Dios o qué habilidades debo tener para convertirme en un buen programador? pero ahora puedo responder después de mi observación e interactuar con esos genios. El mito más común sobre los programadores es que hay antecedentes en programación o lo están haciendo desde el 6º, 7º u 8º estándar, por lo tanto, son buenos, pero la realidad está muy lejos de lo que se requiere para ser un programador experto:

1. PENSAMIENTO LÓGICO: si eres bueno para pensar lógicas e implementarlas tan rápido como puedas … entonces estás listo para despejar el primer paso para ser un buen programador.

2. PACIENCIA: Sí, si no tienes paciencia, entonces no es posible llegar lejos con tus habilidades de programación, pero la paciencia se generará automáticamente una vez que comiences a programar con dedicación.

3. ¿QUÉ HACER SI SOY UN PRINCIPIANTE Y DESDE DÓNDE COMENZAR A SER UN BUEN PROGRAMADOR ?:

Para desarrollar las habilidades lo más importante requiere son las fuentes. ¿Qué buenas fuentes usas para ser programador? qué hacemos para superar este problema … vaya a “GOOGLE BABA” escriba lo que queremos aprender y comience sin verificar la calidad del contenido y la calificación …… cuando nos damos cuenta de que a veces es demasiado tarde, pero algunos sitios web proporcionan contenido en orden clasificado para que no tenga problemas en la selección de contenido de calidad y uno de ellos es Hackr.io: encuentre y comparta los mejores cursos y tutoriales de programación en línea. Proporciona contenido calificado en orden y también sugiere cursos pagados y no pagados, lo que desee y, lo más importante, cubre todos los campos … Creo que es suficiente. Si le gusta o le resulta útil, entonces seguramente intente hacer clic en el botón de voto a favor, de lo contrario no hay problema.

Un buen programador es el que

Evitar repeticiones:

Cada pieza importante de funcionalidad debe implementarse en un solo lugar en el código fuente. Tan pronto como comience a repetir una funcionalidad, cree una nueva abstracción para eso. Si practica esto, a medida que el proyecto crece, puede reutilizar el código existente y menos código requerido para manejar las funcionalidades existentes. Además, si desea cambiar una funcionalidad existente más adelante, solo tiene que cambiarla en un solo lugar; de lo contrario, debe revisar cada parte del código y averiguar el área que se va a cambiar. Esto aumenta la legibilidad del código y evita problemas de mantenimiento.

Evitar funciones no deseadas:

No agregue funcionalidad al código hasta que lo necesite. Algunos desarrolladores simplemente copian y pegan todo el módulo de google donde solo necesitan una función de ese módulo. No haga crecer su código con funciones no deseadas.

No lo vas a necesitar

Evite las clases / funciones de responsabilidad múltiple:

Siempre siga el principio de responsabilidad única. Un componente particular (por ejemplo, clase o función) debe realizar una sola tarea bien definida. No mezclar funcionalidades. Funcionalidad separada, incluso son solo dos líneas de código que realizan una funcionalidad completamente diferente.

http://en.wikipedia.org/wiki/Sin

Ocultar implementación:

Ocultar los detalles de la implementación permite cambiar la implementación de un componente de código mientras afecta mínimamente a cualquier otro módulo que use ese componente. Esto será muy útil mientras muchos desarrolladores están desarrollando módulos funcionales utilizando su código y algún día le gustaría cambiar la funcionalidad interna de su código que no fallará en los módulos desarrollados por otros desarrolladores.

http://en.wikipedia.org/wiki/Inf

Mantenga bajo acoplamiento y alta cohesión:

El acoplamiento es el grado de interdependencia entre módulos. Esto debería ser mínimo para que cada módulo represente un conjunto de tareas completamente diferente. Use funciones y variables compartidas entre módulos solo en la situación que no puede evitar.

La cohesión es el grado en que los componentes de un módulo pertenecen juntos. Esto debería ser máximo para que los componentes internos del módulo dependan unos de otros para lograr una funcionalidad particular. esto aumentará la legibilidad y la comprensión del código.

Un programador que es nuevo en un proyecto ya desarrollado puede comprender fácilmente y modificar si el código se desarrolló utilizando este principio.

Escriba código que no sea modificable pero que sea extensible:

En general, el código debe cerrarse para su modificación una vez que complete un módulo. Es decir, algún cuerpo no puede cambiar el código fuente original. Pero puede hacer que sea extensible que alguien pueda extender su funcionalidad para crear su propia clase. Esto significa que pueden reutilizar la funcionalidad existente + escribir funcionalidades adicionales.

Use convenciones de programación:

Las convenciones de programación son pautas para un lenguaje de programación específico que recomiendan el estilo, las prácticas y los métodos de programación para escribir programas en ese lenguaje.

Existen estándares particulares definidos para nombrar componentes, módulos, funciones o variables. Este conjunto de reglas dice qué nombre se le dará a un componente en particular. También escriba comentarios para módulos, componentes y funciones para que realmente realice la funcionalidad especificada en el comentario. Si lo sigue, aumentará la legibilidad del código y producirá un código altamente mantenible.

Sabe cómo personalizar el código para requisitos particulares:

Un programador aficionado puede copiar el código de Google y reutilizar todo el código, pero un buen programador solo mira el patrón y personaliza el código para que logre la funcionalidad deseada de modo que necesite menos tiempo para lograrlo.

Para mí, es cuestión de querer mejorar tu oficio. En mi experiencia, eso no significa querer implementar algo de la mejor manera en un idioma en el que intentas especializarte, aunque eso es importante a medida que avanzas en tu búsqueda para mejorar. Uno debería querer escribir buenos programas que sean claros en su implementación, tanto como lo permita el lenguaje.

Creo que la clave es querer mejorar el diseño arquitectónico. Eso no solo puede significar tener disciplina en la forma de descomponer la funcionalidad en unidades y usar las estructuras de datos correctas para los problemas, sino que una mejor idea es comprender que la arquitectura del sistema operativo y el lenguaje que está usando importa, y hay un forma de mejorar eso. Una mejor arquitectura “crea una excusa” para mejores ideas.

Este soy solo yo, y hay otras formas de ver esta idea, pero otra sensación de “buen programador” es alguien que está interesado en expandir las capacidades humanas a través de lo que crean. Para eso, existe cierta necesidad de educación en historia humana, y algunos fundamentos en antropología, junto con algunos análisis. A partir de ahí, puede ramificarse en otros estudios de seres humanos (como psicología, epistemología, lingüística, arte, etc.) que se adaptan a un área específica en la que desea especializarse. Esto ayudará a crear objetivos más grandes para usted.

Se dieron muchas respuestas buenas y útiles a esta pregunta, pero todas parecían ser respuestas externas. Para mí, con más de 60 años de experiencia en programación, lo único que me hizo un mejor programador que la mayoría fue mi capacidad y disposición para examinarme críticamente y hacer algo con respecto a mis defectos. Y, después de 60 años, sigo haciendo eso.

También examino mis fortalezas (¿defectos?) Porque sé que mis mayores fortalezas pueden convertirse rápidamente en mis mayores debilidades. He visto a muchos programadores que se examinan críticamente, pero luego trabajan para mejorar sus mayores fortalezas, excluyendo sus debilidades. Eso los lleva a cierta distancia, pero la naturaleza de las computadoras es resaltar sus mayores debilidades.

Las computadoras son como espejos de tu mente que reflejan brillantemente todos tus pensamientos más pobres. Para convertirte en un mejor programador, debes mirarte en ese espejo con ojos claros y ver lo que te dice sobre ti. Armado con esa información, puede seleccionar las cosas externas más útiles para trabajar. Será diferente para usted que para cualquier otra persona, porque sus deficiencias y fortalezas serán únicas para usted, por lo que los consejos de otros a menudo estarán fuera de lugar.

Ver, por ejemplo, Convertirse en un líder técnico y / o The Psychology of Computer Programming.

1. Habilidades de las personas

Los mejores programadores ponen a las personas primero. Saben que el software que están escribiendo es para personas, incluso si es solo el back-end de un sistema complicado o un protocolo que nadie más que otros desarrolladores usarán. Escriben documentación porque es importante. Ayudan a las personas a usar su código. Están dispuestos a trabajar extra y lidiar con un poco más
complejidad para dar a las personas que utilizan su software la solución adecuada.

2. Apetito insaciable por aprender
Los programadores asombrosos están ridículamente hambrientos de conocimiento. Siempre te están contando algo nuevo o interesante. Tienden a leer un montón (ya sea en línea o fuera de línea) y les encanta probar cosas y aprender de las experiencias también. No tienen miedo de probar nuevos idiomas o nuevas plataformas.

3. Reconocimiento de patrones de problemas

Una vez que ha estado escribiendo software por un tiempo, comienza a ver que surgen problemas que se parecen mucho a otros problemas con los que ha lidiado. Ser capaz de reconocerlos y transformar soluciones pasadas para trabajar en su situación actual es una habilidad realmente valiosa. Poder mejorar la solución cada vez es aún mejor.

4. Un poco loco

La codificación es una tarea tan lenta y difícil que sin duda es útil si te obsesionas con ella y te complace trabajar en ella en tu tiempo libre y en el trabajo. Debería ser un pasatiempo que harías si nadie te pagara.

5. Persistente

El desarrollo de software es casi siempre más lento de lo que cualquiera quiere que sea. Toma tiempo. A veces tienes que ser lo suficientemente paciente como para producir el código que necesitas escribir. Creo que los mejores desarrolladores continúan porque pueden ver el panorama general de lo que están trabajando y les encanta el proceso de construir ese resultado final pieza por pieza.

No escribiste si ahora estás programando, ya sea por diversión para ti mismo o si estás pagando tus facturas al recibir un pago por la programación. Realmente importa, porque si estás programando para tu propia satisfacción, convertirte en un “buen programador” es un poco diferente a si te pagan por ello …

La mejor manera (en cualquier caso) de ser “bueno” en la programación en cualquier caso es practicar, practicar, practicar. Comience con algo simple, digamos haciendo una caja de números que se muestra como una tabla de cinco por cinco … porque está programando para su propia diversión.

La primera fila sería 1 2 3 4 5, y la última fila es 21 22 23 24 25.

Luego tome este pequeño programa simple y cuente la cantidad de líneas que le tomó hacer eso. Diré que te llevó 10 líneas de código. Ahora, cambie su programa para que tome menos líneas de código. ¿Puedes hacer que haga exactamente lo mismo con 5 líneas de código en lugar de 10? Lo que está buscando aquí es mejorar la eficiencia de su programa.

Ahora, eres un experto en hacer pequeñas cajas de números. Su próximo paso podría ser hacer seis cajas de números y mostrarlos como un cubo, con cada lado del cubo de un color diferente. Recuerde … el objetivo aquí es divertirse un poco al descubrir todo esto.

Finalmente, toma tu cubo de números y haz que gire para que puedas ver los seis lados. Una vez que ha descubierto cómo programar eso, tiene un programa que puede tomar forma y moverse en la pantalla.

Ahora viene la parte difícil. Encuentre un amigo programador experimentado y muéstrele su elegante programa y solicite sugerencias sobre cómo podría ser mejor … trate de no ofenderse por las sugerencias que ofrece su amigo. Para cada uno de los 10 programadores que pueda preguntar, obtendrá 15 formas diferentes de resolver el problema. 🙂

Lo que quiero decir aquí es que no importa lo que esté programando, diviértase con él. El punto es divertirse con lo que sea que esté programando. Esté dispuesto a jugar bien con otros programadores y no permita que su ego comience a decirle que “mi manera es la mejor y la única forma” de hacer un cubo de números (o lo que sea).

Después de un tiempo, descubrirá que tiene esta caja de herramientas llena de técnicas (al igual que un carpintero o un cocinero tiene una caja de herramientas) en las que puede confiar para resolver cualquier cosa que termine programando. Una vez que su caja de herramientas personal comienza a llenarse con muchas herramientas de programación diferentes que se mantienen actualizadas, terminará siendo más eficiente en su trabajo y podrá realizar una tarea determinada de manera limpia y rápida. Y … diviértete mientras lo haces.

Los programadores que conozco que siguen divirtiéndose mucho, y que tienen una caja de herramientas de programación llena de herramientas de programación actualizadas, son los que considero “buenos programadores”. Especialmente si puedo tomar un programa que han escrito y no tengo que esforzarme para descubrir que WTF estaba pensando esta persona cuando escribieron este o aquel código.

No estoy seguro de si todo esto responde a su pregunta … sin embargo, esto puede ayudarlo a comenzar en el camino correcto para convertirse en el mejor programador posible.

La gente a menudo piensa que la clave para convertirse en un buen programador es ser un experto en un idioma en particular. He visto a muchos de mis compañeros de clase decir que son realmente buenos en Java, javascript, php, etc. y, sin embargo, no pueden codificar un programa simple con una declaración de problema retorcida.

  1. La clave para convertirse en un buen programador es la capacidad de comprender el enunciado del problema. Si una persona puede simplificar un enunciado del problema dado en uno más simple, entonces puede idear un algoritmo fácilmente.
  2. H gust vhf xx fix civ – ¿Entendiste esto? No. No tenía ningún sentido. Un buen programador debe poder escribir código simple. No compliques demasiado las cosas innecesariamente.
  3. Intenta pensar de manera recursiva. Muchas personas prefieren el código recursivo (a veces esto puede ser una mala práctica)
  4. Tener algunos conocimientos básicos sobre las complejidades del tiempo y el espacio. Estos dos son muy importantes.
  5. Aprende a pensar fuera de la caja

El “truco” es estar orientado a los detalles. Desea hacer que la computadora increíblemente estúpida haga las cosas correctas, por lo tanto, debe decirle en términos exactos cómo debe hacerse al respecto. A veces se vuelve tedioso, pero aquí es necesario avanzar: aquí es donde los programadores experimentados comienzan a buscar formas de automatizar tareas tediosas.

Así que, agregado a la respuesta de Douglas Wilson sobre escribir un código tan claro y legible como sea posible, debe comenzar a buscar formas de facilitar la escritura de código “aburrido”. Esto generalmente se conoce como código “repetitivo” y tiende a ser lo primero que todo programador odia escribir. Por lo general, comienzan a hacer algunos pequeños scripts (o incluso programas) para escribir la mayor parte para ellos.

Sobre eso, adquiera el hábito de depurar lo antes posible. No gaste una semana en la codificación y solo pruebe al final. Intenta hacer tu programa de manera que puedas probarlo incluso antes de que termine. Es mucho más fácil corregir errores mientras el código aún está fresco en su memoria que tratar de recordar por qué hizo “esta cosa extraña” hace un mes, lo que ahora parece causar problemas una vez que finalmente lo está llamando desde otra parte. Desafortunadamente, esto no siempre es posible, especialmente con proyectos grandes, y más especialmente si otros programadores también trabajan en el mismo proyecto.

Una forma de tratar de aliviar este problema es hacer uso de los comentarios, como también mencionó Douglas Wilson: “buenos comentarios”. Esto significa que sus comentarios deben indicar “por qué” en lugar de “qué” o “cómo”. El qué y cómo debe quedar claro en el código mismo, otra razón por la cual su código debe ser lo más legible posible.

Depende de su definición de “bueno”. Superman sería bueno porque atrapa delincuentes y delincuentes, pero no es un programador. Pero probablemente estés pensando en una “buena programación”.

Bueno, antes que nada, los buenos programadores deben cumplir a tiempo. Tienen una buena velocidad de programación. Si le dicen que algo se terminará la próxima semana, será mejor que esté terminado para entonces.

A continuación, calidad. Un buen programador entregará un producto con un mínimo de errores y los errores restantes no son críticos. Tener productos libres de errores es imposible, una utopía. Pero si un buen programador entrega un producto, esos errores pueden ser cuadros de texto desalineados y errores ortográficos, pero no algo que haga que las cosas se cuelguen y se quemen.

Por último, mantenimiento. Un buen programador se asegurará de que alguien más pueda hacerse cargo del código, incluso dentro de 5 años. O dentro de 10 años. Para hacerlo, significa que el código está bien documentado y que se siguen patrones y prácticas de diseño comunes.

El problema es que la velocidad, la calidad y el mantenimiento no tienden a mezclarse bien. En general, los buenos programadores tendrán dos de estas tres cualidades. Solo los mejores tienen los tres.

Pocos puedo pensar, no es necesario en el orden correcto

  1. Habilidad para resolver problemas. Puede ser bueno en matemáticas, lógica
  2. Experimentando cosas. Puede ser que falles algunas veces, pero no te rindas. Encontrarás la solución
  3. Lector curioso. Mejorando tu lenguaje de programación. Y otras herramientas como scripting
  4. Intenta automatizar la mayoría de las cosas que puedas. Esto desarrollará el hábito de ser creativo y pensar en cualquier actividad como tarea para resolver el problema.
  5. Intenta mezclarte con programadores de ideas afines o grupos como Meetup para tu lenguaje de programación. Discutir con ellos lo ayudará a explorar más sobre la tecnología que está buscando.
  6. Intenta contribuir en un proyecto de código abierto.

Buena suerte.

Las buenas habilidades de codificación se pueden definir como:
Capacidad para comprender el problema dado, analizarlo, encontrar algoritmos adecuados para resolverlo utilizando la (s) estructura (s) de datos apropiada (s) y un lenguaje de programación que puede incorporar todo lo anterior para resolver el problema dado.

¡Paz!

En primer lugar, si eres un principiante, debes comenzar con el lenguaje de programación C porque es un lenguaje muy básico y un lenguaje muy importante. Obtén los conocimientos básicos de programación. Luego comience a resolver problemas … es muy importante cómo implementar el concepto que ha aprendido en teoría. Esto aclara su concepto. Cada nueva pregunta que ha hecho le da una nueva forma de resolver un problema de diferentes maneras …
cuando te sientas mejor resolviendo programas fáciles, aumenta el nivel de dificultad
luego ingrese al codejam, codechef como Competencia para aumentar su potencial.

More Interesting

¿Por qué las firmas consultoras siempre reclutan a los candidatos más brillantes? ¿Qué es lo que estos brillantes candidatos de las mejores universidades poseen que un estudiante universitario normal no posee?

¿Cuáles son los mayores obstáculos que ha enfrentado para contratar un desarrollador web para un sitio de comercio electrónico?

¿Cuánto importan las calificaciones de la escuela secundaria para el reclutamiento universitario?

¿Por qué Gust no ofrece pasantías técnicas para aspirantes a RoR SWE y que aman el emprendimiento?

¿Es un buen momento para reclutar en China durante las vacaciones de la Semana Dorada Nacional?

Cómo obtener el enlace DigiLocker en el reclutamiento de la Marina

¿Cuál es el mejor sistema de seguimiento de candidatos para Mac OS X?

¿Está bien decirle al reclutador que ya acepté otra oferta pero me gustaría continuar entrevistando con esta?

¿Debo creer la promesa de un reclutador en un correo electrónico que no está en la carta de oferta formal?

¿Cuál es el procedimiento general que sigue una empresa de búsqueda de ejecutivos para el abastecimiento?

¿Deberían los reclutadores proporcionar comentarios?

¿El software de seguimiento de candidatos se ha vuelto demasiado complejo?

¿Cuál es la tasa de aceptación de Google para las funciones de ventas y administración de cuentas? ¿Cuál es la tasa una vez que llega a la etapa del comité de contratación?

¿Qué pasos debo tomar para convertirme en un gran reclutador?

¿En qué medida difieren las estrategias de reclutamiento entre grandes y pequeñas empresas tecnológicas?