Programación desde cero

Recursos educativos sobre programación e informática.

Preguntas frecuentes

Preguntas frecuentes

Diariamente recibo mensajes y comentarios a través de las redes sociales y el canal de Youtube (¡gracias!) que intento responder individualmente, pero en muchos casos esto se me hace imposible. Por eso, en esta página intentaré abordar las preguntas más comunes.

Click sobre una pregunta para desplegar su respuesta:

   

Sobre programación:

-¿Cómo empiezo a programar? ¿Qué temas debería aprender?

Normalmente se comienza por conocer los fundamentos de la programación, sin importar el lenguaje (los conceptos son comunes y se aplican de forma muy similar en todos): variables, tipos de datos, entrada/salida, funciones, estructuras de datos, programación orientada a objetos, entre otros.

En el canal de Youtube publiqué un curso de nivel básico usando Python apuntado a cualquier persona que quiera aprender a programar (no es un curso para aprender los detalles sobre Python sino los conceptos básicos de programación). También publiqué un video introductorio a la Programación Orientada a Objetos. Otros temas importantes a conocer son la recursividad y los punteros. Por supuesto que hay innumerables temas y cuestiones a conocer, además de distintos lenguajes y frameworks, y también otros paradigmas de programación, por lo que el camino de aprendizaje será constante.

En esta entrevista que me hicieron para el canal amigo “Curso de robótica” hablé sobre consejos para empezar en el camino profesional.

En general, recomiendo no quedarse solo con lo que nos ofrece un curso de programación sino buscar aprender los conceptos de base y las herramientas con las que se suele trabajar en el ámbito laboral que nos interese. Por ejemplo, si vamos a apuntar al desarrollo de aplicaciones web, será importante conocer conceptos como back-end y front-end, arquitectura REST, cuestiones básicas de redes para saber cómo se transmiten los datos en una aplicación web, temas de bases de datos para saber cómo se almacena la información, etc. Si queremos hacer ciencia de datos tendremos que aprender sobre estadísticas, machine learning, visualización de datos, algoritmos de clasificación, big data, etc.

Pero no todo es estudiar y aprender teoría: es importante empezar a practicar por nuestra cuenta con algún lenguaje y algún “framework” que nos faciliten el desarrollo del tipo de aplicaciones que nos interesan.

Por otro lado, muchas personas deciden aprender a programar porque buscan una salida laboral relacionada a la tecnología, sin saber que el puesto de “desarrollador” (o “programador”) es solo una de las posibles carreras de un informático, donde algunas estan más relacionadas a lo técnico y en otras ni siquiera es necesario saber programar.


 
-¿Qué lenguaje debería aprender?

El lenguaje no es lo más importante cuando se está comenzando a programar. Lo central es afianzar los conocimientos sobre fundamentos de la programación, algoritmos y estructuras de datos, que pueden luego trasladarse a cualquier lenguaje. El razonamiento lógico y las habilidades de resolución de problemas son cruciales en la programación, y eso se adquiere con ejercitación, donde el lenguaje es solo una herramienta para poder implementar.

Es posible aprender los fundamentos de la programación sin utilizar un lenguaje específico, por ejemplo mediante pseudocódigo con PSeInt o usando programación por bloques, como los desafíos que propone Pilas Bloques (en esta lista he publicado varios videos explicativos) o la herramienta MIT App Inventor (en esta serie de videos explico cómo desarrollar una aplicación móvil).

Luego podremos decidir qué camino nos interesaría recorrer -de acuerdo al rol que nos gustaría desempeñar- y buscar algún lenguaje y algún framework útil para ese fin. Por ejemplo, si nos interesa dedicarnos a “QA automation”, veremos que hay frameworks como Selenium, Cypress, TestCafe y otros, que corren sobre diversos lenguajes de programación. Será cuestión de seleccionar uno (con algún criterio, que podría ser el gusto personal o también la demanda del mercado laboral).

