Skip to content

alejolp/aprender-programacion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 

Repository files navigation

Como ser Programador Senior

El siguiente es un plan de estudios de bases y fundamentos para aprender programacion. NO ESTÁ EN ORDEN.

En general puede llevar de 15 a 25 años aprender (a fondo) todo lo de esta lista.

Uno de los problemas más comunes al empezar a aprender programación es enfocarse solo en los lenguajes y no enfocarse en los fundamentos y conceptos de base.

La mejor forma de aprender es haciendo, pero hay que saber decidir qué hacer. No hace falta ser experto en cada cosa.

Knowing is not enough; we must apply. Willing is not enough; we must do – Johann Wolfgang von Goethe

Planes de estudios en universidades de Argentina

Otras referencias

Arquitectura de Computadoras (Hardware)

Citas:

  • People who are really serious about software should make their own hardware – Alan Kay, Steve Jobs.
  • Hay solo dos problemas difı́ciles en computación: coherencia de caché, ponerle nombre a las cosas, y los errores de +/- 1.

Temas:

  • Jerarquía de memoria y latencia
  • Localidad de referencias
  • Punto flotante

Articulos:

Libros:

  • “Computer Organization and Architecture”, William Stallings.
  • “Computer Organization and Design: The Hardware/Software Interface”, David A. Patterson, John L. Hennessy.
  • “Structured Computer Organization”, Andrew S. Tanenbaum.
  • “Optimizing software in C++ An optimization guide for Windows, Linux, and Mac platforms”, Agner Fog. 16
  • “Handbook of Floating-Point Arithmetic”, Jean-Michel Muller.

Lenguajes de Programación

Citas:

  • There are only two kinds of languages: the ones people complain about and the ones nobody uses. – Bjarne Stroustrup

Temas:

  • Imperativos,
  • Objetos,
  • Funcional
  • Conceptos de lenguajes
  • Expresiones regulares

Algoritmos y estructuras de datos

Citas:

  • I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important. Bad programmers worry about the code. Good programmers worry about data structures and their relationships. — Linus Torvalds 17

  • Shortly after the wall fell in 1990, an American and a Russian who had both worked on development of weapons meet. The American asks: “When you developed the Bomb, how were you able to perform such an enormous amount of computing with your weak computers?”. The Russian responses: “We used better algorithms.” – Dinitz Algorithm, Yefim Dinitz

Temas:

  • Recursion, búsqueda binaria.
  • Eficiencia, Big Oh
  • Arrays, Listas, Árboles, Grafos, Hashtables

Libros:

  • Introduction to Algorithms, by Cormen.
  • The Algorithm Design Manual, by Skiena.
  • Data Structures and Algorithms in Java, by Mark Weiss.

Diseño de software con Objetos

  • Patrones de Diseño en Objetos
  • SOLID
  • Refactoring

Articulos:

Libros:

  • Design patterns: elements of reusable object-oriented software, by Erich Gamma.
  • Refactoring, by Martin Fowler
  • Object-Oriented Analysis and Design, by Grady Booch.
  • Clean Architecture, by Robert C. Martin.
  • Head First Design Patterns
  • Head First Object-Oriented Analysis and Design

Diseño de Sistemas

Citas:

  • Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won’t usually need your flowcharts; they’ll be obvious. – Fred Brooks.
  • A distributed system is one in which the failure of a computer you didn’t even know existed can render your own computer unusable – Lamport

Temas:

  • Arquitectura de Software
  • SLA

Libros:

  • Clean Architecture, by Robert Martin.
  • Computer Systems: A Programmer's Perspective, Bryant O'Hallaron
  • System design interview, by Alex Xu.
  • Designing data-intensive applications, by Kleppmann, Martin.
  • Principles of Computer System Design (Volume 1), by by Jerome H. Saltzer, M. Frans Kaashoek. Volume 2 PDF 25
  • Distributed Systems: Concepts and Design, by Couloris.

Programación Funcional

Libros:

  • Introduction to Functional Programming (using Haskell), Bird.
  • Thinking Functionally with Haskell, Bird.
  • Algorithm Design with Haskell, Bird.
  • Programming in Haskell, Hutton.
  • Structure and Interpretation of Computer Programs, Abelson, Sussman.

Ingeniería de Software

Citas:

  • Knowing is not enough; we must apply. Willing is not enough; we must do – Johann Wolfgang von Goethe

Temas:

  • "Especificación, desarrollo, validación y evolución del software"
  • Interacción con el producto y negocio

