Me estoy graduando con una licenciatura en Ciencias de la Computación, pero veo sitios web como Stack Overflow y motores de búsqueda como Google y no sé dónde incluso comenzaría a escribir algo así. Durante un verano tuve la oportunidad de trabajar como desarrollador de iPhone, pero sentí que estaba pegando principalmente bibliotecas que otras personas habían escrito con poca comprensión de la mecánica que se desarrollaba bajo el capó.
Estoy tratando de mejorar mi conocimiento estudiando algoritmos, pero es un proceso largo y doloroso. Encuentro los algoritmos difíciles y, al ritmo que estoy aprendiendo, habrá pasado una década antes de que domine el material del libro. Dada mi situación actual, pasé un mes buscando trabajo, pero mis habilidades (C, Python, Objective-C) son relativamente poco profundas y no son tan deseables en el mercado local, donde C #, Java y el desarrollo web son mucho más altos. en demanda. Eso no quiere decir que no existan oportunidades de C y Python, pero tienden a exigir más de 3 años de experiencia que no tengo. Mi promedio de calificaciones está bien (3.0), pero no es lo suficientemente alto como para aplicar a las grandes empresas como IBM o regresar para estudios de posgrado.
Básicamente me estoy graduando con un título en Informática, pero no siento que haya aprendido a programar. Pensé que unirme a una empresa y programar a tiempo completo me daría la oportunidad de desarrollar mis habilidades y aprender de aquellos con más experiencia que yo, pero estoy luchando por encontrar trabajo y estoy empezando a sentirme realmente frustrado.
Voy a ampliar mi red y mirar más allá de la ciudad en la que he crecido, pero ¿qué han intentado hacer otras personas en una situación similar? He trabajado mucho pero no tengo la confianza para salir solo y escribir mi propia aplicación. (Es decir, convertirse en un desarrollador independiente en el mercado de aplicaciones para iPhone). Si no aparece nada, tendré que considerar actualizar y aprender habilidades más populares o probar algo marginalmente relacionado como TI, pero dado todo el esfuerzo que he puesto en eso se siente como salir corriendo
Si bien entiendo por qué siente que esto no era "programación real", la verdad es que el trabajo de integración constituye un porcentaje significativo de la carga de trabajo típica para un programador corporativo. Tu experiencia puede ser un poco más valiosa de lo que piensas :)
fuente
Primero, gracias por una pregunta inmensamente honesta. Hay varias formas de abordar los problemas en cuestión. Aquí hay algunos consejos, que consideraba muy útiles para mí en el pasado y aún los sigo utilizando para ampliar mi conocimiento.
Aprende, aprende y aprende un poco más. Este es probablemente el consejo más importante que puedo darle. Nunca dejes de aprender . Saber un idioma es bueno, saber múltiples es aún mejor. Tener conocimiento de otros idiomas lo convertirá en un mejor programador y le facilitará abordar ciertas tareas y lo ayudará a obtener un mejor conocimiento de las estructuras de datos comunes.
Comience pequeño .
Comience un proyecto de pasatiempo en su tiempo libre. No hagas algo que puedas lograr con bastante facilidad. Asume un proyecto en el que no tienes idea de por dónde empezar. Lánzate al fondo. Los beneficios de esto es que aprenderá cosas que nunca supo que existían y cuando lo complete, sentirá un inmenso orgullo y satisfacción. Esto es lo que me mantiene en marcha.
Ten una verdadera pasión por lo que haces. Aunque la gente no estará de acuerdo conmigo en este caso. No creo que pueda sobresalir en este campo si simplemente lo considera un trabajo de 9-5. Tiene que haber una pasión para hacerlo.
¡Ayuda a otras personas en SO! La mejor manera de entender es tratar de enseñarlo a otras personas.
Estudie los programas de otras personas e intente descubrir cómo funcionan, luego implemente técnicas similares en sus propios programas. Intente leerlo y comprenderlo, luego hágalo usted mismo en función de ese entendimiento, en lugar de copiar y pegar.
Sigue así . Las cosas pueden volverse muy frustrantes a veces, pero muy gratificantes cuando terminan. Si no comprende algo, tómese un descanso, aclare sus pensamientos e intente nuevamente. ¡Pregúntanos en SO! Somos un grupo dispuesto :)
Nunca dejes de aprender nuevas tecnologías.
Lee algunos libros. Entiendo que siendo estudiante, habrías leído una tonelada. Aquí hay un par de libros prácticos que pueden serle útiles ... con suerte - El programador pragmático: de oficial a maestro - Código completo: un manual práctico de construcción de software
fuente
Comience un proyecto personal. El problema con la escuela es que lo más complicado que hiciste allí fue un proyecto que tomó de 15 semanas a un año e involucró a un par de personas más. El dominio del problema fue bien entendido (su profesor no le dio ninguna tarea que no se ajustara perfectamente a su semestre). Este no es un lujo que el mundo real le ofrece.
Si tiene que hacer algo importante, de principio a fin, que le apasione, su cerebro comenzará a dar vueltas al proceso. Mientras esto sea solo una carrera y no te guste, aún sentirás que aún no lo has logrado.
fuente
fuente
No puedo ayudarlo con su situación laboral, pero espero poder ayudarlo a desarrollar sus habilidades y también poner sus sentimientos sobre sus propias habilidades en perspectiva.
Es posible que tus instructores tengan algo de qué avergonzarse. También es posible que su sentimiento de no saber programar sea natural y apropiado para esta etapa de su vida y educación. Aquí hay algunas ideas que pueden ayudar:
A muchos empleadores no les importa qué cursos están en su expediente académico o incluso cuál es su promedio de calificaciones. En cambio, quieren saber qué puedes hacer y, especialmente, qué has construido. Para un buen trabajo, lo que ha creado es más importante que la tecnología (C, C #, lo que tiene) en su currículum.
Si no tuvo la oportunidad de construir una serie de proyectos interesantes durante su educación, avergüence a sus instructores. Pero puedes construir esos proyectos ahora. Recorre los sitios web en busca de problemas interesantes. Nuestros estudiantes del segundo semestre apenas están terminando la "Búsqueda de canciones": extraemos una gran cantidad de letras para un sitio web, crean un índice invertido, usted lo alimenta con palabras clave y le muestra las letras que contienen esas palabras, en contexto. No es Google, pero está hecho con los mismos principios con estructuras de datos similares, y puede comenzar a construirlo ahora.
¿Quizás no has trabajado duro en el tipo correcto de problemas? Es bueno encontrar problemas que
Si abordas este tipo de problemas, aprendes a tomar decisiones, a vivir con las consecuencias y, si las cosas no funcionan, a volver y revisar tus elecciones. Aprenderá más de sus fracasos que de sus éxitos, pero obtendrá más confianza de sus éxitos que de sus fracasos.
Los buenos problemas, con propiedades como las que enumero arriba, son como el oro, excepto que si alguien más le da un buen problema, no pierden nada. Explore la web en busca de buenos problemas, y practique, practique, practique. Si los problemas de Euler son donde debe comenzar, están bien para principiantes. Pero pronto querrás construir proyectos pequeños o medianos que consideres realmente geniales . Si está entusiasmado con algo que ha construido, eso impresionará a los posibles empleadores. Si no estás emocionado, es difícil contratarte.
Peter Norvig informa que lleva diez años convertirse en un experto . Por supuesto, no te sientes como un experto justo después de obtener tu título. Te contaré un pequeño secreto: la mayoría de los miembros de la facultad de Harvard (yo fui uno durante ocho años) sienten que realmente no pertenecen a Harvard, no saben lo suficiente, y debe haber sido un error que fueron contratados Este tipo de sentimiento es muy, muy común para las personas que hacen la transición de la escuela al lugar de trabajo, o de un tipo de trabajo a otro. Tan común que tiene un nombre: "el síndrome del impostor".
Aunque tengas tu título, tu universidad aún te hablará. Si tuviste profesores realmente buenos, probablemente todavía se preocupan por ti. Ciertamente les importa que uno de sus estudiantes se haya graduado con un promedio de B y sin embargo sienta que no ha dominado las habilidades básicas de su oficio. Por lo tanto, busque uno o dos de los profesores más enérgicos y comprensivos de su programa, y obtenga ayuda para encontrar buenos problemas. A continuación, poner a sí mismo a cargo de sus habilidades, sus conocimientos y sus sentimientos acerca de ellos. Construye un poco de algo todos los días y no pierdas nada de tu precioso tiempo de construcción en algo que no sea realmente genial. Eventualmente, lo prometo, recuperarás una sensación de entusiasmo por la programación, y después de eso, también podrás generar confianza en ti mismo.
fuente
Hubo una escena en una antigua Ley y Orden en la que un fiscal de distrito se queja de que no aprendió nada sobre cómo hacer su trabajo en la facultad de derecho, que no aprendió nada sobre el mundo real. El profesor ante el que se queja responde: "Es una escuela de derecho, no una escuela de abogados".
Lo mismo se aplica a la informática. Quizás no aprendió cómo contribuir de inmediato a algún proyecto que ve en línea, pero probablemente desarrolló la base que necesita para tener éxito a largo plazo.
Primero, consigue un trabajo, cualquier trabajo. Conviértete en autosuficiente. Particularmente en la economía actual, nunca culparía a ningún candidato para trabajar en una librería o lo que sea mientras buscan un empleo más apropiado. Tengo preguntas para las personas que se sientan sin hacer nada.
Encuentra un proyecto, cualquier proyecto. Hay muchos proyectos aplicables en github.com, por ejemplo.
La buena noticia es que mucho antes de lo que piensas, a nadie le importará dónde fuiste a la escuela, cuál fue tu promedio de calificaciones o algo así.
¡Cuelga ahí! Puede ser difícil, pero algún día te alegrará la experiencia.
fuente
¿Has mirado en ProjectEuler ? Aprendí Python haciendo los problemas en ese sitio. :] Si buscas aprender Java o C #, puedes probarlo. Además, recomiendo probar también la programación GUI.
Editar:
Aquí hay un gran tema sobre SO para muchos enlaces que puede consultar para la práctica de codificación:
https://stackoverflow.com/questions/662283/websites-like-projecteuler-net
fuente
Supongo por su nombre de usuario que es una mujer ... Si no, no dude en ignorar esto o adaptarlo a su propio punto de vista.
En mi experiencia, las mujeres que se gradúan de la universidad en ciencias de la computación se consideran mucho menos competentes que sus homólogos masculinos con habilidades similares. Se podría decir que las mujeres son (o, para ser exactos, las mujeres que conozco son) simplemente más honestas en relación con sus propias deficiencias, pero al final, tienen más problemas para venderse a los empleadores.
(Pasé la mayor parte de la escuela de posgrado sintiéndome como un fracaso total en comparación con mis compañeros, y terminé graduándome como el mejor de mi clase).
Entonces, mi consejo sería ser honesto contigo mismo y seguir trabajando duro para desarrollar tus habilidades. Pero no minimice lo que sabe cuando busca un trabajo, y no se limite a solicitar trabajos de "alcance".
Agregado como una idea de último momento:
fuente
Mucha gente ha dicho que debes comenzar un proyecto personal. En mi opinión, este es el mejor consejo aquí. Agregaría algunas cosas que no vi cuando leí las otras respuestas ...
Recoger algo en un área que usted es apasionado alrededor . El mejor lugar para encontrar esto es quizás en su interés fuera de la informática. Eso podría ser una organización sin fines de lucro en la que participa, un pasatiempo que le apasiona, un deporte que hace.
Encuentra un colaborador . La codificación por sí sola es difícil, por lo que otra cosa que sería de gran ayuda sería encontrar un amigo para colaborar con usted en este proyecto. Esto lo hace mucho más divertido y te mantiene motivado. En su reciente publicación en el blog, Jeff Attwood habla sobre esto exactamente en su experiencia de construir SO. http://www.codinghorror.com/blog/2010/05/on-working-remotely.html
Elige algo modesto (inicialmente) . El proyecto ideal comenzaría con algo pequeño. Si el objetivo fuera de la puerta es demasiado ambicioso, se volverá demasiado desalentador. Habiendo desarrollado para PC, teléfonos, sistemas integrados y la web, diría que la web es el mejor lugar para buscar algo que otras personas puedan comenzar a usar de inmediato.
Si este proyecto es un trabajo de amor en el que trabajas felizmente en lo profundo de la noche, y luego saltas de la cama a la mañana siguiente para volver a él, entonces seguirán cosas buenas. Aprenderás, la confianza crecerá. Y una vez que tiene algo que la gente puede ver, se convierte en el comienzo de su cartera. Nada impresiona a los programadores y gerentes de contratación (decentes) que algo real.
fuente
Algunos comentarios, desde la perspectiva de alguien que ha sido desarrollador durante más de 20 años:
Son el producto de equipos, construidos principalmente en bibliotecas e infraestructura (.net, java, asp.net, etc.) producidos por otros equipos y respaldados por experiencia y recursos. Que usted, individualmente, no sepa dónde comenzar a hacer algo similar es completamente comprensible. No te preocupes por esto.
Mucho trabajo de desarrollo ahora es así, me temo. Pero hay mucho margen para hacer un trabajo interesante 'sobre' esas bibliotecas. Y no se preocupe por encontrar algoritmos difíciles: seguramente nunca tendrá que implementar una clasificación rápida, una lista vinculada o lo que sea durante su carrera. Para eso están las bibliotecas.
Saber programar y saber cómo funcionar como desarrollador profesional son dos cosas muy diferentes. Solo necesita algo de experiencia, preferiblemente trabajando con otros desarrolladores en sistemas del mundo real. Intente agregar C # o Java a su conjunto de habilidades: no hay mucha diferencia entre ellos, por lo que el conocimiento es transferible. Tenga cuidado de volverse demasiado especializado demasiado pronto. Es posible que tengas que aceptar que no ganarás mucho dinero de inmediato, así que mantén tus costos personales bajos por un tiempo si puedes.
Comience a trabajar en el proyecto que mencionó, pero además de aumentar su conocimiento de programación, intente usarlo para obtener experiencia de habilidades relacionadas, como control de versiones, pruebas de unidad e integración, e incluso escribir documentación simple. Este tipo de habilidades son las que distinguen a un desarrollador de un programador, y son un buen escaparate para un posible empleador. Hay muchas herramientas gratuitas disponibles (las ediciones express de Visual Studio, github, nunit, Google apps) que pueden ayudar.
Por lo que ha escrito, parece que su título de CS le ha enseñado cómo pensar en problemas técnicos. También parece tener un buen nivel de autoconocimiento, incluso sobre sus límites técnicos y experiencia actuales. Úselos como ventajas. Ahora no es un buen momento para ingresar al mercado laboral, pero si trabajas duro estarás bien. No se preocupe, aprenda, obtenga experiencia, manténgase actualizado, intente hacer cosas que disfrute.
¡Buena suerte!
fuente
La programación no se trata solo de tu comprensión de los algoritmos o tu promedio de calificaciones durante la universidad. La programación se trata de tener la capacidad de pensar fuera de la caja, el deseo y la voluntad de aprender y lo más importante de todo, la creatividad.
En una nota personal, me acababa de graduar de la universidad en mayo pasado y tuve un terrible promedio de calificaciones. Me había centrado más en mi vida social que en la academia y pagué el precio.
Sin embargo, durante mi reciente entrevista de trabajo fuera de la universidad, ( que me había llevado menos de un año para aterrizar ) mostré mi creatividad, pasión por el aprendizaje y habilidades analíticas, que me ayudaron a conseguir el trabajo.
fuente
Nota: espero que esta publicación sea rechazada. Esta no es una respuesta al póster original, sino una observación sobre la mayoría de los comentarios que he leído anteriormente.
Las respuestas que estoy leyendo arriba realmente me están asustando. Parece haber una sensación casi universal de que los grados de comp.sci son inútiles o no relevantes, o no te enseñan nada. ¿Los grados de comp.sci realmente se han vuelto tan malos, o todo esto es solo aire caliente de los desarrolladores sin títulos que intentan justificar su falta?
En serio, ¿qué le están enseñando a la gente en la universidad hoy en día? Cuando haces un título de CS (al menos cuando era estudiante) para cuando te gradúes, tendrás una buena comprensión del diseño del compilador, comp. complejidad, métodos formales y lógica, todo un zoológico de estructuras y algoritmos de datos, investigación de operaciones básicas (LP, etc.), bases de datos, cifrado y seguridad, algoritmos de programación, protocolos de red, desarrollo de Internet, diseño de SO y kernel, algoritmos paralelos y estructuras de datos, algoritmos numéricos y mucho más. Todo el lote generalmente se completa con un gran proyecto de programación que forma parte de la disertación final. No me digas que los graduados de comp.sci no obtienen suficiente programación de práctica.
También aprecio el hecho de que algunos de los grados de comp.sci más tradicionales omiten algunos aspectos del ciclo de desarrollo de software, probablemente no escuche mucho hablar sobre TDD, pruebas de unidades. Pero seamos brutalmente honestos: no es realmente ciencia espacial, ¿verdad? Tampoco escuchará sobre SCRUM o el análisis de puntos de función. Enseñar cursos detallados sobre temas tan básicos sería bastante redundante, aunque muchos títulos en la actualidad tienen un curso sobre diseño de sistemas en el que les dan a los estudiantes una idea de cómo funcionan estas cosas.
De acuerdo, es posible que no seas un experto en .NET, PHP u otros estándares actuales de la industria, pero eso debería ser irrelevante. En 5-10 años, los idiomas elegidos habrán cambiado de todos modos. El hecho de que aprenda a conducir un Peugeot no significa que no pueda conducir un Fiat, y lo mismo debe aplicarse a los lenguajes de programación. Debería llevar unos meses de práctica con algunos buenos libros para ser competente para trabajar en cualquier idioma.
Seguramente, si algo es una pérdida de tiempo, son estas costosas "certificaciones" que básicamente implican rendir un examen electrónico de opción múltiple y preguntarle acerca de las minucias (generalmente sin sentido) de una arquitectura o lenguaje en particular. Tienden a medir la competencia de un programador por su conocimiento de ciertos casos de programación patológica.
He trabajado en la industria de TI en varias compañías y también he estado involucrado en el proceso de entrevistas para otros desarrolladores de software. Hicimos algunas de las preguntas habituales sobre fizzbuzz, pero estaban dirigidas principalmente a personas sin entrenamiento formal o aprendices. Nunca he conocido a un graduado de comp.sci que no sea capaz de responder preguntas de programación básicas y no tan básicas.
Tenga en cuenta que vivo en Europa y solo sé sobre títulos universitarios europeos. Sin embargo, estoy bastante seguro de que el estándar universitario en los EE. UU. Es mucho más alto que el de la UE.
fuente
Tu humildad te servirá bien. La mente del principiante es útil para todo tipo de aprendizaje, sin importar cuánta educación y experiencia tengamos.
Trabaje a través de ejercicios, como otros han sugerido, en el Proyecto Euler y en otros lugares.
Encuentre soluciones para ayudar a otros aquí en SO. El ejercicio de comprender la pregunta, determinar lo que sabe que puede aplicarse y, finalmente, articular una respuesta ayudará a desarrollar su confianza, a medida que los ejercicios desarrollen sus habilidades.
Quedarse con eso; estarás bien.
fuente
Graduarse con una licenciatura en ciencias no te convierte en un gran programador como graduarse de un programa de música te convierte en un gran músico.
No hay sustituto para la práctica, práctica, práctica y experiencia. Programa 8 horas al día y en 5 años podrías tener esa comprensión que te falta en este momento.
fuente
Una pregunta tan sincera, excelentes respuestas: voy a intervenir brevemente :)
Las respuestas hasta ahora me hicieron reír un poco: potencialmente celebran nuestra propia grandeza un poco irónicamente. Vengo a SO por falta de documentación y errores en los marcos. Obviamente, hay otro oro aquí, pero vale la pena retener tu humildad, incluso si te conviertes en un gran desarrollador, y lo digo desde la perspectiva de la arrogancia histórica (?) Personal.
Tenga en cuenta que es posible que no esté (probablemente no) siendo contratado por un técnico, aunque las mejores personas y gerentes de recursos humanos utilizarán un técnico para evaluarlo.
Los empleadores tienen un plan para sus empleados, intente percibir ese plan todo el tiempo y hágalo respetuosamente, tal vez dándole un poco de giro y mejora personal. Pueden surgir dificultades y oportunidades cuando un empleador realmente no tiene un plan específico: hacer buenas preguntas y ayudarlos a especificar el plan realmente puede hacer que se destaque en estas situaciones.
Los empresarios pueden ser (legítimamente) paranoicos acerca de los desarrolladores que los patrocinan, ya que a menudo tenemos que manejar un poco sus percepciones para ayudarlos con las decisiones que no entienden, y lo digo, irónico, para mostrarles la perspectiva de NO tener o desarrollar a sus compañeros de trabajo no tecnológicos. Humildemente creo que es importante entender que esto es a menudo la esencia de las relaciones entre técnicos y no técnicos, y es difícil de evitar, lo que hacemos es obtuso.
Ser profesional, de mente abierta y respetuoso sí consigue trabajo; si no sabe bien qué es profesional, estoy seguro de que hay lugares para resolverlo en la web, desearía que alguien me lo hubiera señalado cuando comencé. :)
Lo último que diría es que, a medida que mejora en el desarrollo y la arquitectura, y ya suena como si hubiera entrado en este camino, puede encontrar que su código profesional puede volverse muy insatisfactorio, incluso si es el solución adecuada
No estoy seguro de cuál es la solución, pero trata de encontrar una salida y estar menos involucrado emocionalmente en tu trabajo, te ayudará a mantener el ritmo y vivir una vida mejor. Ten mucho cuidado al tratar de hacer un esfuerzo adicional para hacer algo "correcto": muchas veces creará complicaciones para sus compañeros de trabajo y casi nunca podrá dedicar la cantidad de tiempo que necesita para realizarlo dentro del plazo de su proyecto. Un síntoma de esto es "oscurecerse", cuando no quiere explicar lo que quiere hacer a nadie. Muchos de los mejores desarrolladores pueden explicar la esencia de lo que le están haciendo a un laico: esta es una gran habilidad para aprender y me ha resultado intelectualmente liberador practicar.
Je, y al estimar, para empezar, divide tu tarea en pedazos, suma el tiempo y luego duplícalo (se llama, divide, conquista, marcha a casa;)
¡Buena suerte! Dejé la escuela esperando ser instructor de esquí y terminé siendo un desarrollador principal. Estoy seguro de que también te irá bien en lo que termines haciendo.
fuente
Sí, es razonablemente normal: la mayoría de las escuelas, incluso las prestigiosas, hacen un excelente trabajo de enseñanza de la informática y un trabajo terrible de enseñanza del desarrollo de software. Esto está mejorando lentamente, pero todavía tiene un largo camino por recorrer.
De todos modos, parece que estás haciendo la mayoría de las cosas correctas:
fuente
Muy buena pregunta. Estoy seguro de que hay muchas personas que están pasando exactamente por lo que ha descrito en todos los ámbitos de la vida y los mercados laborales.
Primero, no más preocupaciones por cosas que están fuera de tu control. No está permitido estresarse o incluso pensar en la escuela, lo que aprendió o no aprendió o qué tan bien lo hizo académicamente.
Segundo: especializarse. Siempre habrá demanda de personas que sean realmente buenas en lo que hacen, incluso si lo que hacen es oscuro. Debe elegir su lenguaje de programación favorito y resolver dominar por completo ese lenguaje y "personalizarlo". Ya tiene muchos buenos consejos sobre cómo mejorar las habilidades de programación, pero al final del día nada se compara con encontrar un libro autorizado sobre el tema y encerrarse en su habitación durante unos días mientras no hace nada más que leer cada página y escribir cada ejemplo que da el libro.
Tercero: publicítate. En esta historia de la informática, este paso nunca ha sido tan fácil como lo es hoy. Las respuestas que da y las preguntas que hace en SO son su currículum. Asuma la responsabilidad de convertirse en la autoridad líder en SO para ese idioma que ha decidido dominar. Asuma la responsabilidad de cualquier pregunta que surja a través de este servidor con su etiqueta, incluso si eso significa horas de investigación exhaustiva y llegar a respuestas tardías. Busque en los archivos y lea todas las preguntas que haya hecho sobre SO sobre su tema. Corrija la información errónea, proporcione sus propias respuestas y variaciones a las respuestas y combine algunas respuestas existentes en una mejor respuesta. Inundar SO con un flujo interminable de sus comentarios, respuestas y ediciones, debería ser su razón de ser (Además es divertido porque obtienes puntos de reputación).
Cuarto: trabaja en tu imagen pública. La confianza en uno mismo es esencial para conseguir el mejor trabajo. Las empresas quieren personas que sean excelentes compañeros de trabajo, colaboradores y comunicadores. Si crees que esto podría ser un problema, dile a tus amigos que los necesitas para aumentar tu ego y colmarte de infinitos complementos, luego ve a tu biblioteca local y recoge uno de estos .
fuente
Bien, entonces vi las noticias de los hackers y pensé "¡¡SANTA MIERDA ESO SOY MÍO !!"
Así que me gradué en diciembre pasado con un título en CS y sentí que de alguna manera había logrado aprobar mis clases y obtener un título sin realmente obtenerlo. Sentía que todos mis compañeros de clase tenían increíbles habilidades de codificación, y que todo lo que podía hacer era crear programas básicos de Java. Aprender a codificar y convertirse en un buen programador lleva mucho tiempo. Hay muchísimas cosas para aprender y mi consejo es tomarlo un poco a la vez. Aprenderás cosas sobre la marcha. Como todos los demás están tristes, la mejor manera de aprender es hacerlo especialmente con la codificación. Sin mencionar que hay tanto sobre la creación de aplicaciones que ni siquiera se molestan en decirte en la escuela. No te sientas mal, solo debes saber que hay mucho para que aprendas y date cuenta de que tomará tiempo aprenderlo.
Creo que definitivamente deberías mirar más allá de la ciudad donde creciste. Hay un montón de compañías que contratan graduados de CS, y no todas ellas requieren o esperan que seas un gran programador desde la escuela. Tuve muchas entrevistas en las que no me hicieron preguntas de codificación (también hubo muchas que me pidieron que resolviera algoritmos y que codificara). Solicite en empresas que se preocupan más por su capacidad de aprender de lo que ya sabe (en mi experiencia, las empresas más grandes se preocupan más por esto porque no las afectará tanto si no puede producir código de inmediato).
No sé si la codificación es algo que desea hacer y perseguir, pero también hay muchos trabajos que no son técnicos que requieren una formación técnica. Podrías buscar esas opciones.
No me enfocaría en aprender los entresijos de un lenguaje como C # o Java y me enfocaría en los principios de programación. Debería poder transferir buenas habilidades de codificación y aplicarlas en cualquier idioma (esto es importante para la longevidad en su carrera ... Java no va a estar caliente para siempre). Por otro lado, conocer las "habilidades candentes" puede ayudar a conseguir un trabajo. Las habilidades de entrevista son REALMENTE importantes. Tome cada entrevista que reciba, incluso si es solo para practicar.
De todos modos, no piense que grandes compañías como IBM están fuera de su alcance. Sentí lo mismo que usted hace unos meses, y ahora trabajo en IBM. Mi GPA tampoco fue tan bueno. Todavía apesta en la programación, pero sé que mejoraré con el tiempo. ¡Solo confía en tu capacidad de aprender!
fuente
Wow, qué respuesta antes de esta.
¿Qué tal una respuesta completamente diferente ...
Vamos a replantear su problema en términos de ser humano.
"Me gradué de la clase de concepción y estoy a punto de nacer. Mi madre está coronando y me darán a luz mañana por la mañana. Pero cuando miro a atletas como Usain Bolt , pienso" ¿cómo puedo correr eso? ¿rápido?".
Pero aquí estás, eres un humano de pleno derecho, has pasado por la escuela, puedes caminar, hablar y, si has hecho un curso de informática, eres bastante inteligente. Nada de que avergonzarse.
Ahora, nació Usain Bolt y de repente comenzó a ponerse loco en la pista, o fue una gran cantidad de vida, descubrir lo que le interesaba, seguido de una increíble cantidad de aplicaciones y luego de repente " Bam! " Él estaba ahí.
Lo más probable es esto último. Así que no te des por mal tiempo por no saber lo que deberías estar haciendo. Se necesita tiempo para determinar qué es lo mejor para usted. Eso es para ti , no lo que piensan tus padres, no lo que piensan tus compañeros. Lo que es correcto para ti . Lo que enciende tu fuego . Lo que te hace pensar * sí, esto es genial "incluso cuando todos los demás piensan que son pantalones.
No es raro comenzar (y / o) dejar tu título sin tener idea de lo que quieres hacer.
Para mí, era bueno en la escuela en los niveles O (una calificación del Reino Unido) pero no me importaba un bledo los niveles A (requeridos para ingresar a la Universidad para obtener un título). Así que fui a un lugar menor para obtener mi título (y como resultado, no el título que hubiera preferido). Pero lo aguanté (todavía no tenía idea de lo que quería como carrera) y aprendí mucho sobre electrónica y cosas que la mayoría de los chicos de software nunca aprenden. Durante este tiempo trabajé como escritor de juegos de computadora.
¿El final resulto? Después de obtener mi título (con elogios), entré en un trabajo con una entrevista de trabajo con un salario más alto que aquellos que hacen electrónica directa y no tuve que cambiarme el pelo ni ponerme un traje. ¿Qué? Bueno, a los 23 eso importa (mirando hacia atrás ahora, a los 44 años, me río de eso, pero esa es la vapidez de la juventud para ti).
Esa compañía quebró y luego empecé a ponerme más seria. Pero probablemente no fue por otros años hasta que de repente encontré (por accidente) lo que realmente me interesaba. Resultó ser herramientas de software de bajo nivel. Debería haber sido obvio: todos los juegos de computadora que escribí fueron escritos en conjunto, siempre me gustaron las cosas de bajo nivel que nadie más podía entender. Pero para ver eso como un futuro, eso requiere más madurez y no sorprende que realmente no se manifestara hasta mis 20 años.
A menudo estoy impresionado (y asombrado) de que los jóvenes, a menudo todavía en la adolescencia, parecen saber lo que quieren hacer. Pero la verdadera pregunta es, ¿lo siguen haciendo a los 27 años? ¿O han cambiado de rumbo porque sus primeras ideas no eran correctas para ellos?
¿En términos de cómo hago algo tan impresionante como ESO (sea lo que sea, Google, SO)? Bueno, lo haces en trozos, al igual que lo haces con el software y todo lo demás en la vida. Empiezas con lo básico, obtén experiencia en él. Si eres lo suficientemente bueno, continúas y obtienes más experiencia, etc., o lo abandonas porque te das cuenta de que no eres lo suficientemente bueno o que es tan aburrido como el infierno (es por eso que no hago comunicaciones a pesar de que siempre es sido una mina de oro. ¡Para mí es aburrida!).
Por supuesto, mira a tus compañeros, mira a tus mayores, examina sus elecciones e intereses. Pero examina el tuyo también. A menudo, lo que a primera vista parece loco / loco es realmente el verdadero negocio. Hacer algo que le parezca interesante (en lugar de pagar las facturas) es SO mucho más gratificante.
Sí, sé que a los 23 años estás concentrado en el Audi TT y en el piso genial y, por lo tanto, te sientes atraído por el dinero en lugar de elegir opciones de carrera sensatas, pero en serio, en algún momento te darás cuenta de que el auto genial no está tan arruinado ser - esa chica debería quererte por lo que eres, no por lo que conduces.
En serio, piénsalo. La solución no tan genial puede ser la respuesta correcta.
fuente
Además del gran consejo dado por otros, agregaría participar en eventos para desarrolladores en su área. Busque reuniones, grupos de usuarios, campamentos de bares, campamentos de código, etc. Esto lo ayudará a establecer contactos con otros desarrolladores, obtener oportunidades de trabajo, mantenerse al día con las nuevas tecnologías y proporcionar una visión realista de los niveles de habilidad de otros desarrolladores.
fuente
Sigue la regla de las 10.000 horas.
Para convertirte en un maestro de algo, debes practicar durante al menos 10,000 horas. Así que pasa 10.000 horas programando, y te convertirás en un maestro de eso. Si no ha pasado 10,000 horas programando y no se siente como un maestro del oficio, no se desanime, solo pase más tiempo codificando.
También tenga en cuenta que probablemente le llevará alrededor de 3 años y medio hacerlo si programa durante 8 horas al día. Si solo programa durante el horario comercial, probablemente le llevará unos 4 años. Si no ha pasado tanto tiempo durante su programación de grado de 3/4 años, entonces probablemente no se sentirá como un maestro.
fuente
Solo un par de pensamientos, si puedo.
Wendy dice que uno puede graduarse con un título de CS, sin embargo, tiene poca idea de la práctica de la programación. ¿No es eso muy preocupante, incluso horrible? Es tan inquietante como el fraude que sumergió los departamentos de inglés en los años 70: la literatura no es una colección de ideas que uno puede entender e integrar, sino más bien un conjunto de 'textos' que el estudiante debe abstraer y 'deconstruir' ( http: / /www.answers.com/topic/deconstruction ). Afortunadamente, esa marea fétida está disminuyendo, tal vez porque los instructores que se desvanecieron en su maleza se están retirando ahora.
Hace años, hace décadas, mi primer curso de CS me enseñó el lenguaje ensamblador (antes de que se inventara C) usando problemas reales como la clasificación, el hash y la búsqueda (y, sí, la recursividad). Mi segundo curso enseñó el diseño y la realización de un compilador de trabajo real en vivo. Era un estudiante de medio tiempo en el MIT y esos dos cursos eran todo lo que necesitaba para comenzar a recibir un pago como programador; y llegar a ser algo productivo dos o tres meses después.
Así que esta mañana, al escuchar el grito de Wendy, estoy pensando que seguramente MIT, de todos los lugares, no puede haber diluido sus ofertas y engañado a sus estudiantes con (en el contexto de la práctica de programación) basura prácticamente inútil. Pero cuando miro el plan de estudios EE / CS del MIT, veo que eso es lo que sucedió:
http://student.mit.edu/catalog/m6a.html
¡Noto particularmente que el departamento usa Python como lenguaje de enseñanza! ¡En serio! Parece que un título de CS en MIT significa calificar a un estudiante para convertirse en maestro de CS en MIT. Hable acerca de la recursividad!
Luego me encontré con esta contribución a Coding Horror ( http://www.codinghorror.com/blog/2006/07/separating-programming-sheep-from-non-programming-goats.html ) y lo pensé mucho al grano de esta conversación:
"Llegué tarde a esta discusión [sobre la predicción del éxito en los candidatos a programadores], pero en mi experiencia como estudiante de último año de pregrado de CS de 30 años, he descubierto que las clases de programación son inútiles y menos mal enseñadas. no me enseñaron. Solo estuve en un colegio comunitario y luego en la Universidad de Illinois en Chicago, pero las clases introductorias de programación fueron:
"1. Orientado a objetos, que dejó a los estudiantes con poca o ninguna comprensión de los métodos de procedimiento, y
"2. Clases de eliminación. Las clases consistieron principalmente en descripciones de diferentes tipos de problemas y las matemáticas detrás de ellos, en lugar de una sintaxis y estructura, para lo cual se le dijo a la gente que solo leyera el libro.
"El código apenas se reconoció directamente hasta el núcleo de Data Structures, y luego aún dependía del instructor que obtuviera, algunos eran muy ligeros y otros muy amables. Se notaba que era una gran tentación para los maestros ser ligeros. en este punto, porque si se concentraran en el código, también tendrían que concentrarse en enseñar a los estudiantes que habían estado en un curso de informática durante dos años cómo programar.
"Dado que la codificación es un pasatiempo para muchos jóvenes, creo que las instituciones educativas han confiado en eso para establecer sus curvas de aprendizaje esperadas, dejando a las personas que tenían poca o ninguna experiencia en la programación cuando ingresaron a la escuela, no tuvieron más remedio que hacer trampa como locos, gastar todo de su tiempo libre estudiando código, o cambiar de especialidad. Y no es necesariamente un déficit en el pensamiento abstracto en mi experiencia, porque todos los que conozco que abandonaron CS terminaron en Ingeniería Eléctrica, lo cual no es nada para sacudir un palo. en el frente abstracto. Todavía no saben cómo programar, mientras hacen matemáticas que no puedo hacer cara ni cruz. Recuerdos más absurdos:
"1. Java como el lenguaje de programación requerido. No voy a criticar Java aquí, pero ¿no sería bueno para los estudiantes tener que aprender su propia recolección de basura? ¿Y no sería bueno aprender los punteros? incluso si nunca decidimos programar en un idioma con ellos nuevamente?
"2. ¿Tomar una clase básica sobre teoría de sistemas operativos, después de haber sido inundado con Java, y descubrir que estaba en C (por supuesto) sin siquiera una clase de C en el campus?
"Por supuesto, tengo treinta años, y también una de esas personas que siempre programaron, así que no tuve problemas, pero vi muchas personas que sabía que eran mejores en abstracción que yo (de Cálculo, DiffEQ y clases de física antes) ) y su agonía total al tratar de terminar un programa que se había apilado contra ellos ".
Solo un par de puntos de datos pero, como otros han dicho, inquietante.
- Pete
fuente
En primer lugar, espera!
En segundo lugar, aquí hay algunas cosas que me ayudaron:
En tercer lugar, estaba en un bote similar al tuyo cuando me gradué, así que agárrate y sigue buscando. Tu primer trabajo está ahí afuera.
fuente
Muy pocas personas se gradúan de alguna disciplina siendo expertos en algo que simplemente han estudiado. La informática no es de ninguna manera especial en ese sentido. No hay nada mejor que la experiencia empírica y solo se obtiene al desarrollar un software completo para clientes reales, con todas las demandas, limitaciones de tiempo, cambios y trabajo en equipo que esto implica.
fuente
Encontré este sitio malvado el otro día http://99designs.com/ Bajo el diseño del sitio web u otro diseño, probablemente pueda encontrar algunos proyectos relacionados con el software.
Esta sería una excelente manera de obtener codificación, desarrollar nuevas habilidades, conocer nuevas personas que pueden ser empleadores potenciales e incluso puede ganar algo de dinero.
He descubierto que los empleadores tienen un gran valor al demostrar que, a pesar de que no tenía un trabajo, no estaba sentado en su trasero. Muestre que salió e hizo algunos proyectos, preferiblemente los que puede mostrar en una entrevista.
fuente
No te preocupes Roma no fue construida en un día.
EDITAR:
#! diff A B
fuente
Primero, no te preocupes porque no puedes codificar google. Google fue creado durante varios años por muchos programadores muy experimentados. Eso es como terminar un título en artes visuales y preguntarte cómo puedes hacer La Última Cena.
Para buscar trabajo, no se preocupe por los requisitos. Simplemente llámalos y di que no tienes años, pero que aún te gustaría postularte. Si realmente quieren la experiencia, pregunte si hay más puestos junior disponibles; es posible que puedan crear un nuevo puesto solo para usted. La mayoría de los trabajos se crean para una persona específica. Asegúrese de contactar al gerente del proyecto, no al departamento de recursos humanos. RR.HH. generalmente no crea nuevos trabajos, a menudo solo seleccionan a los solicitantes para trabajos existentes. Google es tu amigo en este caso;)
No intente codificar una aplicación web (como Google o desbordamiento de pila) a menos que desee invertir unos 6 meses. Es una gran curva de aprendizaje. Debe aprender a administrar un VCS, ejecutar un servidor web, codificación HTML JS y CSS, un sistema de base de datos y el idioma de la aplicación web. Es brutal. La mayoría de estas tecnologías no son transferibles a menos que desee hacer un trabajo web.
Si desea hacer aplicaciones web, puede considerar instalar una aplicación web simple (como esta aplicación de búsqueda de IP a país basada en django - http://www.coulix.net/blog/2006/aug/17/ip- country-flags-django-comments / ). Puede darse una vuelta por un código de descuento de Dreamhost de $ 90 (para que pueda trabajar en un servidor web real) e intentar configurar las cosas. No se preocupe demasiado acerca de la seguridad o el rendimiento (pero hacer uso de ssh) - es sólo un proyecto de aprendizaje.
Si quieres hacer cosas en el escritorio, puedes echar un vistazo a pygame.
fuente
Puede leer todo sobre programación, pero no aprenderá cómo programar realmente hasta que esté bien ... ¡comience a programar!
Te recomendaría comenzar un proyecto personal. ¿Qué es algo que quieres crear? ¿un juego? ¿Un blog? No importa. ¡Solo haz algo!
Luego, después de hacer un poco de codificación real por un momento (algunas semanas o meses), recomiendo tratar de contribuir a proyectos de código abierto. El proyecto personal lo ayuda a descubrir cómo programar cuando el objetivo aún no está establecido para usted (saber cómo diseñar algo realmente no se enseña a menudo en la escuela). Contribuir a proyectos existentes le enseña a trabajar en equipo y a seguir los estándares del código.
No perdería mi tiempo leyendo mucho más. Yo diría que, como máximo, probablemente debería leer aproximadamente el 20% del tiempo y escribir código el otro 80%. (por supuesto, por tiempo, me refiero a tu tiempo reservado para programar cosas relacionadas)
fuente
Bueno, aquí están mis dos centavos ... junto con citas de algunas otras fuentes.
Este es un problema que he visto mucho, incluso hasta el punto en que las personas con años de "experiencia" en su currículum no pueden realizar tareas simples. Personalmente, creo que los institutos educativos son en gran parte responsables de esto, desde el profesorado que no conoce el tema o no puede enseñarlo a los consejeros que deberían dirigir a los estudiantes que solo quieren ingresar a un particular por el dinero sin Un interés razonable en el campo mismo.
Por el sonido de su pregunta, está saliendo de la universidad sintiendo que acaba de salir de unos pocos años de su vida para obtener un trozo de papel. Así es como muchas agencias de contratación ven un título en estos días para los programadores. Quieren personas que hayan demostrado que pueden programar, no solo alguien que tenga un papel. Pero el hecho de que hagas esta pregunta en primer lugar me muestra el deseo de aprender a programar.
Una de las mejores cosas que puede hacer para aprender ya se ha señalado varias veces, que es la programación. Desafortunadamente, si bien esto aumentará absolutamente su conocimiento y comprensión de la tecnología, no es increíblemente probable que lo ayude a encontrar trabajo a menos que sea algo que pueda incluir en su currículum.
Le sugiero que comience construyéndose algunas aplicaciones con un propósito específico, descubra qué puede hacer y qué lo desafiará a avanzar, luego vaya a algunos lugares donde puede obtener trabajo independiente. No esperes que te paguen una gran cantidad por el trabajo independiente que recoges en la web, estás buscando agregarlo a tu currículum, no a tu billetera. Una vez que tenga 3-5 elementos a los que pueda apuntar y decir "Construí eso" o "Diseñé esa funcionalidad para ellos", enumere todo eso y encuentre una agencia de contratación (están EN TODAS PARTES ... los cazadores de cabezas) y trabaje con algunas de sus personas para simplificar su currículum para que destaque su educación e ingenio para encontrar trabajo que hacer, y minimice el aspecto de su falta de experiencia.
Lo más importante para recordar cuando estás hablando con empleadores potenciales (que veo que la gente se equivoca todo el tiempo), y algo a lo que CUALQUIERA EN CUALQUIER CAMPO debe prestar atención, es que si bien no quieres venderte en corto o minimice lo que PUEDE hacer, NO SE VENDA EN SUPERVIVENCIA y haga que crean que puede hacer cosas de las que no tiene idea cómo. Los empleadores siempre tienen la habilidad de pedirle que haga cosas que no sabe cómo hacer, y es su trabajo en ese momento averiguarlo, pero si les dice que ya puede hacerlo, inevitablemente se comerá sus palabras más tarde. .
¡La mejor de las suertes para ti!
fuente