Siempre recordemos que el lenguaje es solo una herramienta para lograr un fin, por eso es importante que primero definamos nuestro objetivo y luego busquemos las herramientas que mejor se adapten. Mientras tanto, los conocimientos de base y los fundamentos de la programación son temáticas comunes que nos van a ayudar independientemente del lenguaje y tecnologías que elijamos.


 
-¿Qué tipo de computadora necesito para aprender a programar?

Las bases de la programación pueden aprenderse, incluso, sin una computadora: solo con lápiz y papel. Por supuesto que siempre será más interesante y motivador poder ver nuestros programas en funcionamiento, pero no tener computadora no es un obstáculo para empezar. Y, si tenemos una, cualquier máquina a la que podamos acceder será útil (pensemos que hace 30 años también se programaba, y con aparatos de capacidad muy inferior a la de los que existen actualmente), al menos para iniciarnos.

Si tenemos una computadora con un navegador (Firefox, Chrome, Edge o cualquier otro) y conexión a internet, desde el navegador podremos acceder a gran cantidad de recursos para probar nuestro código (varios de ellos están listados en la página de enlaces de este blog, en la sección “Compiladores e intérpretes online”).

Si no tuviéramos la posibilidad de conectarnos a internet, podemos programar en varios lenguajes utilizando solo un editor de textos (como “Bloc de notas” en Windows o Gedit en Linux) y, si instalamos un compilador o intérprete del lenguaje, podremos “traducir” nuestro código y luego ejecutarlo para verlo en funcionamiento. Normalmente estos compiladores o intérpretes no requieren de grandes recursos computacionales (esto significa que pueden usarse en casi cualquier computadora, aunque sea “viejita” y bajo distintos sistemas operativos). También existen aplicaciones para dispositivos móviles que, aunque sean una opción más incómoda usando el teclado en pantalla, también nos permiten escribir, compilar y ejecutar código.

Una vez que tengamos más experiencia y empecemos a crear programas más complejos, es posible que necesitemos mayor poder de procesamiento (por ejemplo, más memoria RAM o bien una placa gráfica más potente si es que nuestro trabajo involucra gráficos pesados o algunas cuestiones relacionadas a inteligencia artificial), o algún tipo de dispositivo específico (por ejemplo, una Mac o algún dispositivo Apple si es que vamos a programar para iOS). Pero esta necesidad dependerá mucho del tipo de proyectos en que nos involucremos.


 
-¿Es necesario estudiar en la universidad o algún instituto terciario para trabajar como informático?

En Argentina y en varios otros países la informática no requiere título habilitante (como sí es el caso de los médicos o los abogados, por ejemplo), por lo que es posible trabajar sin tener ningún título. Pero, al momento de postularse para un puesto laboral, el abanico de conocimientos que nos da un estudio académico suele dar una gran ventaja y, en muchos casos, ser un requerimiento. Además, la universidad nos deja un vocabulario técnico común y un contexto general de varios temas que nos convierte en profesionales más completos. Esto no significia que no se puedan adquirir esos conocimientos por fuera del sistema educativo formal, solo que dependerá de las necesidades de cada persona: el aprendizaje autodidacta no es para todos y algunos se organizan y aprenden mejor con un programa de estudios y docentes que los guíen, mientras que otros obtienen mejores resultados buscando su propio camino con libros, cursos y tutoriales. Lo que sí debe tenerse en cuenta es que la informática es una profesión completa y no basta con saber un poco de programación (así como para ser médico no basta con saberse el sistema respiratorio, supongo 😁), y esto implica mucho trabajo y disciplina.

