Software Guru Conference & Expo 2014

Cosas que todo programador debe saber.

Realmente no supe en que parte de los foros debería poner este tema, pero, cómo fue lo que más me pareció adecuado lo agregué.

De un tiempo para acá, a pesar de ya tener cómo 4 o 5 años programando, gracias a esta comunidad me he dado cuenta que muchas veces no tenemos experiencia, pericia ni curiosidad por informarnos. Creemos que aprender a programar es sentarte a teclear instrucciones de un lenguaje (el cual muchas veces ni conocemos a pesar de bastante tiempo de uso) y ya; pero veo que muchas ocasiones no tenemos ni una vaga idea de lo que uno como programador debería saber (por lo que sea: falta de dirección o ganas).

Dicho lo cual, me gustaría hacer este tema a modo de una recopilación de lo que a criterio de ustedes es necesario que todo programador sepa. Claro que no es nada más que yo ponga esto y ya está, también pondré mis aportaciones de lo que veo que carecemos muchas veces los programadores (sobre todos los que no pasamos de los 25 años):

1) Lógica, análisis y organización. Esto yo lo veo diario, con gente en la universidad o en el trabajo que por ejemplo dicen: "¿Cómo haré para traer una lista en donde traiga la información de los clientes y las compras que ha hecho ese cliente?"...En este caso sería tener el norte con un poco de conjuntos.

2) Programación a bajo nivel. No quiero decir directamente a entrar a lenguaje máquina, pero si cuando menos poder entender código que hace uso sobre bits...y no sólo eso, sino poder crear código para ello.

3) Matemáticas. Quizás no saber cálculo integral y diferencial a nivel de un matemático; pero tener siempre en cuenta el álgebra, la estadística, la probabilidad y el manejo de conjuntos.

4) Paradigmas de programación. Esto creo que lo deberíamos ver pero de una manera agnóstica, en otras palabras, sin un lenguaje de por medio. Si algo he aprendido es que muchas veces no importa la herramienta, primero se necesita la base y ya después se ven las peculiaridades de la herramienta.

Otra cosa, me gustaría que me instruyeran (y de paso, poder referir a esta entrada en caso de que alguien quiera aprender); con esto no quiero decir que me digan y me muestren todo digerido. Quiero saber que libros puedo leer o que recursos se encuentran en línea para poder crecer cómo profesionista y poder llegar a ser un profesional.

En mi caso, primero le estoy echando ganas con lo que viene siendo manejo de bits y bytes (que por el trabajo no he tenido el tiempo de pegar bien el ojo). De ahí me gustaría aprender algo de programación funcional (a pesar de encantarme Scala, admito que no tengo el nivel de programación funcional necesario para entender muchos conceptos utilizados en Scala). Y pues además de eso, creo que me pudieran decir que me faltaría.

Desde ya, muchas gracias.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Algus Dark

Yo creo...

Una de las cosas que necesita un programador es saber inglés. Por lo menos me ha servido de mucho.
Hay que ser pragmático. La práctica hace al maestro.
Hay que tener curiosidad. Sé muchas cosas y muchas más las desconosco, y eso me motiva cada día mas.
Tener en mente la frase: "Cualquier tonto puede escribir código que un ordenador entiende. Los buenos programadores escriben código que los humanos pueden entender."

Yo te recomiendo el libro "CLEAN CODE: A HANDBOOK OF AGILE SOFTWARE CRAFTSMANSHIP". Aclaro que llevo muy poco programando en Java, incluso programando. Es mi primer año después de terminar la carrera.

Saludos! Buen post.

Re: Yo creo...

Una muy importante se me fue, el inglés; de hecho toda la documentación inicial de cualquier framework y tecnología viene en inglés. Incluso la documentación de OPEN XAVA viene en inglés, con todo y que los creadores de OPEN XAVA son españoles.

Y con el libro, pues ya me lo he leído :D, muy bueno y si, también lo recomiendo.

Me llama la atención un comentario tuyo:

Aclaro que llevo muy poco programando en Java, incluso programando. Es mi primer año después de terminar la carrera.

Si algo he aprendido en la vida (cómo profesionista y en la vida en general) es que la capacidad, la sabiduría y el conocimiento, no se miden por cuanto tiempo llevas, sino por cómo la has llevado. Todo mundo es capaz de enseñarnos algo, incluso aunque suene raro y poco lógico, alguien cómo yo pudiera llegarle enseñar algo a un Doctor (no un médico, sino un Doctor del tipo Ph. D.) y viceversa.

Imagen de Algus Dark

@wishmaster77

