La gente dice ‘sé un buen desarrollador de software’. ¿Qué significa esto realmente? ¿Esto se refiere a ser bueno en lenguajes informáticos como C?

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]

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 🙂

No no !

Si la innovación es la medida del éxito, convertirse en científico solo será la opción profesional.

El término “buen programador” está acuñado para aquellos que exhiben los siguientes rasgos

1. Escribe código legible, mantenible y eficiente.
2. Poseer buenas habilidades técnicas.
3. Eficiente para encontrar la raíz del problema rápidamente, en resumen, posee habilidades de depuración.
4. Maneja situaciones estresantes y continúa trabajando para cumplir con los plazos.
5. Capaz de planificar.
6. Aprendiz rápido
7. Uno que es un jugador de equipo.

Le daré un ejemplo para explicar la diferencia entre un programador novato, un mal programador y un buen programador.

Asumiendo el proyecto como una calculadora básica que realiza la suma, resta, multiplicación, división de dos números y da la salida.

Caso 1: programador novato

vacío principal()
{
int a = 10, b = 5; // toma valores estáticos
/ * Todo el usuario que muestra el código va aquí * /
interruptor (ch)
{
caso ‘+’:…
rotura;
caso ‘-‘: …
rotura;
caso ‘*’: …
rotura;
caso ‘/’:…
rotura;
}
}

El programador novato está aprendiendo las características del lenguaje, por lo que no hará hincapié en la interacción del usuario.

Caso 2: mal programador

vacío principal()
{
int a, b; // toma entradas de usuarios


interruptor (ch)
{
case ‘+’: add ();
rotura;
caso ‘-‘: sub ();
rotura;
caso ‘*’: multiplica ();
rotura;
caso ‘/’: divide ();
rotura;
defecto :
rotura;
}
}

Bad Programmer conoce completamente las características del lenguaje.
Las cosas que olvidará manejar
1. ¿Qué sucede si el usuario proporciona solo un número? 😛
Esto terminará en errores del compilador.
2. Descuida los aspectos de mantenibilidad y legibilidad del programa.
p.ej. usando variables como a, b y sin escribir comentarios.

Caso 3: buen programador

vacío principal()
{
int num1, num2; // toma entradas de usuarios


// continúa con el cálculo solo si se proporcionan dos números
if (num1! = 0 y num2! = 0)
{
interruptor (ch)
{
case ‘+’: add (); // lógica para la suma
rotura;
caso ‘-‘: sub (); // lógica para la resta
rotura;
caso ‘*’: multiplica (); // lógica para la multiplicación
rotura;
caso ‘/’: divide (); // lógica para la división
rotura;
defecto :
rotura;
}
}
más
{
se imprime en la pantalla para pedirle al usuario que proporcione 2 números
}
}

Un buen programador comprende los requisitos desde el punto de vista del usuario.
Aquí podrían ser dos usuarios
1. Usuario que hace uso de su aplicación
2. Usuario que trabaja en el código de su aplicación.

Para el usuario principal, proporciona una mejor información para usar su aplicación al máximo.
por ej. en el ejemplo anterior, le está pidiendo al usuario que proporcione 2 números con seguridad, que era el criterio que le faltaba al novato y al mal programador anterior.

Para el usuario secundario que extenderá su código para cambios de complementos, está escribiendo comentarios para cada lógica importante.
Está usando num1, num2 como nombres de variables para garantizar que el lector entienda el código fácilmente.

Espero que tengas la diferencia 🙂

1. Comprenda el problema e intente encontrar soluciones adecuadas.

2. Al escribir código, asegúrese de que sea:
yo. Legible: comentario adecuado, nombres de variables y métodos, sangría.
ii) Mantenible: el código debe ser fácil de entender para cualquiera que trabaje en el futuro en el mismo código, entonces debería ser fácil de mantener en el futuro.
iii) Escalable: cuando aumenta la base de usuarios, se necesita más funcionalidad que el código escrito debería ser fácil de modificar para esos nuevos cambios.

3. El cambio con el tiempo es muy necesario. Como adaptación de nueva tecnología, nuevo lenguaje de programación, nuevos estándares de codificación, nuevo uso de la biblioteca, nueva adaptación del marco, etc.

4.Ser un buen jugador de equipo.

5. Ser un buen comunicador, deportivo, trabajador es un requisito trivial pero importante.

Significa resolver o abordar problemas de la vida real utilizando el desarrollo de software .

Pueden ser unas pocas líneas de código para toda una fábrica de códigos, pero es útil lo que debería ser, aunque solo sea para usted. (¿Trucos de la vida?)

Cosas como –

  • Una línea de JavaScript para votar todas las respuestas en su feed / Me gusta todas las publicaciones en Facebook.
  • Guiones de automatización para verificar resultados universitarios / puntajes de fútbol.
  • O incluso, cartas de amor secretas modificadas al núcleo de Linux de las computadoras de laboratorio. (Sí, eso fue increíble. XD)