Por supuesto que podemos aprender mucho por fuera del sistema educativo, pero entonces mi recomendación es la de no limitarse a un curso/libro/tutorial de una temática en particular sino estar constantemente preparándose y buscando nuevas cosas para aprender. Lamentablemente, es muy común que se ofrezcan cursos de un lenguaje o tecnología de moda sin centrarse en los conocimientos de base y, si bien este tipo de cursos pueden ser un buen complemento, no es recomendable tomarlos como única fuente de conocimientos y quedarnos solo con eso. Existen muchas “promesas vacías” al respecto, del estilo “estudia programación por 6 meses y gana en dólares” que suelen rozar la estafa (especialmente porque los puestos laborales hoy en día requieren conocimientos reales y en diversas áreas). No esperaríamos que alguien diseñara los planos de nuestra casa luego de haber estudiado solo un curso de 6 meses de, por ejemplo, dibujo técnico, ¿verdad? Simplemente porque no sabría lo suficiente para hacer un trabajo completo y correcto. Y lo mismo sucede con un desarrollador de software.


 
-¿Puedo empezar en la informática si tengo más de 35 años?

¡Por supuesto! Si hablamos de aprender y hace mucho tiempo que no estudiamos, es posible que debamos tener paciencia hasta adoptar nuevamente el hábito del estudio y que tengamos que habituarnos a tecnologías nuevas que nos resultan totalmente desconocidas. Pero es solo una cuestión de tiempo y determinación. El cerebro humano está preparado para aprender constantemente, en todo momento de su vida. Mantener la curiosidad y la pasión por hacer algo que nos gusta es altamente gratificante. Y, a riesgo de sonar como autora de libros de autoayuda: la única limitación está en nosotros mismos cuando creemos que no podemos hacer algo. Esto no es solo un decir. La mayoría de informáticos de todas las edades sufrimos en algún momento del “síndrome del impostor” que nos auto-sabotea haciéndonos pensar que no somos suficientemente buenos. Es necesario mantener la voluntad y desarrollar la tolerancia a la frustración.

En cuanto al campo profesional, aunque es común que muchas de las personas que se dedican a la informática sean menores de 35 años, muchas empresas buscan activamente a personas de mayor edad por muchos motivos (por experiencia de vida, porque desean darles oportunidades, porque tal vez manejan de manera más madura las “habilidades blandas”, etc.).


 
-¿En qué universidad/institución debería estudiar y qué carrera debería elegir?

No conozco demasiado la situación de otros países, por lo que mi opinión va a estar basada en lo que sé del tema dentro de Argentina.

En principio, esta es una decisión muy personal y que va a estar afectada por cuestiones como la económica (¿institución pública o privada?), la disponibilidad de opciones en el lugar donde vivamos o si estamos dispuestos a viajar o reubicarnos en otro lugar para acceder a más alternativas, si los horarios de cursada que ofrecen se condicen con nuestros horarios personales/laborales, etc.

Fuera de todo esto, algunas dudas comunes son: ¿es preferible una institución universitaria a una terciaria?, ¿Conviene estudiar una carrera de grado o una carrera corta? ¿Ingeniería o licenciatura? ¿Qué diferencia hay entre distintas carreras? ¿Es lo mismo estudiar en cualquier universidad? Intentaré aclarar un poco, dentro de mis posibilidades. Pero mi mejor recomendación es la de contactarse con distintas instituciones solicitando información sobre su oferta académica.

