- Pensamiento directo y simple.
- Se lógico.
- Siempre tenga en cuenta el principio KISS (Keep It Simple and Stupid) .
- Dado un problema a resolver o una tarea a realizar, piense en lo que podría haber hecho para realizar esa tarea manualmente. Estas tareas lógicas en realidad hacen un proceso (que se denomina algoritmos ).
- Ahora, piense si en la solución propuesta, está realizando alguna tarea adicional, o hay alguna tarea que sea innecesaria o que pueda reducirse o eliminarse. En caso afirmativo, quítelo. Esto se llama optimización .
- También prepare una lista de escenarios excepcionales , que debe abordar, condiciones previas, afirmaciones y validaciones (este enfoque se conoce como programación defensiva ).
- Ahora, tiene alguna solución básica para el problema, intente codificarlo en el lenguaje que mejor se adapte al contexto dado (si necesita más eficiencia computacional , vaya a C, C ++, ensamblaje , si desea escribir menos código, vaya a Python, ruby , etc.)
- Ahora cree una prueba de unidad para su código, que probará su código con entradas buenas y no válidas y verificará el comportamiento de su código. Si es necesario, también realice pruebas de rendimiento y estrés de su código, para determinar cómo se comportará su código en situaciones extrañas.
- Siempre tenga en cuenta que la experiencia práctica y la práctica son de suma importancia.
- Mantente siempre actualizado. La industria del software todavía está evolucionando. Encontrará muchos cambios en la tecnología existente y la introducción de nuevas tecnologías, con el tiempo. Por lo tanto, puede ser que sea bueno en una tecnología por ahora, si no se actualiza, se volverá obsoleto en el mercado, después de 4 a 5 años (este es el hecho desafortunado sobre la industria del software).
Espero que te pueda ayudar.
EDITAR:
Las pautas anteriores son para escribir un buen código. Para convertirse en un buen ingeniero de software, no es suficiente ser bueno escribiendo programas competitivos / fragmentos de código. Las siguientes son las habilidades que se requieren para un buen ingeniero de software:
- Cómo codificar de modo que la base de código haga el trabajo ahora y en el futuro
- Para alcanzar el dominio, ¿deberían los desarrolladores de software invertir tiempo en comprender profundamente el lado del hardware de las cosas?
- ¿Necesitas un título para ser desarrollador de software? ¿Cuál es la diferencia entre los desarrolladores autodidactas y los que tienen títulos?
- ¿Qué proyectos debo hacer para incluir en mi currículum el puesto de desarrollador web, desarrollador de software, desarrollador de C # o SQL?
- ¿Cómo debe un desarrollador de software socialmente responsable?
- Construcción lógica
- Algoritmos
- Estructuras de datos
- Patrones de diseño
- Estilos arquitectónicos de software
- Organización del código fuente
Puedo agregar más a esta lista Pero estas son las cosas básicas que se requieren. Ahora, en lo que respecta a lo que está haciendo hasta ahora, creo (creo), podría ser bueno en el Punto no. 1, 2, (probablemente 3). Pero, el resto de los otros puntos, no creo que puedas experimentar, sin trabajar en un gran proyecto del mundo real. He visto muy codemasters, que son buenos para resolver problemas. Pero, vacilan cuando se les requiere trabajar en equipo, en un proyecto grande (O iniciar un proyecto grande desde cero). Por lo tanto, insisto en que trabaje en cualquier proyecto grande del mundo real (o hipotético si no es posible).
Aparte de eso, tenga una cuenta en stackoverflow. Tenga un repositorio de github, donde tenga su propio código, donde coloque su código. Creo que el mayor activo que tiene una empresa de software / profesional de software es el Código Fuente . También también mantengo el repositorio de github en Mangu-Singh-Rajpurohit (Mangu Singh Rajpurohit). También tengo cuenta github Usuario Mangu Singh Rajpurohit.
En lo que respecta a las mejores prácticas, obtendrá una gran cantidad de artículos que indican las mejores prácticas en C ++ / java.
Por cierto. He trabajado en C / C ++ / Java / Python / Javascript en varios proyectos. Hasta donde yo sé, aparte de las mejores prácticas generales, las mejores prácticas efectivas dependen del requisito del proyecto en el que se trabaja. Por lo tanto, es posible que tenga que seguir ciertas mejores prácticas adicionales para cada proyecto, para cumplir con el requisito (de rendimiento).
Consulte también la forma en que se han diseñado varias aplicaciones excelentes de código abierto. Consulte La arquitectura de las aplicaciones de código abierto
Espero que te pueda ayudar.