Estas habilidades son buscadas por la industria. Significa que tiene la capacidad de identificar y resolver problemas por su cuenta. No solo los escritos en los cuestionarios.

PD: los lenguajes de programación son solo herramientas, no te involucres demasiado en aprenderlos, hay demasiados y demasiados, incluso los profesionales tienen que usar mucho los manuales de referencia.

Sí, debes ser excelente en el desarrollo de software y en los lenguajes de programación como C, C ++, C Shell, C #, Java, Python, Ruby, Ruby on Rails, HTML 5, CSS3, lenguaje de programación R, ASP,. Programación NET, WML, XML, Programación UML

Mi respuesta será un poco diferente, ya que las personas ya hablaron de poder escribir código limpio, escalable y fácil de mantener e intentar automatizar tareas manuales y repetitivas como la calidad de los buenos desarrolladores de software.

1) Tratar con ambigüedad: como desarrolladores de software muchas veces nos encontramos con situaciones en las que los requisitos no son muy claros o no confiamos en el diseño, pero eso está bien. Esto no debe impedir que sigas adelante. La clave para lidiar con la ambigüedad es hablar con tantas personas (personas mayores, gerentes, arquitectos, etc.) como sea posible, incluso sin puntos de datos válidos. Cada discusión con algunas personas muy inteligentes ayuda a aclarar las cosas. La mayoría de las veces, esto reduce la ambigüedad en gran medida y también ahorra retrabajo, lo cual es muy importante para convertirse en un buen desarrollador de software. Cuanto menos retrabajo hay, más productivo eres.

2) Manejo de herramientas: como desarrollador de software, está trabajando con muchas herramientas, sistemas, marcos y no son perfectos. Casi siempre se encontrará con algún problema con una u otra herramienta. Es muy fácil sentirse frustrado cuando enfrenta problemas con estas herramientas, especialmente cuando no tiene idea de las herramientas internas. Comprenda que, como ingeniero de software, su trabajo no es solo codificar cosas, sino que tendrá que lidiar con herramientas y su trabajo es hacer una mierda de todos modos. Estas herramientas están hechas por personas como usted para ayudar a los desarrolladores, por lo que puede haber problemas, así que busque ayuda de las comunidades, contribuya si agrega una función para hacer que la herramienta sea más útil o si resuelve un error relacionado con la herramienta. Así es como crecen las herramientas y ayuda a los desarrolladores como usted a concentrarse en la lógica de su negocio más que en el medio ambiente. Así que no te frustres la próxima vez que encuentres un problema con una herramienta.

3) Entregar: su trabajo no se realiza hasta que su cliente haya recibido el producto y esté satisfecho con eso. Lo que realmente quiero decir con esto es que es dueño de su producto. Estás pasando mucho tiempo, pero si no estás entregando, no importa. Entiendo que las cosas solo toman tiempo, pero lo que realmente quiero decir es que no te rindas y hagas una mierda.

More Interesting

Tengo dos ofertas Uno es de Accenture como ASE y el otro es de AT&T en gestión de infraestructura. ¿Cuál es la mejor opción para una más fresca?

Cómo pasar una entrevista donde estoy menos calificado

Quiero hacer teatro ¿Cuáles son algunos consejos?

¿Qué es una guía paso a paso para un estudiante de ingeniería indio que es un dilatador crónico de primer orden para hacer un regreso en el mundo académico?

¿Cómo sobrevive una persona en un lugar donde no quería estar en primer lugar, pero de alguna manera terminó allí?

¿Qué estructuras de entrevista funcionan mejor para los desarrolladores?

¿Recibiré una llamada de IIM ACBL si tengo 79.8 en 12 y una baja después de 12 si obtengo 99+ en CAT 2015?

Si uno eligiera entre IIT BHU Electronics / Electrical, Civil o Chemical en IIT Madras / Kharagpur y Engineering Physics en IIT Delhi / Madras, ¿qué deberían hacer?

¿Tiene más sentido comenzar una carrera de consultoría económica con una maestría o un doctorado?

¿Qué carrera es mejor? Un contador público o un programador de juegos.

¿Cuál es la puntuación mínima de GRE necesaria para una maestría en ingeniería empotrada / eléctrica en universidades de EE. UU. Con 1 años de experiencia en un fabricante de automóviles líder a nivel mundial?

¿Cuál es la mejor manera para que un traductor encuentre clientes?

¿Es mejor hacer una pasantía (inicio) durante 3 meses y un puntaje GRE de 315-320 o trabajar duro para calificar 325-330 al dejar la pasantía?

Quiero ser psicólogo, pero me han dicho que no debería porque soy autista. ¿Debo renunciar a la idea?

¿Qué es mejor para un BTech (CS) más fresco, unirse a una empresa que paga más o unirse a una marca tecnológica como Infosys / Capgemini pero paga menos?