Respecto al tipo de institución, dentro de Argentina hay una división entre las instituciones de educación superior terciarias y las universitarias. Las primeras suelen ofrecer carreras más cortas que las universidades, pero hay casos en que nos encontramos con carreras que tienen la misma duración que una de grado en una universidad cualquiera (es decir, 4 o más años). Y esto es porque hay muchas instituciones diferentes y es difícil generalizar. Usualmente, la educación terciaria suele apuntar a los conocimientos concretos relacionados al tema de estudio mientras que la universitaria suele dar también una formación más general. En cuanto al “manejo” de la carrera en una y en otra, la terciaria puede asemejarse un poco más a la escuela secundaria, con la organización de las carreras dadas por “años” y no por “materias”, y usualmente con horarios fijos de cursada, a diferencia de la universidad, donde es el alumno quien decide qué camino seguir para completar sus estudios y las cursadas pueden llegar a darse en horarios totalmente dispares (y depender de la cantidad de alumnos, docentes y comisiones que existan). Respecto al título que otorgan, el de grado que nos da una universidad nos habilita a cursar estudios de postgrado (maestrías, especializaciones, doctorados), mientras que el título terciario no nos da esta posibilidad (lo que sí suele existir es una articulación entre algunas instituciones terciarias y universidades, permitiendo al alumno continuar sus estudios en la universidad para obtener su título de grado). Por otra parte, en cuanto a salida laboral habrá que tener en cuenta cuál es nuestra intención. En algunos puestos puede que se nos requiera un título universitario y no baste con el terciario, pero en definitiva las profesiones relacionadas a informática son más guiada por los conocimientos que por la formalidad del estudio (por supuesto, una mejor formación nos dará conocimientos más completos, por lo que esto está totalmente relacionado con la carrera que hayamos elegido estudiar).

Sobre si estudiar una carrera corta o una de grado también habrá que pensar en qué queremos lograr a futuro. Sacando de lado lo que ya he dicho sobre que los conocimientos son lo más importante, es necesario saber cómo llegamos a esos conocimientos: una carrera corta puede bastar pero habrá que ver si realmente cubre las áreas necesarias. Como ejemplo, cuando comencé a estudiar me ofrecieron una carrera corta que se orientaba a la programación pero que no tenía ninguna materia relacionada a bases de datos, y realmente era un tema que me hubiese tocado estudiar por mi cuenta de haberme quedado con esa opción. También hay instituciones que ofrecen una carrera corta y luego dan la opción de continuar los estudios para obtener el titulo de grado, por lo que puede ser una buena forma de empezar.

La institución que elijamos dependerá bastante de nuestras posibilidades, pero suele haber algunas que brindan una educación general, pasando un poco por cada tema y dejándonos un trasfondo variado, mientras que en otras vemos una marcada orientación a cierta área (por ejemplo, robótica, inteligencia artificial, etc.).

Respecto a qué carrera estudiar, hay que saber que cada universidad arma su oferta y sus planes de estudio de forma similar (porque son aprobados por un organismo superior) y suelen poner los nombres que les parecen más adecuados. Normalmente vemos opciones como “Licenciatura en sistemas”, “Licenciatura en informática”, “Ingeniería en sistemas”, “Ingeniería en informática”, etc. Y si bien cada universidad da sus razones para diferenciarlas y las materias que componen a una y a otra son diferentes, el trasfondo suele ser similar entre carreras del mismo rango (es decir, las carreras de pregrado entre sí, las de grado entre sí, etc.). Y vuelvo a que los conocimientos son lo realmente importante: si hemos llegado a obtener un título de grado en informática (sea ingeniería o licenciatura), es casi seguro que tendremos las armas básicas necesarias para construir nuestra carrera profesional. Por lo que la elección quedará un poco más librada a los contenidos de la carrera y a cuál nos interese más (tal vez la ingeniería en una universidad da conocimientos de electrónica que no aparecen en la licenciatura de la misma universidad, o tal vez la ingeniería tiene mucha más matemática y queremos “escaparle” un poco 😄). Lo cierto es que un título de grado abre muchas puertas y en el ámbito profesional, independientemente de si somos ingenieros o licenciados y si nuestro título dice “en sistemas” o “en informática”.


 
-¿Qué libros son recomendables para aprender a programar, ejercitar programación o aprender sobre el mundo del software?

Es necesario tener en cuenta que mucho del material más reconocido se encuentra únicamente en inglés. Por suerte, para algunos títulos existen traducciones al español.

