Suponiendo que “básico” significa que al menos usted ha comprendido completamente y usado lo siguiente:
- Tipos de datos (estructuras, clases, variables estáticas, anónimas y dinámicas, matrices …)
- Construcciones de flujo de programa (declaraciones, bucles, condicionales, manejo de excepciones, subprocesos múltiples …)
- Funciones, delegados y eventos.
- Genéricos
- Polimorfismo orientado a objetos (interfaz y herencia)
- Acceso a datos (archivos, bases de datos,…) y seguridad.
Si ese es el caso, ahora es capaz de al menos crear un buen software o biblioteca de escritorio / web / móvil por su cuenta 🙂
Volviendo a su pregunta sobre cómo pasar al siguiente nivel: se trata de dominar los aspectos “básicos” anteriores en cualquier dominio del problema y luego mejorar sus habilidades de diseño, implementación y prueba. Hablando de eso, tiene mucho sentido considerar los siguientes consejos:
- Aprenda y aplique el principio SOLID (diseño orientado a objetos) junto con el patrón de arquitectura multicapa al diseñar software complejo.
- Utilice el patrón de diseño del software para garantizar la coherencia del diseño y evitar el código redundante en situaciones reconocibles, pero no los siga servilmente porque eso puede llevar a una ingeniería excesiva.
- “Evite reinventar la rueda” a menos que el propósito sea mejorar una “rueda” existente. Siempre es mejor usar una biblioteca existente que resuelva un problema que su propia solución de elaboración propia, porque los autores de dichas bibliotecas ya han invertido tiempo y esfuerzo suficientes para construir y probar sus bibliotecas.
- Aprenda sobre la organización y gestión de proyectos de software. Esto incluye el uso de cualquiera de las herramientas populares de creación de versiones, como SVN, TFS, Mercurial y Git, para garantizar que los estúpidos accidentes siempre se puedan revertir con facilidad y también para facilitar la implementación de su software. Si es posible, realice compilaciones automatizadas con un sistema de integración continua como Travis CI (Plataforma de integración continua y gratuita hospedada para la comunidad de código abierto) ( consulte la sugerencia de código abierto a continuación ).
- Aprender sobre pruebas (a menudo pruebas de unidad e integración). Ningún buen software puede ser escrito y calificado como “seguro” sin pruebas exhaustivas.
- Aprende leyendo (sí , un desarrollador nunca deja de aprender, ¡eso explica por qué se le llama desarrollador porque primero tiene que desarrollarse por sí mismo! ) y haciendo (la parte divertida de la misma, pero a veces llena de las pesadillas de los defectos de su software y, por lo tanto, gana experiencia cuando los resuelve ). Dado que el campo de la ingeniería de software es tan vasto, la manera más rápida de avanzar es resolviendo sus propios problemas con las habilidades que tiene o que está aprendiendo actualmente de una fuente literaria. Como tal, siempre es preferible crear su propio problema, por ejemplo, intente crear su propia versión de un programa que haya visto en algún lugar. Una buena base es el campo de las matemáticas o los negocios, desde donde se pueden extraer muchos problemas de programación. Podría escribir un código para resolver una fórmula matemática popular o ¿qué pasa con el simple programa utilizado en el supermercado para calcular los precios de los artículos en la tienda? En una nota personal, evite resolver el problema de alguien cuando el problema no le interesa.
- Evite copiar el código de otros desarrolladores, especialmente si no los entiende lo suficientemente bien. En la actualidad, muchos programadores novatos utilizan Stack Overflow como un portapapeles de origen y existe un grave peligro de que el código copiado contenga errores graves que pueden infestar su código en lugar de mejorarlo. De todos modos, Stack Overflow es un buen lugar para hacer preguntas sobre problemas específicos y también recibir buenas respuestas de profesionales.
- Comience con poco y cree su software de forma incremental. Personalmente, prefiero el desarrollo basado en pruebas como el primer enfoque, ya que lo alienta a no inflar su código con funciones y módulos innecesarios. Por lo tanto, evite la trampa de intentar planificar todo el proyecto de software antes de implementarlo, ya que esto a menudo conduce a la parálisis del diseño y reduce la motivación. Adivine cuál sería su reacción al pensar que ha hecho un diseño “perfecto” (después de horas / días / meses de trabajo duro) y luego alguien o usted señala un defecto en el diseño.
- Echa un vistazo a los proyectos de código abierto para obtener información sobre las técnicas de vanguardia actuales en el desarrollo de software. Github (Construye mejor el software, juntos) es un buen lugar para ver proyectos interesantes y quizás crear el tuyo o contribuir a otros. De mi experiencia personal aprendí más de proyectos de código abierto que de todos los proyectos corporativos en los que he trabajado.
- Más que nada, relájate 🙂 Las cosas buenas toman tiempo para alcanzar la madurez: ignora las historias de desarrolladores famosos que hacen parecer que se convirtieron en genios de la noche a la mañana y no. Ningún libro “Aprenda XX en 24 horas” junto con libros con títulos similares puede hacer que se convierta en un profesional en una vía rápida. ¡Cometerás muchos errores al principio y eso es perfectamente normal! Tampoco es necesario abrumarse porque no hay un punto estático en la evolución de la tecnología. Lo que aprende ahora estará obsoleto en aproximadamente 5 años, pero seguirá siendo un trampolín para nuevos cambios y tendencias. Recuerda que nadie (me refiero a nadie) ha dominado completamente la bestia del software tal como existe hoy en día porque es un monstruo en constante crecimiento
Uh… permítanme resumir los consejos de forma concisa: aprenda , comprenda y aplique los conocimientos de forma incremental, luego repita y, cuando domine estas técnicas y otras, ¡felicidades!
- Cómo olvidar el material del curso, incluso cuando tengo mucho interés mientras estudio.
- ¿Qué métricas debo usar para medir mi aprendizaje y desarrollo cuando auto-estudié programación de computadoras?
- Al aprender chino, ¿sería bueno comenzar con los 1000 caracteres más comunes?
- ¿Cuáles son las mejores aplicaciones para aprender la pronunciación en inglés?
- ¿Cuáles son las 5 cosas / temas / temas que todos deben saber / aprender / aprender, y cómo y por qué?