Ya sea que quieras convertirte en programador, o simplemente conocer un poco más sobre este mundo de corchetes, llaves y paréntesis; Internet te ofrece un sinfín de plataformas innovadoras para aprender. Y lo mejor de todo, cada vez se promueve más el movimiento OpenCourseWare, que busca mejorar el conocimiento humano, usando la web como principal herramienta. Aprender a programar en Internet es muy fácil en estos días, he aquí una lista de 10 sitios donde tomar cursos de programación gratis y abiertos.
|
etiquetas: sitios , programación , cursos , gratis
¿Qué lenguaje recomendaríais aprender si el objetivo es buscar empleo?
COBOL: Es un lenguaje "muerto" pero con mucho trabajo de mantenimiento en la banca.
Java + javascript +HTML: Sobre todo enfocado a hacer aplicaciones WEB, Java para la parte de servidor, con algo de SQL, y javascript y HTML para la parte de cliente. Puedes especializarte en hacer solo la parte de servidor en Java y no tener mucha idea de de JS o HTML, o también puedes especializarte en la parte de cliente. Si te gusta el diseño y tienes buen gusto, puede ser una buena opción, ya que el estádnar HTML5 está emepzando y se pueden hacer cosas muy chulas.
C# + javascript +HTML: Idem
C o C++: Tal vez sea lo más adecuado, dado tu perfil de ingeniero industrial. C se usa mucho en sistemas embebidos y C++ en aplicaciones de servidor críticas. Pero bueno, te los puedes encontrar mezclados muchas veces. Tal vez sean los que tengan la curva de aprendizaje más pronunciada. Una cosa, son lenguajes distintos, aunque suelan ir juntos.
Python: Es un gran complemento a C y/o C++, y con los bindings de Qt y otras librerías se pueden hacer aplicaciones de escritorio de forma muy rápida. También hay un framework django para hacer aplicaciones web (django +JS+HTML). Si solo sabes python sin C/C++, entonces las ofertas que encontrarás seguramente sean de tester.
Luego hace poco salió por aquí una noticia de 10 lenguajes de programación exóticos. No te recomiendo que te metas con esos hasta que domines alguno de estos, sobre todo si tu objetivo es aprenderlo para buscar empleo.
Edito: En cuanto sepas un poco, te recomiendo que te leas el libro "Design Patterns", más conocido como "Gang of Four". Lo que aprendas ahí lo podás aplicar a cualquier lenguaje de programación. en.wikipedia.org/wiki/Design_Patterns
De la lista que me nombras, he leído una lista de los lenguajes de prog. más demandados y se encuentran todos. Supongo que java puede estar bien, ya que algo di en la carrera y siempre es mejor que empezar de cero.
Gracias por tu respuesta
Java: Habrás visto que hay un montón de ofertas de Java, pero también es verdad que pegas una patada a una piedra y te salen otros tantos programadores de Java. Conclusión, es fácil encontrar trabajo, pero por lo general no está muy bien remunerado. Así que si quieres prosperar básicamente te queda la línea de jefe de proyecto; supongo que aprendiendo a programar para encontrar trabajo esto no te supondrá un problema, pero para mí, que me dedico a esto por vocación, quiero que se valore mi tarea de programador. Por otra parte, Java es mucho más sencillo de programar que C, entre otras cosas porque te olvidas de la liberaciónde memoria, y la librería estándar que trae de serie no te le encuentras en C. Además, Java se usa para programar Android (se me ha olvidado comentar este punto antes), así que puede ser un lenguaje más versatil. Además, una vez que sepas Java, pasar a C++ (que no a C) te puede resultar bastante más fácil, ya que no tendrás que lidiar con los conceptos de la orientación a objetos.
C: Es un nicho mucho más especializado, con menos ofertas, pero bajo mi punto de vista mejor valoradas. Eso sí, prácticamente te restringes a trabajar en Madrid o Barcelona (o resto de Europa). Es más complicado de aprender, y como ya he dicho, no tiene una librería estándar muy potente, así que tendrás que tirar de librerías de terceros para casi todo. Todo esto es aplicable a C++, salvo que C++ trae una librería estádnar bastante completa. Además, la línea de evolución profesional tal vez siga por el camino técnico y no tanto por el de gestión.
Resumiendo, igual es mejor que empieces con Java, que es más fácil y ya conoces algo, y si te pica el gusanillo siempre tendrás tiempo de aprender C o C++. Si te quieres centrar en el mundillo Web, cuando yo sabía Java había dos grandes frameworks: Struts y Spring. Tal vez puedas comenzar con alguno de esos. Si quieres tirar más sobre desarrollo de aplicaciones móviles, pues de esto no sé, pero supongo que no faltarán tutoriales en la web.
Pero sobre todo, insisto en lo de los patrones de diseño. Saber programar no es saber la sintáxis del lenguaje o hacer unpar de bucles for (aunque seguramente sea lo que te pidan en la mayoría de puestos junior). Saber programar es saber hacer código mantenible, que funcione, y luego al final ya si eso puedes mirar que lo haga de forma eficiente. Hacer código que funciones es relativamente fácil. Para lo de que sea mantenible ( y si quieres escalable) es para lo que se estudia arquitectura del software, y para esto vienen muy bien los patornes de diseño. Para que el código sea eficiente, es para lo que se estudían algoritmos, y también es bueno conocer las tripas del compilador y de la máquina donde se va a ejecutar. Pero una regla de oro es que no se optimiza hasta que funciona. Y cuando funciona no se optimiza hasta que se ha pasado un "profiler". Que ya he visto optimizar la carga de la configuración de un sistema que luego está meses ejecutandose, sin volver a cargar esa configuración. eso sí, la configuración en vez de en 5 minutos se cargaba en 4...
Spring: spring.io/
Struts: struts.apache.org/
Patrones de diseño: es.wikipedia.org/wiki/Patrón_de_diseño
Por cierto, llevo ya unas cuantas becas enseñándoselo a chavales que acaban de terminar la carrera, generalmente Teleco
Hay muchísimo trabajo y el C# es muy parecido a Java.
Gracias por el libro de patrones, la verdad es que era mucho tiempo que lo buscaba. Por cierto ¿Es libre y de dominio público?.
www.meneame.net/story/videocurso-programacion-c-impartido-richard-cout
Pero aprovecho para contestar: Veo difícil que por aprender un lenguaje en un curso tengas posibilidades de encontrar curro.
Mi consejo sería que te buscases un proyecto open source al que unirte que te permita demostrar tu capacidad...
Y recomiendo el canal de youtube edu4java. www.youtube.com/user/edu4java
Y si ya sabes algo de Java te puede venir bien aprender aprender a programar para Android (generalmente se programa en Java)
¿Qué recomendaríais a alguien que tiene un FP superior en electrónica? Yo sé que mis opciones son peores, pero me gustaría saber si existe alguna posibilidad para mí
Si de verdad te interesa el tema.. aprendete bien este tocho: en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Program
y el lenguaje que mas se use en el campo que te gusta. No es la panacea el libro pero los fundamentos son solidos y si te gusta, te entrara la curiosidad por profundizar en diferentes temas que se abordan en el libro. Siendo de verdad un tio con unos fundamentos solidos, sabiendo hacer analisis de complejidad, disenar algoritmos.. puedes optar a trabajos de programador con companeros que de verdad saben lo que hacen, haciendo software 'de verdad'. Eso si, probablemente te toque coger las maletas.
www.edx.org/course/mit/6-00x/introduction-computer-science/586
Luego haz lo que más te apetezca. Si quieres programar web, empieza con HTML, CSS, Javascript y jQuery y sigue con PHP y Ruby on Rails, por ejemplo. Pero no empieces la casa por el tejado.
Por lo demás, buena lista.
1.- Te decides por un lenguaje de programación.
2.- Te informas en google sobre los cursos online disponibles y eliges el curso que más confianza te dé.
3.- Bájatelo gratis de TPB.
disclaimer: como se suele decir, si te lo bajas y te gusta, luego compra el original (que en estos casos varía entre los 200 y 2000€).
¿Cual es mi campo?
Si es para cambiar de sector, píllate JAVA y de paso puedes aprovechar para aprender Android e intentar hacer alguna app simple. Será más fácil y gratificante.
De Udacity no se porqué, pero empezé el curso de Desarrollo de Juegos en HTML5 y no lo pude completar, no se si por los bugs que tenían las actividades (aunque las tuviera bién siempre me daba un error) y he decidido cambiar por LibGDX y mirando la documentación de la página.
El problema del sector, como en tantos otros, no es que la gente sea biologa o ingeniero de minas, sino que nos dejamos ningunear y tragamos mierda a paladas. Centremos ahi el debate y no en que estudio cada uno.
De todas formas te recomiendo Java. Porque es un lenguaje que anima a usar elementos de la OOP. Y luego, si te animas, PHP. Pero empezar desde PHP te puede acostumbrar a usar malas técnicas de programación. Todo ello orientado a la web.
Con eso podríais intentar optar a entrar en alguna consultora. Eso si, cobrando poco, y haciendo mas horas que el tato. Pero estamos hablando de necesidad de trabajo no de vocación ¿no?
Si y no. Más bien no. Cada lenguaje tiene su curva de aprendizaje, dominar un lenguaje de programación concreto no es una tarea trivial y requiere de mucho tiempo y esfuerzo.
C es el papa de todos los lenguajes y Java una perfecta introducción al mundo de los objetos y al C++. Si a alguien le sobra tiempo después de 'dominar' esos tres para aprender otros lenguajes, adelante pues.
La afirmación que he escuchado alguna vez en entornos universitarios españoles '...si sabes programar en un lenguaje sabes programar en todos...' es completamente falsa. Todos los lenguajes de programación tienen su propia curva de aprendizaje, y más cuando están definidos en un paradigma u otro (por poner un ejemplo los lenguajes orientados a objetos y los lenguajes funcionales son dos mundos distintos y complementarios). Una cosa es que tengas cosas en común entre ellos y otra cosa muy distinta la infinidad de cosas que pueden no tener en común.
CC #1 CC #3
¿Poniéndole puertas al campo? A estas altura hasta los niños saben que no tiene sentido. CC #30
Para #45. Saber matemáticas y saber leer van de la mano. Renegar de las matemáticas genera mucho analfabetismo. España debe reaprender a enseña matemáticas.
es.wikipedia.org/wiki/VHDL
es.wikipedia.org/wiki/Field_Programmable_Gate_Array
www.amazon.com/The-Design-Warriors-Guide-FPGAs/dp/0750676043
Y en general gracias al resto por los comentarios. A ver si sigo formándome y aprendiendo, porque no está la cosa como para estar en casa viéndolas pasar.
PD. En realidad programar va camino de complementar cualquier actividad humana.
-Vamos a ver, Pedro, tu y tu compañero soléis montar esas literas, pero como hoy tenemos que montar el doble de literas voy a llamar a otros dos, con el doble de gente lo tenéis que hacer en el mismo tiempo, ¿no? Son matemáticas básica, ¿tu no habías estudiado matemáticas?
-Bueno, eso de que el doble de gente hace el doble de trabajo en el mismo tiempo solo funciona si el crecimiento es lineal. Para que el crecimiento fuera lineal necesitaríamos un almacén infinito. Si mete el doble de personas y el doble de literas en el mismo espacio estorbándonos unos a otros hará que el crecimiento del tiempo de trabajo crezca de manera exponencial. Meta el doble de gente y el doble de camas en este almacén tan pequeño y puede que tardemos 4 veces más de lo normal.
Apúntate en Infojobs y demás webs de búsqueda de empleo.
Configura un par de alertas o listas de anuncios de programador en tu provincia o en las que estés dispuesto a trabajar. Es importante porque mientras en Bizkaia hay mucha demanda de programadores SAP, C# y Java, en Barcelona lo es de VB.NET, en Alava sólo de Java y , en [...] de SAP, en [...] COBOL, etc... (seguro que no acierto con los lenguajes más demandados por provincia, pero el mensaje es que te lo curres tú, no que te creas el ejemplo)
De esa lista de ofertas analiza qué lenguajes de programación o plataformas se demandan en las provincias en que estés dispuesto a trabajar.
Ya tienes enfocado qué lenguajes o plataformas deberías estudiar para tener más posibilidades de encontrar un puesto de trabajo de programador.
Un saludo.
*Comprobar que el producto hace lo que dice que tiene que hacer
*Comprobar que con el desarrollo nuevo no se ha roto nada que antes funcionaba.
Existen varias capas de tests:
*Test unitarios
*Test funcionales
*Test de sistema
*...
Muchas veces para los tests funcionales y de sistema se hace un wrapper en python de los componentes claves de la aplicación y se hacen los tests en python, ya que resulta mucho más sencillo que hacerlos en C/C++.
En teoría, el tipo de trabajo que se hace es programar los casos de uso de los tests. En la práctica me he encontrado varias veces que el trabajo se limita a darle a un botón para ejecutar los tests y analizar los resultados, para abrir los correspondientes tickets por cada problema encontrado.
Pues debo informarte que puede orientarse a objetos cualquier lenguaje, tanto el C procedural como los lenguajes funcionales como Scheme. La orientación a objetos esta pensada para estructurar ideas humanas y trasladarlas como conceptos al lenguaje. Un lenguaje orientado a objetos lo único que trae son algunas ayudas en el compilador enfocadas a dicho paradigma, pero incluso con java puede pretenderse programar estructurado de toda la vida.
He programado objetos en C y en lenguajes funcionales, objetos poco complejos, pero objetos, por lo que sé de lo que hablo.
Te recomiendo que aprendas javascript (por lo tanto deberas tambien entender html/css). Aprender profundizar en c/c++ esta muy bien, pero en el mercado hay gente con experiencia, y se requiere tiempo y práctica para tener un buen nivel.
Para otros lenguajes que te comentan van más por el perfil de informatico, por lo que habrá mucha más gente con una carrera más adecuada y más experiencia que tu.
Lo bueno de javacript: podrás practicar facilmente creandote tus propias app, empezando por la más sencilla (una app que recopile videos de youtube de cierta temática, por decir algo), hasta lo que quieras/consigas complicarte. Y podrás programar algo alguna idea para app que creas que pueda tener hueco, y hacerla disponible. Todo lo creado te servirá como experiencia en el curriculum a la hora de encontrar trabajo.
Pero casi tan importante como conocer el lenguaje, es estar al tanto de las librerias existentes, y saber usar bien una de ellas; puesto que en muchos trabajos requieren experiencia con cierta librería. Por ejemplo nodejs para javascript (y claro jquery y demases para UI...), con la que podrás montarte tu propio servidor web en una arduino, raspberry pi... y darle algun uso como puede ser domótica, monitorización de sensores, energía solar... Lo cual está ligado con la ingeniería y te permite practicar en casa y crearte algo chulo que te pueda servir para el curriculum también. Y si te haces con un arduino, rasperry etc., tambien podras practicar c/c++ embebido.
Pienso que en el futuro se demandará javascript más que ahora. Y para ciertos puestos, tendrá más puntos alguien que tenga conocimientos de electrónica, que un informático.
Menuda chorrada pomposa.
Por lo que comentas resulta curioso que las asignaturas universitarias en computación duren un semestre y a las dos semanas de empezar el curso no lo cancelen por obsolescencia de la propia asignatura. En demasiados casos comprender y poner en practica una nueva tecnología puede requerir facilmente más de dos semanas. Ahora, para hacer chapuzas con prisas desde la versatilidad estamos todos siempre a tiempo, en eso estamos de acuerdo.
golang.org/
Con Go, puedes sustituir a cualquier lenguaje interpretado (Perl/PHP/Python/Ruby) usados principalmente para el back-end de servicios web y para la administración de servidores, y también a lenguajes basados en una máquina virtual como Java, Clojure, etc.
Además, desde que la compilación es estática, su instalación en cualquier servidor es muy sencilla puesto que se trata de solamente un fichero.
Ya hay muchas compañías usando Go, como Canonical (Ubuntu), BBC, Heroku, Mozilla, la propia Google, etc. Y muchas startups ya están usando Go para el back-end de sus servicios; sólo tienes que pasarte por news.ycombinator.com/ para comprobarlo.
code.google.com/p/go-wiki/wiki/GoUsers
Esa es una decisión del programador y sus necesidades, no del pedrusco.
Aunque esa plataforma no tiene muchos cursos sobre lo que estás buscando, al menos por ahora.
#75 Puedes estar seguro de eso. El que no sepa inglés a dia de hoy se limita muchísimo en cuanto a adquisición de conocimientos de calidad.
Creo que no se debería dar ninguna base de programación en otras carreras, ya que consigue que "algunos" se crean "Informáticos" por tener algunas asignaturas relacionadas y fomenta el intrusismo. Es como si yo me parto los cuernos para estudia Ingeniero de Caminos y luego me dedico a ser Arquitecto porque tengo cosas en común.
Ingeniería Informática abarca muchas areas: Ingenieria del Software, Algoritmica, Sistemas Operativos, Estructura y Diseño de computadores o microprocesadores, Redes de Computadores, Sistemas Distribuidos y en Tiempo Real, Criptografia, Inteligencia Articial, Bases de Datos, etc etc etc. Luego hay asignaturas que estan relacionadas con otras carreras como Robotica, Informatica Industrial y automatas, Electronica Digital, Gestion de empresas o Contabilidad, procesamiento digital de señales, etc...
Pero como generalmente da igual que se programe con el culo con tal de sacar aplicaciones de dos duros, vendérselas al cliente por x*10, pagarle cuatro duros al picateclas de turno y sacar un márgen de beneficio del copón, el tema está como está.
No se trata de tener vocación sino de haber recibido -mediante educación formal o autodidacta- un mínimo de conciencia sobre lo que se produce -y para qué se produce- y cierta sensación de responsabilidad.
La competencia es buena. El gran marrón ocurre cuando surge y, en lugar de entrar en juego la competitividad -y, por ende, subir el nivel cualitativo promedio-, ocurre lo contrario, baja porque bajan los criterios de contratación ya que así todo sale barato de producir puesto que la demanda de empleo satura el mercado y no se recompensa a los buenos/mejores porque bajan los criterios de contratación...
A veces hacen promociones del estilo "un mes gratis si haces X cosa", y si no, oye, pagar por un buen servicio tampoco está mal.