Algunos de estos libros son orientados a aprender las bases de la programación y otros son orientados al ejercicio profesional y las buenas prácticas, pero todos ellos son habitualmente recomendados para desarrolladores principiantes y no tanto:
* El programador pragmático - Andrew Hunt, David Thomas
* Código Limpio: Manual de estilo para el desarrollo ágil de software - Robert Martin
* Introduction To Algorithms - “CLRS”
* C++ How to Program - Paul & Harvey Deitel
* Automate the Boring Stuff with Python - Al Sweigart
* Head First Design Patterns - Eric Freeman, Elisabeth Robson, Elisabeth Freeman, Kathy Sierra, Bert Bates
* Agile Software Development: Principles, Patterns, and Practices - Robert Martin
* Fundamentos de programación - Luis Joyanes Aguilar

Y, fuera de lo que es la programación concretamente, también hay varios libros muy interesantes sobre temas variados, que nos tocan de cerca en esta profesión. Por ejemplo: los sistemas operativos, la arquitectura de computadoras, conceptos de matemática y lógica avanzada, procesos de desarrollo de software, la experiencia de usuario, y hasta cómo desarrollar los buenos hábitos y la disciplina (¡muy importantes cuando aprendemos algo nuevo!):


* Fundamentos de sistemas operativos - Silberschatz, Galvin, Gagne
* Organización y arquitectura de computadores - William Stallings
* Code: The hidden language of computer hardware and software - Charles Petzold
* But how Do it Know?: The Basic Principles of Computers for Everyone - J. Clark Scott
* La nueva mente del emperador - Roger Penrose
* Desarrollo ágil esencial: vuelta a las raíces - Robert Martin
* La psicología de los objetos cotidianos - Don Norman
* No me hagas pensar - Steve Krug
* Hábitos atómicos - James Clear
* Los 7 hábitos de la gente altamente efectiva - Stephen R. Covey


 
-¿Qué recursos en internet pueden ayudarme a aprender o practicar programación?

Por suerte, hay muchísimos. En mi página de enlaces vas a encontrar varios, clasificados por categorías.


 
-¿Qué lenguaje me conviene usar para mi proyecto?

No hay una respuesta única, aunque el tipo de proyecto influye mucho. Para encarar algo serio, debe hacerse un análisis cuidadoso de las necesidades y arquitectura del proyecto, y definir el “stack tecnológico” más apropiado. En términos generales, esta publicación podría servir como guía introductoria.


 
-¿Cómo podría prepararme para una entrevista laboral de programación?

En este punto debo mencionar que, para tener éxito como informáticos en el mundo profesional, es casi imprescindible hablar inglés. Sí, es posible trabajar para empresas, organizaciones o clientes de habla hispana, pero el mercado de la tecnología es global por naturaleza y es en esa globalidad donde se hallan grandes oportunidades para crecer y desarrollarnos profesionalmente. Es por eso que la gran mayoría de los recursos y el material más reconocido se encuentra únicamente en inglés.

Aunque en la página de enlaces puede encontrarse un listado más extenso, estos son algunos sitios web donde podremos ejercitar nuestras habilidades, con problemas usualmente ordenados por categorías temáticas y según su dificultad:
* Hackerrank
* Leet Code
* Codeforces

También existen algunos libros orientados exclusivamente a la preparación de entrevistas:
* Cracking the Coding Interview: 189 Programming Questions and Solutions - Gayle Laakmann McDowell
* Algorithms for Interviews - Adnan Aziz, Amit Prakash
* Elements of Programming Interviews in Python - Aziz, Lee, Prakash
* Elements of Programming Interviews in Java - Aziz, Lee, Prakash
* Programming Interviews Exposed: Secrets to Landing Your Next Job - Mongan, Kindler, Giguère
* Ace the Programming Interview: 160 Questions and Answers for Success - Guiness


 
-¿Es realmente tan importante hablar inglés si quiero trabajar en informática?

No sé si es la respuesta que esperabas, pero: sí. Y no solo por escrito sino que es necesario comprender el inglés hablado y también poder hablarlo (tal vez no sea tan importante la perfección, pero sí poder comunicarse fluidamente).

