Ser un buen desarrollador de software no equivale a experiencia técnica en un lenguaje de programación o incluso en una variedad de lenguajes de programación; esto lo convierte (parcialmente) en un programador superior, no un desarrollador de software. Lo que necesita entender es que hay una gran diferencia entre un programador promedio y un buen desarrollador de software.
Un buen programador escribe excelentes programas de trabajo. Un buen desarrollador de software diseña y escribe software mantenible
Permíteme explicarte la diferencia.
Legibilidad:
El programador por definición es alguien que escribe programas y está bien versado en uno (o más) lenguaje (s) de programación. El programa puede ser un solo script que realiza una tarea única o puede ser parte de un cuerpo de código más grande que forma un software. Ahora, a medida que aumenta el tamaño del código, la estructura y organización del código se vuelve importante. Digamos que desea modificar su programa más tarde. O su empleador le pide que agregue una función. Esto requeriría que leyeras nuevamente y realizaras cambios considerables en tu código, y es probable que no puedas recordar exactamente lo que hiciste. Incluso si suponemos que tiene memoria eidética y nunca olvida ningún código que haya escrito, considere el caso en el que está colaborando en un proyecto con un grupo de pares (que es lo que hará en cualquier software empresa). Entonces se vuelve importante escribir código que pueda ser entendido por sus colaboradores. En tales casos, vale la pena tener un diseño estructurado y un código idiomático bien anotado / bien comentado. De lo contrario, su código es prácticamente inútil para nadie más y cualquier cambio futuro que involucre su código se vuelve difícil y degrada la capacidad de mantenimiento del software. Este riesgo aumenta cuando usted es alguien que probablemente implementará soluciones no estándar (soluciones pirateadas) o implementaciones ad-hoc cuyos propósitos son claros solo cuando están documentados.
Puede o puede optar por seguir una guía de estilo para el idioma que elija, que garantiza una mejor legibilidad de su código.
P.ej:
Guía de estilo de Google para C ++ [Guía de estilo de Google C ++]
Guía de estilo PEP-8 para Python [Bienvenido a Python.org]
- ¿Qué razones médicas válidas puedo dar para ser liberado del proyecto TCS?
- Cuando pregunté a muchos de mis amigos sobre los preparativos bancarios, la mayoría de ellos me recomendaron Bankers Adda. ¿Cómo es este foro para los preparativos? ¿Vale la pena dedicarle tiempo?
- Me gusta la codificación competitiva, pero no puedo captar los algoritmos y poco a poco pierdo interés, pero sueño con un buen desempeño en ICPC y Codejam. ¿Qué tengo que hacer?
- Tengo 15 años y me encanta la programación. ¿Cuál sería el camino que debería tomar para trabajar un día en Google como desarrollador?
- ¿Cómo puede un simple estudiante de ingeniería ser admitido en Harvard Business School?
Estructura / Diseño de software:
Cualquier software comienza pequeño. Es un señuelo fácil hacer las cosas con la menor cantidad de líneas posible sin preocuparse por cómo se hacen las cosas. (La actitud “Si funciona, no te quejes”). Pero ese estilo puede ser muy limitante: restringe la posibilidad de escalar / extender el programa con nuevas características. Entonces es importante que el software se diseñe de manera tal que deje espacio para mejoras / modificaciones futuras y que la capacidad del software para mejorar no se vea restringida por el diseño.
Calidad de código:
Es importante al escribir código que sea de buena calidad . Ahora, un buen programador que es experto en un idioma puede ser capaz de implementar e implementar un lenguaje específico y comprimir un código de 10 líneas en una gema de una sola línea. Pero un buen desarrollador de software es alguien que prioriza la complejidad del algoritmo (y en un nivel inferior, la legibilidad del código) sobre la facilidad de programación . Un código idiomático es casi siempre preferible a un método no tradicional que requiere tiempo / anotación para comprender o una taquigrafía oscura que requiere una búsqueda en la documentación del idioma.
Enlaces útiles:
Análisis de algoritmos.
Complejidad de tiempo
Control de versiones / Control de revisión:
Es muy importante mantener una copia de seguridad de su trabajo. Es igualmente útil tener puntos de control en su proceso de desarrollo a los que pueda volver y comenzar desde / inspeccionar en cualquier momento. Además, a menudo es esencial hacer un seguimiento de quién cambió qué al trabajar en un proyecto compartido y asegurarse de que el producto final de diez programadores que trabajan en diez archivos al mismo tiempo no termine rompiendo la funcionalidad del software.
La solución: control de versiones. Hace todo lo anterior y algo más. El alcance del control de versiones y su potencia total es una conferencia de una hora y algo más, así que siéntase libre de explorar. Pero no hace falta decir que es importante que cualquier desarrollador de software domine una herramienta de control de versiones.
Control de revisión en Wikipedia [Control de revisión]
Acerca del control de versiones – Git [Acerca del control de versiones]
¿Qué es el control de versiones? – video [Git]
Descargo de responsabilidad : lo que se presenta arriba es algunos de los aspectos básicos que creo que son esenciales para un buen desarrollador. La lista no es perfecta ni completa.
Soy un desarrollador de código abierto (aficionado) y defiendo las buenas prácticas de programación, de ahí la larga respuesta. Se actualizará de vez en cuando a medida que aprendo y mejore como desarrollador. Saludos 🙂