Libros:

  • Software Engineering, Ian Sommerville
  • Mythical Man-Month, The: Essays on Software Engineering, by Frederick Brooks.
  • The Pragmatic Programmer: your journey to mastery, by David Thomas (Author), Andrew Hunt.

Uso de un frameworks

  • MVC

Uso de repositorios de dependencias de código

Maven, NPM, PIP, apt-get

Aplicaciones web

  • HTML, CSS, JavaScript
  • Front-end
  • Back-end
  • HTTP, WebSocket
  • API REST

Bases de datos

  • Normalización, 1FN,
  • Transacciones,
  • ORM.
  • Modelo entidad-relacion, SQL
  • NoSQL, KV.
  • Kafka, MQs.

Libros:

  • Database Design for Mere Mortals: A Hands-On Guide to Relational Database Design, Hernandez Michael.
  • Database design and relational theory: normal forms and all that jazz, Date C J.
  • Database system concepts, Silberschatz.
  • An advanced course in database systems: beyond relational databases, by Dietrich, Urban.

Pruebas y testing

  • Unit, System, Integration, Dev-env.

Metodologías Ágiles

  • Scrum.
  • Continuous integration.

Libros:

  • Learning Agile: Understanding Scrum, XP, Lean, and Kanban, by Stellman, Grene.

Sistemas concurrentes, paralelos y distribuídos

  • Multiples CPUs, threads, procesos
  • Tolerancia a fallos,
  • SLA
  • Programación de tiempo real

Libros:

  • Concurrent Programming: Principles and Practice, Andrews.
  • Principles of Computer System Design (Volume 1), by by Jerome H. Saltzer, M. Frans Kaashoek. Volume 2 PDF 25
  • Distributed Systems: Concepts and Design, by Couloris.

Redes de computadoras

IPv6, TCP-UDP, HTTP, DNS, Routers, etc.

Libros:

  • Computer Networks, Tanenbaum.
  • Computer Networking: A Top-Down Approach, Kurose, Ross.

Sistemas operativos

  • Uso de Windows
  • Uso de Linux

Libros:

  • Modern Operating Systems, Tanenbaum.
  • Operating System Concepts, Silberschatz, Galvin.
  • Operating Systems, Stallings.
  • Operating Systems: Three Easy Pieces, by Remzi H Arpaci-Dusseau, Andrea C Arpaci-Dusseau
  • Sistemas operativos distribuidos, Tanenbaum.

Uso de herramientas

  • IDE,
  • SCMs, Git,
  • Debuggers,
  • Issue tracking software

Uso de documentación

  • Buscar en Google
  • Leer documentación técnica
  • Leer Stack Overflow

Codigo legacy

Libros:

  • Working Effectively with Legacy Code, by Michael Feathers

Administracion de Proyectos

  • Project management
  • Gantt charts

Seguridad

  • Software vs Hardware
  • Pentesting
  • OWASP
  • Capa 8
  • Privacidad, protección de datos personales, GDPR

Libros:

  • Cryptography and Network Security: Principles and Practice, Stallings.
  • Everyday Cryptography: Fundamental Principles and Applications, Keith Martin

Cloud Computing

  • "Serverless"
  • Escalabilidad
  • Contenedores
  • AWS, GCP, Azure, otros.
  • SLA

Matemáticas

  • Algebra
  • Análisis
  • Probabilidad y estadística
  • Numeros aleatorios
  • Espacios vectoriales
  • Métodos numéricos

Parsers y Compiladores

Libros:

  • Compilers: Principles, Techniques, and Tools, by Aho.
  • Engineering a Compiler, by Keith Cooper.

Modelos y Simulaciones

  • C++, Simula
  • Simulación por eventos discretos
  • Queue theory

Libros:

  • Performance Modeling and Design of Computer Systems: Queueing Theory in Action, by Mor Harchol-Balter.
  • Fundamentals of Queueing Theory, Gross Harris.

Teoría de la Computación

  • Maquinas de turing
  • Lambda Calculo
  • Verificación Formal de Programas
  • Computabilidad y Complejidad

Logica e Inteligencia Artificial

Enunciados y predicados

Libros:

  • Lógica para matemáticos, Hamilton.

Aspectos legales, profesionales, y éticos

  • "Unintended Acceleration"
  • "Diesel Emissions"
  • GDPR

Interacción con personas

Libros:

  • Soft Skills: The software developer's life manual, John Sonmez

Entrevistas laborales

Libros:

  • Cracking the Coding Interview
  • System design interview, by Alex Xu.
  • Programming Interviews Exposed: Coding Your Way Through the Interview, Mongan

About

Plan de estudios para aprender programacion

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published