Uno de los motivos es que las profesiones relacionadas a tecnología suelen tener un carácter global por naturaleza, por lo que un idioma común nos facilita el intercambio de ideas, opiniones, dudas, etc. Y, cuando buscamos información sobre cómo hacer algo, siempre querremos acceder a la mayor cantidad de soluciones posibles, sin barreras idiomáticas.

Además, las investigaciones, novedades y los libros más recomendados suelen publicarse en inglés, por lo que, esperar a que esté disponible una traducción a nuestro idioma no suele ser la mejor estrategia si queremos mantenernos actualizados.

Sumado a esto, la mayoría de conceptos, nombres técnicos y herramientas son dados en inglés y las traducciones -cuando las hay- suelen ser un poco “toscas” o incluso diferir entre países de habla hispana (un ejemplo es la palabra “array”, que en Latinoamérica se traduce como “arreglo” y en España como “vector” o “matriz”).

Y, dado que el mercado de la tecnología es internacional, es usual trabajar en equipos dispersos con integrantes de distintas partes del mundo, por lo que el inglés viene en nuestra ayuda cuando eso sucede.


 
-¿Cómo puedo empezar a trabajar en informática? ¿Existen otros roles además de "programador" o "desarrollador"?

¡Por supuesto! Y los hay más técnicos o menos técnicos, así como también algunos son más “amigables” con el principiante. Eso sí: como siempre aclaro, en el mundo profesional ayuda mucho hablar inglés, cualquiera sea el puesto al que aspires. Pero no todo es “programar” y no todos los miembros de un equipo de desarrollo de software tienen tareas tan técnicas.

Habitualmente, en los proyectos de software suelen aplicarse “metodologías ágiles” y suele haber ciertos roles -que pueden existir o no- dependiendo de las necesidades, del tamaño del equipo y del tipo de producto. En algunos casos la programación es una habilidad central, en otros es deseable y en otros ni siquiera es necesaria. Por ejemplo, si buscas ser “project manager” será importante que tengas buenas habilidades de comunicación, de liderazgo, de organización y planificación, de manejo de riesgos, etc., y saber programar puede beneficiarte pero normalmente no es un requisito. Si, en cambio, te interesa el camino de QA (“quality assurance” o “quality engineer”), será necesario que tengas pensamiento crítico, atención a los detalles, buena comunicación, y podrías dedicarte únicamente a hacer QA “manual” sin conocimientos de programación, aunque saber programar y otros conocimientos técnicos te abrirían nuevos caminos dentro de esta carrera y se están volviendo cada vez más un requisito. Esos son solo dos ejemplos, pero te animo a que investigues otros roles que pueden existir en un equipo de desarrollo y que tal vez te permitan aplicar tus habilidades ya adquiridas o se ajusten más a tus intereses. Por mencionar algunos ejemplos:

  • Software developer/engineer (back-end, front-end, full-stack, mobile, etc.)
  • Business Analyst
  • Product Owner
  • Scrum master
  • Project manager
  • Diseñador UX / UI
  • QA (manual, automatizado, y aquí también pueden entrar los expertos en seguridad informática)
  • Arquitecto de software
  • DevOps
  • DBA
  • Data engineer
  • Machine learning engineer

 
-¿Qué habilidades se recomienda tener para iniciarme en el mundo profesional?

Es difícil dar una única respuesta, que además depende del rol que vayas a desempeñar. Aunque siempre hay ciertas técnicas, metodologías y herramientas que están en boga y que pueden ser un buen agregado a nuestro curriculum vitae. Revisar qué tecnologías son las más solicitadas en el mercado puede ser un buen indicador, pero siempre el punto de partida deben ser los conceptos básicos (como programación, estructuras de datos, diseño de objetos, diseño de bases de datos, etc.).

Actualmente, las metodologías ágiles suelen ser las más elegidas para los proyectos de desarrollo de software, por lo que será interesante conocer algo sobre ellas, saber cómo se organiza un equipo (por ejemplo, utilizando “scrum”, “kanban” o “lean”) y qué se espera de cada integrante, cómo planifican las tareas (usualmente en “sprints”), cuál es el ciclo de vida del software (“SDLC”), así como conocer conceptos y terminología generales que nos permitan “hablar un idioma común” con nuestros compañeros, donde muchos de ellos se usan directamente en inglés. Términos como “requerimiento”, “code freeze”, “release candidate”, “mvp” (“minium viable product”), “daily scrum” o “daily standup”, “poker planning”, “backlog”, “sprint retrospective”, “acceptance criteria”, “regression test”, “continuous integration”, “epics”, “code review”, “pull request” (o “PR”) y seguramente varios más que se me están olvidando en este momento, son comunes en el día a día laboral.

Por otra parte, habrá herramientas y tecnologías puntuales a dominar en cada rol y cada proyecto. Por ejemplo, si el puesto implica modificar código, seguramente se utilice algún sistema de versionado como Git o Subversion. También suele ser muy útil estar familiarizado (aunque sea de forma básica) Linux. Hoy es común que los proyectos utilicen algún tipo de contenedores o de virtualización, por lo que necesitaremos conocer sobre tecnologías como Docker, Kubernetes, Vagrant, VirtualBox o VMware. Además, los proyectos medianos y grandes suelen utilizar sistemas de “continuous integration” como CircleCI, Travis o Jenkins.

Hoy también existen los servicios de computación en la nube, que parecen haber llegado para quedarse: “Software as a Service” (SaaS), “Infrastructure as a Service” (IaaS), “Platform as a Service” (PaaS). Esto es todo un mundo pero es necesario que conozcamos al menos algo de ellos. Los tres principales proveedores son Amazon Web Services, Azure (Microsoft) y Google Cloud Platform. Cada uno tiene cientos (sí, cientos) de soluciones “cloud” para distintos usos, pero suele haber un grupo de servicios más comúnmente usados, como los que permiten gestionar bases de datos, almacenamiento de archivos, crear máquinas virtuales, notificación de eventos, y muchísimos más.

Por supuesto, también nos será muy útil tener conocimientos sobre SQL y bases de datos relacionales y no relacionales, APIs (verbos HTTP, REST, SOAP, GraphQL), arquitectura de microservicios, patrones de diseño, infraestructura…

Y, como esta profesión es tan cambiante y todo varía constantemente, siempre habrá nuevas tecnologías y formas de trabajo de las cuales deberemos al menos estar enterados si queremos mantenernos actualizados.


 

Sobre Programación Desde Cero:

-¿Qué es Programación Desde Cero?

Es el espacio a través del cual comparto material educativo sobre programación e informática, especialmente (pero no únicamente) para principiantes. Publico videos en Youtube y contenidos breves en redes sociales (Twitter / Facebook / Instagram / Pinterest) con conceptos explicados, ejercicios, desafíos, etc. Este blog nuclea esos contenidos publicados en diferentes otros medios.


 
-¿Cómo empezó?

Alrededor de 2011 comencé publicando en este blog algunos artículos que escribía cuando aún era estudiante de Licenciatura en Sistemas.
Unos años después hice algunos videos explicativos para mis alumnos de la universidad, sin intenciones de que se utilizaran fuera de ese ámbito.
Luego decidí crear más contenidos, para ponerlos a disposición de cualquier persona que pudiera necesitarlos, y por eso comencé a subir más videos de diferentes temas y a publicar en redes sociales, siempre con el ánimo de divulgar, compartir y continuar aprendiendo.


 
-¿Quién genera los contenidos de Programación Desde Cero?

Principalmente yo, Patricia 🙂. Aunque siempre estoy recibiendo ayuda de amigos, colegas y compañeros (o ex-compañeros) de universidad y laborales, a los que recurro para consultar cuestiones específicas que ellos conocen en mayor profundidad y en las que tienen mayor experiencia.


 
-¿Puedo enviar mi problema sobre código para que me ayudes a resolverlo?

