Aclaro que este recurso será actualizado periódicamente, por lo que te recomiendo darle star para estar al tanto de su estado en GitHub.
Esta guia no es más que una guia de estudio con recursos relevantes para conseguir competencias y conocimientos de cálidad con el fin de lograr un pérfil de un desarrollador de software completo.
Personalmente invito al lector a seguir paso por paso cada sección/entry de la guia para una mejor experiencia.
Cada sección incluye un apartado de recursos que usted debe estudiar.
Caution
Yo no promuevo la piratería pero casi cualquier libro se puede conseguir fácil en internet, bibliotecas públicas o archivos publicos (Anna's Archive, Internet Archive), aqui indexo los recursos de sitios oficiales (en su mayoría) para apoyar a sus autores, por lo que es su responsabilidad cómo conseguirlos.
La motivación es muy importante a la hora de empezar a estudiar. Sin motivación ni metas no llegará a ningún lado, en el mundo tech en especial la programación es un universo de conocimientos y para abordarlo hay que plantearse metas y disfrutar del proceso.
La mayoria de personas para las que esta guia va dirigida es muy posible que no estén muy familiarizados con la lectura. En mi recomendación personal si usted es una persona que no le entusiasma leer, le recomiendo empezar de una vez a leer poco a poco hasta que ya no sea abrumador, pues la lectura en especial en términos de ingenieria de software es fundamental ya que los mejores recursos, documentación y articulos técnicos los va a encontrar en texto.
Las bases son importantes y aunque se pueden saltar, no se recomienda hacerlo. Pues cada base es el cimiento para abordar temas más complejos y saltarse las bases solo creará conocimientos mediocres y pérdidas incalculables de tiempo y esfuerzo, por lo que dominar las bases tendrá innumerables ventajas.
Important
Comprender las ciencias de la computación es casi que obligatorio si se quiere tener un dominio amplio en el campo.
La lógica de programación es una habilidad que todos los programadores debemos desarrollar; de esta depende la calidad de las soluciones que empleamos para resolver problemas a lo largo de nuestra carrera. Perfeccionar esta habilidad depende de estudio y experiencia, por lo que no nos apresuremos y veamos los fundamentos.
Un algoritmo no es más que la serie de pasos que debe ejecutar un proceso para llegar a una solución. El algoritmo no es código como tal; usualmente se hacen en diagramas de flujo o en pseudocódigo, o simplemente texto. La forma en la que se escriban no importa, lo principal es entender como funcionan y cómo debemos hacerlo.
Como ejemplo, piensa en una receta para un pastel. En la receta estará escrita la cantidad necesaria de ingredientes, tiempos, y todos los pasos para hacer un pastel. El proceso sería cuando cocinamos el pastel y el resultado del programa sería el pastel en sí.
Entender cómo funciona un algoritmo es importante, por lo que aquí te comparto los siguientes recursos (algunos en inglés):
- Grokking Algoritms (MUY RECOMENDADO)
- Introducción a los Algoritmos - Desarrollo para todos
- Algoritmos - Khan Academy (Recomendado)
- Algoritmos - UAA (Es una buena introducción)
El pseudocódigo es aquel que se asemeja al lenguaje natural y puede ser en español. Es sumamente útil para familiarizarte con los conceptos clave de un lenguaje de programación y entender los conceptos básicos de la programación. Este proceso, si no tienes experiencia con programación, no recomiendo saltártelo, ya que te va a dar una base suficiente como para iniciar en un lenguaje de programación.
En esta guía se recomienda empezar con Pseint, un proyecto de código abierto utilizado principalmente en el contexto académico. Puedes instalarlo aquí.
Una vez lo instales, debes estudiar los fundamentos y hacer ejercicios, pues la práctica va a asentar muchas cosas.
Para empezar, puedes hacerlo con estos pequeños cursos:
Una vez tengamos claros los fundamentos se debe practicar y jugar con ejercicios para entender mejor. Puede sentirse libre de hacer todo tipo de ejercicios con este programa
EJERCICIOS EN PSEINT - Click para expandir
Nivel Básico
Hola, Mundo: Escribe un algoritmo que imprima en pantalla el mensaje "Hola, Mundo".
Suma de dos números: Solicita al usuario dos números e imprime la suma de ambos.
Cálculo del área de un rectángulo: Pide al usuario el largo y el ancho de un rectángulo, y calcula e imprime el área.
Conversión de grados Celsius a Fahrenheit: Solicita una temperatura en grados Celsius y convierte a Fahrenheit usando la fórmula: F=C×1.8+32F=C×1.8+32.
Determinar si un número es par o impar: Pide un número al usuario y determina si es par o impar.
Calculadora de descuento: Pide el precio original de un producto y el porcentaje de descuento. Calcula el precio final con el descuento aplicado.
Edad en días: Solicita la edad de una persona en años y convierte esa cantidad a días.
Promedio de tres números: Solicita tres números e imprime su promedio.
Conversión de metros a centímetros: Pide al usuario una cantidad en metros y conviértela a centímetros.
Números del 1 al 10: Escribe un algoritmo que imprima en pantalla los números del 1 al 10.
Nivel Intermedio
Tabla de multiplicar: Solicita un número entero y genera la tabla de multiplicar de ese número del 1 al 10.
Calculadora básica: Crea un programa que solicite dos números y luego pida al usuario que elija una operación (suma, resta, multiplicación o división) para realizar con esos números.
Cálculo de salario semanal: Solicita el salario por hora y las horas trabajadas en una semana, y calcula el salario semanal. Considera el pago de horas extras si se trabaja más de 40 horas (pagadas al 1.5 del salario normal).
Suma de los primeros N números: Pide al usuario un número NN y calcula la suma de los números del 1 al NN.
Número mayor de tres: Solicita tres números diferentes e imprime el mayor de los tres.
Calculadora de IMC: Solicita el peso en kilogramos y la altura en metros de una persona. Calcula el Índice de Masa Corporal (IMC) y muestra un mensaje indicando si está en el rango de bajo peso, normal, sobrepeso o obesidad.
Conversión de segundos a horas, minutos y segundos: Solicita una cantidad de segundos e imprime la conversión en horas, minutos y segundos.
Número perfecto: Solicita un número e indica si es un número perfecto. Un número perfecto es aquel que es igual a la suma de sus divisores propios positivos (excluyendo el mismo número).
Serie de Fibonacci: Solicita un número NN y muestra los primeros NN términos de la serie de Fibonacci.
Contador de dígitos: Solicita un número entero positivo y cuenta cuántos dígitos tiene.
Nivel Avanzado
Primo o no primo: Solicita un número e indica si es un número primo o no.
Adivina el número: Programa un juego en el que la computadora elige un número al azar entre 1 y 100, y el usuario debe adivinarlo. La computadora debe responder si el número ingresado es mayor o menor que el número secreto hasta que el usuario acierte.
Factorial de un número: Solicita un número entero no negativo y calcula su factorial.
Número palíndromo: Solicita un número y verifica si es un palíndromo (un número que se lee igual de izquierda a derecha y de derecha a izquierda).
Conversión de número a binario: Solicita un número entero y convierte el número a su representación en binario.
Ordenar tres números: Solicita tres números y ordénalos de menor a mayor sin utilizar funciones de ordenamiento.
Promedio de calificaciones: Crea un algoritmo que solicite calificaciones indefinidamente hasta que el usuario indique que ya no quiere ingresar más datos. Calcula el promedio de todas las calificaciones ingresadas.
Serie de números impares: Solicita un número NN e imprime los primeros NN números impares.
Ordenar lista de números: Crea un programa que permita al usuario ingresar una lista de números y luego los ordene de menor a mayor.
Si la meta es llegar lejos con la programación y tener una comprensión superior, no debes olvidarte de las matemáticas pues estas te abren las puertas a una infinidad de soluciones por la que podrás destacar.
Comprender conceptos informaticos más allá de hardware y cómo una computadora funciona, es muy importante para hacer una gestión de recursos correcta y un correcto desempeño en ingenieria.
- Introducción a la informatica - Hardvard CS50 (Curso de computer science)
- The Hidden Language of Computer Hardware and Software — Charles Petzold (Libro recomendado)
- Building a modern computer from first principes
- Computer Science crash course (Este recurso se expande más allá de solo informática)
Las estructuras de datos organizan y gestionan información eficientemente. Son clave en software porque impactan el rendimiento, optimizan algoritmos y facilitan la resolución de problemas. En esta sección se invita a estudiar la teoría e intentar entender sus algoritmos y su estructura. No se preocupe si no lo entiende, usted deberá verlo a detalle después.
- Opción 1 | INTRODUCCIÓN ESTRUCTURAS DE DATOS - Usalesiana
- Opción 2 | INTRODUCCION ESTRUCTURAS DE DATOS
- Articulo | ESTRUCTURAS DE DATOS
Para ver luego:
El código es la forma en la que nos comunicamos con lo que vamos a crear, por lo que dominar un lenguaje de programación será lo que nos permitirá crear soluciones mediante software: