Last Thursday I offer a class at university titled «Code Design». Maybe the name was not the best, the idea of the class was to review and discuss good coding practices. The slide deck of the class is available for download here.
Categoría: academia
Bertrand Meyer in Argentina
Last Wednesday I attend to an open class by Bertrand Meyer at UTN Buenos Aires. It was about «How we teach programming». It was interesting but it quite filled my expectations. In the first part, Meyer did a review of the different ways of teaching programming in introductory courses (first year courses), explaining the pros and cons of each. During the second part he introduced the way he uses in his courses and that is explained in his next book: Touch of class: Learning to program well with objects and contracts.
SmallTalk class
Last week, like every end of semester I gave a special introductory class about SmallTalk programming. This time I decided to modify the slidedeck to put more emphasis on the fact that in SmallTalk everything is an object. The slide deck is available for download here.
Enjoy it!
Technical careers scholarships
The Argentine goverment is implementing a scholarship program called Becas Bicentenario with the aim of promoting the study of technical carrers. During the ’90 the Argentine industry suffer a lot, many factories closed. At the same time young people prefered to study humanist carrers. After the 2001 crisis, local industries start to expand again -and this expansion still continue. But there aren’t enough technitians to suppport this expansion and that is why the goverment has implemented this initiative. If you are interested, all the information is available at the official website.
Team Puzzle
Today I went to the presentation of the final project of my friends Carolina and Marcio. Their project consist in a management tool to support the development of software projects. It is called Team Puzzle and has been publish here -at Sourceforge. It has some similar features to Team Foundation Server, but it is built on open source technologies. It integrates Open LDAP, Tomcat, MySql, JBPM and Eclipse.
Congratulations Caro and Marcio, you have done a Great job!
Oferta de carreras de informática (parte 1)
Este post está motivado por varias consultas que me han llegado en los últimos años.
Si bien soy consciente que es un tema sobre el cual puede hablarse mucho, voy a intentar exponer en unas pocas líneas una visión lo más objetiva posible al respecto.
Si miramos la oferta de carreras universitarias de informática (y afines) existente en la actualidad en Argentina, en forma muy general nos encontraremos con 3 tipos de carreras:
1- Licenciaturas en computación
2- Licenciaturas en sistemas
3- Ingeniería en sistemas
Dentro (1) están aquellas carreras enfocadas en la investigación científica, con una fuerte base matemática y algorítmica. Posiblemente el exponente más claro de este grupo sea la licenciatura en computación de la Facultad de Ciencias Exactas y Naturales de la UBA. Carreras de este mismo tipo se dictan en las universidad de nacionales de Rosario, La Plata y del Sur.
Las carreras del grupo (2) suelen estar más enfocadas en los sistemas de información y si bien como parte del plan de estudio hay algunas materias de matemática, no son muchas, en comparación con las carreras del grupo (1). Al mismo tiempo estas carreras suelen tener materias como estructura e información de las organizaciones. Claramente el foco de la carrera es la implementación de sistemas de información. Un claro exponente de este grupo es la Licenciatura en Sistemas de la Facultad de Ingeniería de la UBA. Algunas otras universidades que dictan carreras de este tipo son la Universidad Nacional de Luján, la USAL y la UADE.
Finalmente las carreras del grupo 3 tienen una base matemática importante y también materias de información de las organizaciones. Pero adicionalmente tienen una base "científica" más amplia dada por las materias de física, química y electrónica. En la mayoría de los casos (o sea, en la mayoría de las casas de estudio) el foco de esta carrera es el mismo que el de la licenciatura en sistemas y la diferencia principal radica en que la ingeniería tiene unas 10 materias adicionales entre las que se encuentran las de física, química y electrónica. Claros exponentes de este grupo son la Ingeniería en informática de la UBA y la Ingeniería en sistemas de la UTN.
Es importante destacar que si bien la programación es una de las áreas comunes en las tres carreras, en ninguno de los tres casos es el foco de la carrera. O sea, si alguien quiere ser programador, bien puede seguir alguna de estas carreras, pero debe ser consciente que sería como usar un cañón para matar un mosquito, pues las tres carreras lo preparan a uno para cosas mucho más allá de la programación (ojo, con esto no quiero restar importancia a la programación).
Si miramos un poco más en detalle, nos encontraremos con carreras un poco más particulares como ser la Licenciatura en sistemas de información de la Facultad de Ciencias Económicas de la UBA, la cual está tiene un tinte mucho más contable-administrativo que informático.
También es común encontrarse con carreras de Analista de sistemas, que muchas veces suelen ser títulos intermedios de las 3 carreras analizadas.
Y si hablamos de carreras afines a la informática no podemos dejar de mencionar la ingeniería en electrónica, que si bien tiene un foco más cercano al hardware, en ciertas universidad tiene una carga de programación interesante.
Continuará…
La programación como disciplina central del desarrollo del software (introducción)
Parte 1: La programación, la academia y la industria
Claramente si trazáramos un paralelismo entre el desarrollo de software y las construcción de edificios, bien podríamos decir que en cierto modo, el programador es al desarrollo de software lo que el albañil es a la construcción de edificios. Al mismo tiempo, resulta que el trabajo llevado a cabo por los programadores insume aproximadamente la mitad del esfuerzo total del desarrollo del software.
Si uno analiza la situación actual del mercado IT en Argentina rápida se encuentra con la escasez programadores, como uno de los principales problemas para el crecimiento de la industria.
Curiosamente, si uno mira la oferta académica actual de las universidad nacionales (no estoy al tanto de las universidad privadas, pero supongo que la situación debe ser similar), se encuentra con abundantes opciones de licenciaturas / ingenierías en sistemas, pero ninguna carrera enfocada en la formación de programadores. Si bien es cierto que todo licenciado / ingeniero en sistemas debería ser capaz de programar, para ser programador no basta con ser capaz de programar. Las universidades enseñan programación en la primera mitad de la carrera, tratándola más como una base necesaria para las materias del ciclo superior que como una disciplina en si misma.La falta de una carrera de programador hace que aquellos jóvenes con aspiraciones de ser programadores se vean obligados a estudiar una licenciatura/ingeniería que no los formará como programadores, provocando una deserción temprana en la carrera. Como consecuencia de todo esto, la academia no forma programadores, sino ingenieros/licenciados capaces de programar.
Por su parte la industria asume que la formación general de los programadores es responsabilidad de la academia y por ello en el mejor de los casos solo invierte en la especialización del programador en una tecnología particular.
Estas posiciones adoptadas por la industria y la academia posiblemente sean consecuencia de la subestimación de la tarea del programador y por una falta de conciencia de la importancia de la actividad.
Personalmente creo que resulta necesaria una revalorización (en la academia y la industria) de la programación como disciplina fundamental del desarrollo de software y es por ello que he decidido escribir una serie de artículos centrada en programación como actividad fundamental del desarrollo de software dejando en claro la diferencias entre ser capaz de programar y ser programador.
El porqué de mi tesis
El siguiente texto iba a ser parte de mi tesis, pero dada su informalidad, resulta más acorde a este sitio que a mi tesis.
————————————————————————–
«El porqué de mi tesis»
Estaba yo cursando las ultimas materias del ciclo de grado de la carrera y aún no tenía decidido como iba a terminar, si con una tesis o un trabajo profesional. Por ese entonces me encontraba trabajando como programador en una empresa local, desarrollando software a medida.
Ese mismo verano al regreso de mis vacaciones, viaje junto a una joven egresada de la universidad nacional de la plata, que regresaba a argentina despues de haber estado trabajando como investigadora en una universidad de Bélgica. Cuando le pregunté sobre su área de investigación me dijo que trabajaba sobre un reciente paradigma de programación, denominado programación orientada a aspectos. Me contó a grandes rasgos de qué trataba y me mencionó aspectj como herramienta de referencia.
Ya de regreso en Buenos Aires, descargué aspectj y empecé a hacer algunas pruebas. En principio me parecío llamativo, pero dada la proximidad de los examenes de febrero-marzo, no le dí mayor importancia.
Fue recién un par de meses después, cuando me encontraba trabajando en el diseño de una aplicación, intentando modularizar ciertas cuestiones como el manejo de errores, la localización y la seguridad que comprendí el valor que podría aportar el pensar el diseño utilizando conceptos de programación orientada a aspectos.
Después de hablar con algunos profesores de la facultad, de la UNICEN y algunos compañeros de trabajo decidí que finalizaría mi carrera con una tesis sobre programación orientada a aspectos.
Finalmente después de varias charlas alternadas con Rosita y Alan pude acotar el tema, cuyo desarrollo se encuentra plasmado en el presente escrito: Utilización de la programación orientada a aspectos en aplicaciones enterprise.
Proyecto de tesis
Ayer finalmente entregué a mi directora de tesis, mi proyecto de tesis.
Por otro lado encontré un libro que, aunque aún no fue editado, me parece muy prometedor: !Aspect Oriented Refactoring
enjoy it!