Lamentablemente, mis actividades no me permiten brindar este tipo de asesorías personalizadas. Además, existe otro motivo por el que no puedo ayudar cuando se trata de una tarea académica: en esos casos es necesario tener en cuenta las restricciones y estilos de código que los docentes hayan decidido adoptar en el curso que se está tomando, por lo que una resolución que no contemple estos detalles posiblemente no sea útil.
De todas formas, esta guía puede ayudarte para resolver problemas de código y en esta publicación intento ayudar a investigar los errores en el código. También publiqué este video sobre cómo “debuggear” y este otro sobre cómo probar una función. Y en la página de enlaces podrás encontrar varias comunidades de programadores donde es posible hacer preguntas y recibir consejos.


 
-¿Con qué grabás tus videos?

A lo largo del tiempo he ido cambiando de software y equipo utilizado. Actualmente uso un micrófono Blue Snowball, Audacity y VoiceMeeter para grabación y edición del sonido. Para grabar la pantalla utilizo Flashback Express y HitFilm Express para la edición de video (ambos en sus versiones gratuitas). En cuanto a los contenidos, uso principalmente Microsoft PowerPoint o Google Slides para diseñar las presentaciones y luego diferentes herramientas como IDEs o compiladores online (en este aspecto me gusta especialmente la funcionalidad de Python tutor para observar los contenidos de la memoria durante la ejecución de un programa).


 
-¿Dictas cursos de programación u otros temas de informática?

Por el momento, no. Aunque es algo que me han pedido mucho y es mi intención comenzar a hacer. Pero la organización y preparación de un curso es algo que debe hacerse con tiempo y cuidado, además de buscar la mejor modalidad para que todos los estudiantes puedan sacar el máximo provecho. En cuanto tenga novedades al respecto, estaré publicándolo en las cuentas de Programación Desde Cero en las redes sociales.


 

Sobre mí:

-¿Quién crea este sitio web y el canal de Youtube?

Me llamo Patricia Miguel y soy de Argentina.


 
-¿Qué estudios universitarios cursaste?

Después de graduarme en la facultad de ciencias jurídicas de la UNLP y descubrir que no era lo mío, volví a la universidad para estudiar informática en la UNNOBA. Comencé por obtener dos títulos intermedios (“Programador Universitario” y “Analista de Sistemas”) y continué estudiando para llegar al título de grado de Licenciatura en Sistemas.


 
-¿Qué experiencia docente tenés?

En 2010, siendo todavía estudiante en UNNOBA, comencé allí mismo como ayudante de cátedra en dos materias del primer año de la universidad, comunes a distintas carreras de informática: “Introducción a la Programación Imperativa” y “Programación Imperativa”. Durante 2011 también fui ayudante en el curso de ingreso para los alumnos que comenzaban a estudiar ese año. Continué en las dos materias mencionadas al principio hasta que, en 2014 empecé a trabajar oficialmente como docente, hasta 2019.
Fuera del ámbito universitario, a principios de 2021 fui parte del equipo docente de un taller virtual del “Club de chicas programadoras”.


 
-¿En qué trabajás?

Actualmente soy desarrolladora de software. Previamente, durante 11 años me dediqué a QA (“Quality Assurance”) de software y durante 10 años di clases de programación en la universidad de mi ciudad.


 

¿Hay alguna forma de realizar una contribución económica, para apoyar la propuesta de Programación Desde Cero?

Antes que nada, muchas gracias por el aprecio. ❤️

La mayoría de los contenidos que publico son gratuitos pero, si te resultan útiles y quisieras brindar tu apoyo, podrías invitarme un “cafecito” (Mercadopago/Bitcoin), o también hacerlo mediante Paypal.


   

YouTube · Twitter · Instagram · Facebook · Pinterest · GitHub