Mi carrera de desarrollador de software: ¿hacia dónde la enfoco?
He publicado un post muy útil si empiezas o llevas poco tiempo en el mundillo del desarrollo de software y no sabes muy bien cómo orientar tu carrera profesional. La intro dice algo así:
Mi carrera de desarrollador de software: ¿hacia dónde la enfoco? En la evolución profesional de todo desarrollador de software se presentan múltiples disyuntivas; ya incluso antes de poder considerarse como tal, una primera duda podría ser orientar la carrera a técnico de sistemas o a desarrollo de software, y una vez elegido el camino del soft se siguen encadenando múltiples decisiones a tomar y posibles caminos a seguir. Hurguemos en la especialización: ¿hacia dónde enfoco mi desarrollo profesional, me convierto en un gurú de una tecnología (especialización vertical) o en un profesional multidisciplinar (especialización horizontal)?
Se puede leer aquí. Espero que sirva de orientación a alguien :)
Nota: noticia enviada por dherrerabits
Reader Comments (7)
En mi opinión el autor del post anda bastante "perdido".
Decir que si realmente te apasiona la tecnología lo que tienes que hacer es centrarte en una es una tremenda barbaridad. Todo lo contrario, lo que tienes que hacer es dejar de pensar tanto en "tecnologías" y pensar mucho más en practicas. Las tecnologías van y vienen en pocos años, las practicas y los fundamentos (como la OO, patrones, DDD, TDD, CI, metodologías de desarrollo, estrategias de branch/merge, algoritmia, persistencia relacional y no relacional, comunicaciones, concurrencia y un largo etc) son cosas que están para quedarse. Para mi un buen desarrollador es aquel que dado un problema sabe, entre otras muchas cosas, elegir la mejor tecnología para resolverlo, en consecuencia, estar centrado en una sola tecnología es incompatible con ser un buen desarrollador.
Además que teniendo unos fundamentos solidos las tecnologias se aprenden en semanas, los fundamentos y las practicas se tardan años en consolidar.
Me hace gracia como la gente escribe/vuelca sus pensamientos en un blog sin previamente documentarse. Dos libros que abordan este tema de la "carrera profesional" y que me parecen imprescindibles para cualquiera al que le guste este trabajo:
- The passionate programmer
- Apprenticeship patterns
"Además que teniendo unos fundamentos solidos las tecnologias se aprenden en semanas, los fundamentos y las practicas se tardan años en consolidar."
Un +1 como una casa.
En todo caso, no me parece a mi, que uno controle tanto su carrera como da a entender el autor.
Por otro lado, no se muy bien, como uno puede ser un gran jefe de proyecto, solo conociendo generalidades de las tecnologías que se usan en el mismo. Yo al menos, no lo he conseguido nunca.
Los "jefes de proyecto" están @Deprecated.
Al menos en desarrollo de software. En lugar de pensar en equipos "guardería" que necesiten de un "responsable" para que las cosas no se vayan de madre es preferible pensar en equipos auto-organizados y auto-suficientes.
En un proyecto software hace falta quien defina el "QUE" y quien ejecute el "COMO", la figura del jefe de proyecto como oranizador/responsable no es necesaria en organizaciones minimamente maduras.
Pues no se... a mi me parece bastante buen articulo y claramente basado en experiencia real del mundo laboral.
The passionate programmer, que recuerdos... 200 paginas de paja, 10 horas y 20 dolares perdidos...
Una persona que obtiene esos fundamentos tan profundos y simplemente inabarcables por su extension "(como la OO, patrones, DDD, TDD, CI, metodologías de desarrollo, estrategias de branch/merge, algoritmia, persistencia relacional y no relacional, comunicaciones, concurrencia y un largo etc)":
-Para obtener esos conocimientos tiene que dedicar tanto tiempo a su estudio y practica real que nunca podra ser un buen programador.
-Si trabaja en proyectos reales (que no son los que uno elige), nunca alcanzara un rango tan amplio de conocimientos, ya que en el dia a dia del programador hay que lidiar con las pequenas cosas realmente importante y puede pasar anos y lustros sin tener necesidad de abordar la mayoria de esos conceptos (porque no aplican a sus proyectos).
-Con toda seguridad sabra algo de todo, pero muchisimo menos de lo que el mismo piensa.
-Esa persona no es un programador, aunque quizas sea un arquitecto/consultor, un profesor de universidad o un charlatan... como se quiera llamar.
-En resumen, si ha adquirido todos esos conocimientos es porque no ha sido (ni seguramente sera) un programador, ni mucho menos un BUEN programador.
Pongamos como ejemplo a Linux Torvald, a John Resig. Le vais a llevar a vuestra gran corporacion a que analicen el problema de implementacion de vuestra capa SOA o vuestra cache distribuida y que decidan que tecnologia usar?. Uno dira que hay que hacerlo en C y el otro que en Javascript... y no os daran la solucion optima, por lo que esta claro que sin duda son unos programadores pesimos. Por no hablar ya de Richard Stallman...
Saludos
@UnoPorAhi "-Si trabaja en proyectos reales (que no son los que uno elige), nunca alcanzara un rango tan amplio de conocimientos, ya que en el dia a dia del programador hay que lidiar con las pequenas cosas realmente importante y puede pasar anos y lustros sin tener necesidad de abordar la mayoria de esos conceptos (porque no aplican a sus proyectos)."
Uff la verdad es que tu opinión asusta, Alfredo habla de cosas bastante cotidianas, habla de temas básicos, no habla de cálculos gravitacionales de satélites, aunque ponga siglas muy concretas que son enfoques en los que se podrá estar más o menos de acuerdo de gente que intenta formalizar y poner nombres a prácticas más o menos habituales. Te sorprendería descubrir a programadores muy "enterprise" que no han creado un Map en su vida.
Alfredo habla del día a día, de que cada línea de código tiene una idea detrás más o menos consciente, y que esas miles de decisiones dan lugar a software brillante o a basura, considerar que el que debe de "saber todo eso" es el "arquitecto" y no es el "programador" que no necesita todo "eso" para ser un buen programador, pues me parece la típica distinción clasista que en la práctica da los resultados que da...
Linus Torvald y John Resig, no son buenos programadores, son simplemente cojonudos, cada uno en su área, el que estén especializados en ámbitos concretos no implica que sean estúpidos, si le preguntas a Linus o a John sobre un tema en el que no se mueven pues seguramente te dirán que "ni puta idea", que es la respuesta más inteligente, lo cual no los descalifica como personajes legendarios del software que es lo que son.
"En resumen, si ha adquirido todos esos conocimientos es porque no ha sido (ni seguramente sera) un programador, ni mucho menos un BUEN programador."
Es la cosa más incoherente que he oido en mi vida. Tener conocimientos te hace peor programador???, ¿Entonces que es lo que tiene que saber un buen programador según tu?.
Todos esos conocimientos, quizás exceptuando los temas de concurrencia o persistencia, son conocimientos que consideró totalmente basicos, como dice jose maria, no son nada del otro mundo ni nada especifico de un nicho de aplicaciones concretas. ¿Que se tardan en adquirir 10, 15 o 20 años?, no lo dudo, habrá gente que lo consiga en menos tiempo, yo llevo más de 13 y sigo descubriendo cosas a diario.
Por supuesto hablo de programadores en toda la extensión del termino, no confundir con eso que algunas empresas llaman "picateclas". Para mi un programador es el que a partir de una necesidad es capaz de ofrecer una solución utilizando obviamente tecnología informática. No existen arquitectos, analistas y chorradas similares (eso es un invento de una industria que en muchos casos todavía no ha entendido la verdadera naturaleza del desarrollo de software) sólo existen programadores con mayor o menor experiencia y con mayor o menor talento.
PD: si le preguntas a jhon resig o linus torvalds cosas como "¿con que tecnología construir mi capa SOA?" te dirán lo que cualquier buen programador, que dejes de perder el tiempo.