En primer lugar, me gustaría señalar que al “codificar” o “programar” probablemente se refiera a “ingeniería de software”, es decir, la ciencia de la creación de aplicaciones de software. Las personas nuevas en el campo a menudo confunden el conocimiento de un lenguaje de programación específico (por ejemplo, Java, C ++, PHP, Python) con la habilidad de la ingeniería de software. Un lenguaje de programación es simplemente un medio para lograr el objetivo de construir una aplicación.
En segundo lugar, no hay libros “mejores”, videos de autoinstrucción o programas universitarios sobre ingeniería de software. Se recomiendan pero no los “mejores”.
Si desea embarcarse en una carrera de ingeniería de software, le recomiendo que se arme con:
- Una elección de lenguaje y plataforma: C # y Windows son excelentes.
- Buen material de instrucción (libros, recursos en línea, video tutoriales, un curso introductorio a la universidad, etc.)
- Las herramientas que necesitará: una PC con Windows, Microsoft Visual Studio 2017 (gratis).
- Tiempo y paciencia.
- Pizza y refrescos con cafeína (para darle energía para alimentar su entusiasmo).
En cuanto al material de instrucción, su mejor opción es inscribirse en un curso (gratuito o de otro tipo). Ya sea un instructor dirigido o un video de capacitación a su propio ritmo, no hay nada como un curso formal para ayudarlo a comenzar con lo básico. Si elige aprender por su cuenta comprando uno o más libros, encuentre aquellos que cubran el siguiente programa de estudios:
- ¿Qué libros sugiere para aprender conceptos detallados como el alias de puntero y el cuidado de casos de esquina?
- ¿Me puede recomendar un buen libro para comenzar a aprender programación?
- ¿Cómo afirman algunos libros que enseñan programación en un par de horas o días?
- ¿Cuál es el mejor libro para aprender PHP, incluyendo Object Oriented y MVC?
- ¿Cuáles son algunos libros que enseñan lógica de programación y lógica de diseño sin centrarse en un lenguaje específico?
Los conceptos básicos (cómo funcionan las balas):
- Representación numérica
- álgebra de Boole
- Construcciones de programación (ejecución secuencial, if-then-else, bucles, declaración de cambio / caso)
- Entrada y salida básica.
- Programación modular (funciones, paso de parámetros)
- Estructuras de datos (matrices, listas, listas vinculadas, colas, árboles, tablas hash, conjuntos)
- Algoritmos: algoritmos numéricos, búsqueda, clasificación, recursividad, etc.
- Excepciones y manejo de errores
Programación orientada a objetos (cómo funcionan las armas):
- Objetos y clases
- Encapsulamiento
- Composición y herencia.
- Polimorfismo
Patrones de diseño (cómo funcionan las ametralladoras):
- Fábrica, patrón único, constructor, prototipo
- Adaptador, fachada
- Iterador, comando, mediador
- Editor, suscriptor
- etc.
Programación GUI (cómo pelear una batalla):
- Conceptos básicos impulsados por eventos
- Formas y controles
- Arrastrar y soltar
- Portapapeles de Windows
- Muchos otros temas demasiado numerosos para nombrar
Programación de Windows (cómo pelear una guerra):
- E / S de archivo
- Programación de red
- Regex
- Multimedia
- Habla
- Cifrado
- Muchos otros temas demasiado numerosos para nombrar
¿Suena mucho? Es. Pero recuerde esto: cada océano comienza con una gota de agua.
Le deseo suerte y lo aliento a embarcarse en este maravilloso viaje de ingeniería de software. Espero que te traiga tanta alegría como me ha traído a mí. No hay nada más en la vida que quiera hacer que crear software útil, robusto y utilizable.