Cierto, hace poco me leía un artículo sobre lo que es un programador junior y senior... cómo se catalogan. Algo que no me gusta de la universidad en la que estudié es cómo nos enseñaban la API de un lenguaje de programación, y nó "lenguajes de programación". Venga, que cuando hablo con mis ex-compañeros de clase se quedan con la cara de "WHAt?" cuando les platico de las noticias de tecnología o las tendencias en el mundo de las ciencias computacionales. Me encanta hablar de programación, me encanta enseñar y aportar, pero a veces me siento raro cuando soy el único de mi ciudad con el que puedo llevar una plática del "mundo exterior".

Re: @wishmaster77

Si, es un problemón también por estas aguas. Por acá los "conocedores" me han dado cursos de "Desarrollo web avanzado", según ellos con "las herramientas de última"...Llegas y es un tipo que medio aprendió Java, que usa la versión 4 de Java en su día a día y que lo peor no sabe si quiera lo que es POO.

Es una de las razones por las que pienso mudarme un rato al D.F. o a Monterrey; por acá es raro ver a alguien que sepa que es Ruby on Rails (siendo que Rails, ya es chisme viejo).

Me tocó dar un curso de Java para algunos alumnos que iban a presentar extraordinario en mi universidad. Les enseñé cosas que los profes ni sabían que existían en Java (cómo el "foreach", las anotaciones, algún patrón de diseño cómo Singleton o LazyLoad).

Imagen de rodrigo salado anaya

Curiosidad.

Algo que me sirve mucho es olvidar que fui a la universidad. Borrón y cuenta nueva.

Si se quiere ver a la universidad como una fabrica que produce expertos es muy complicado salir satisfecho de clases. Creo y solo eso, que la única fábrica de expertos real es la curiosidad. (Como ya dijo @ Algus Dark)

Yo recomiendo buscar un tema dentro de TODO el mundo del desarrollo de software y dedicarle una hora diaria (menos sábado y domingo : )) y ser muy perseverante y dedicado, aunque el tema en el que estés interesado no sea aplicable a tu proyecto en curso.

Todo programador debería ser muy curioso.

Imagen de Sr. Negativo

Perder el miedo

También sirve de mucho perderle miedo a algo nuevo. Conocer nuevas cosas, aunque nos equivoquemos y no salgan "a la primera".

Hace tiempo me decian que Java era para puro experto, que no perdiera mi tiempo, y que mejor estudiara PHP y Flash.

Me anime y aprendi (sigo aprendiendo) por mi cuenta este lenguaje.

o_0

Re: Curiosidad.

Creo que es algo cultural y eso que nos dicen desde chavitos: "La curiosidad mató al gato"...Pero, para mi siempre ha sido más un: "sé mediocre y no vayas a por más".

Incluso el mismo Albert Einstein tiene una frase de la curiosidad que es: "No tengo talentos especiales, pero sí soy profundamente curioso."

Otra cosas que dices también que es bien cierta es la de perseverancia y dedicación.

En fin buenos aportes.

Re: Perder el miedo

Este tiene sus pros y contras... Creo que hay que perder el miedo, PERO, también hay que saber cuando no apostar. Siento que esto es cómo en las vegas, hay veces que estás en posición de apostar un poco más y hay veces que tienes que decir: "paso".

Conozco una que otra empresa que prometen a los clientes cielo, mar y tierra; proyectos en tecnologías que NADIE de su personal conoce para tiempos de entregar absurdos...Y no pagan para nada bien, y por si fuera poco todavía dicen: "No le tengas miedo a los retos".

PD && OFFTOPIC: No es que no tenga ética profesional. La razón por la que dejé el link de la empresa esa es porqué ya más de un compañero de trabajo y conocido externo tiene una mala experiencia en dicha empresa, es una medida preventiva para la comunidad de programadores (creo que deberíamos tener un lugar aquí o en otro lado, en donde podamos hablar de experiencias de trabajo en ciertas empresas, con el fin de que seamos la comunidad los beneficiados y podamos conseguir mejores empleos...pero eso es para otro hilo xD).

Imagen de Jose Manuel

No lo recomiendo

La verdad es que aunque no estoy completamente informado, esa opción no me parece segura. Hace unos días observe en un video sobre redes sociales, comunidades y la censura en Internet en las que un sujeto escribió en Twitter cosas sobre un banco. Al tipo lo demandaron los del banco por eso y tuvo que pasar unas horas en jail.
No recuerdo que demandaba el banco, pero igual le toco estar encerrado. Y de eso no hace mucho.
Aunque me gustaría leer sobre las experiencias para aprender.

Esto me suena a...

Imagen de jcamacho

Libros

Pues las siguientes recomendaciones son asi de que paren lo que estan haciendo y ponganse a leer los siguientes libros:
-The Pragmatic Programmer
-The Passionate Programmer

Despues de leerlos deberian de apoyar algun software libre, tratando de aportar algo, o al menos involucrense en algun proyecto como espectadores.
Sobra decir que hay que ser autodidacta, investigar temas que te gusten, etc.