Estoy planeando mudarme a Nueva York en 6-12 meses como máximo, así que me veo obligado a encontrar un nuevo trabajo. Cuando estoy planeando comenzar mi vida en otra ciudad, probablemente también sea un buen momento para pensar en los cambios de carrera.
He encontrado muchas opiniones diferentes sobre PHP vs .Net vs Java y este no es el tema aquí. No quiero comenzar una nueva pelea sobre qué idioma es mejor. Conocer un lenguaje de programación no es lo más importante para ser un desarrollador de software. Para ser un desarrollador realmente bueno, necesita conocer POO, patrones de diseño, pruebas ... y un lenguaje es solo una herramienta para hacer que las cosas sucedan.
Volviendo a mi pregunta. Tengo una experiencia mixta en TI: 1 año como técnico de soporte de TI (administración y soporte de Windows), alrededor de 2 años de experiencia en programación integrada (VB.Net 2005) y durante los últimos 2 años estoy trabajando con PHP / MySQL. Trabajé con la tienda web Magento, asistí en algunos proyectos en Symfony, modifiqué algunos sitios de Drupal.
Mis principales preocupaciones son las siguientes:
- ¿Continúo mejorando mis habilidades en PHP, por ejemplo, para comenzar a aprender algunos marcos PHP importantes como Zend, Symfony tal vez obtenga alguna certificación PHP?
- ¿O empiezo a aprender .NET o Java? Estoy más familiarizado con .NET, así que probablemente lo elija si la elección cae entre .NET y Java (o podría convencerme de elegir Java :).
En cuanto a la carrera, no sé cuál es la mejor opción. Aprender un nuevo marco y lenguaje requiere más tiempo que mejorar mis habilidades existentes en PHP. Pero con .NET tiene muchas posibilidades (desarrollo de Windows 7 Phone, Silverlight, WPF) y posiblemente mayores posibilidades de encontrar mejores trabajos.
Los trabajos PHP están peor pagados que .NET, al menos, según mi investigación (corrígeme si me equivoco). Pero si empiezo ahora con .NET, soy solo un principiante y mi salario será bajo. Necesito al menos más de 2 años de experiencia en algún idioma para tratar de encontrar un trabajo que pague más de $ 50-60k en Nueva York. Mi objetivo principal en los próximos 2-3 años es tratar de encontrar un trabajo en la categoría de $ 60-80k. No me malinterpretes, no solo estoy persiguiendo dinero, sino que el dinero es un factor importante cuando intentas formar una familia.
Tengo 27 años y siento que no hay mucho espacio para tomar decisiones equivocadas con respecto a mi carrera, por lo que cualquier consejo será bienvenido.
Actualizar
Gracias a todos por dedicar tiempo a ayudarme con mi problema. Todas las respuestas y comentarios han sido muy útiles. He decidido seguir con PHP, pero también aprender C # y Silverlight 4. Veremos a dónde me llevará la vida.
fuente
Respuestas:
Tengo 51 años y he usado al menos 15 idiomas y / o marcos desde que obtuve mi primer concierto después de graduarme en 1987.
Salud.
Nunca entré a la gerencia porque no quería hacerlo, pero sé cómo programar y sé cómo mantener a los equipos motivados y entregar un buen código. Necesita trabajar en las habilidades de las personas y buscar un trabajo interesante que lo estire. Nunca dejé de aprender o divertirme, pero hubo momentos en que estaba en el camino que podría haber hecho para parar, pero no para codificar, viajar.
Mientras pueda ganarse la vida y cumplir con sus compromisos personales sin comprometer sus principios, siempre y cuando disfrute de lo que hace (un lujo que la generación de mis padres no tenía) simplemente continúe.
.Net y Java son generalmente corporativos (porque son caros para hacer cosas útiles, pero escalan muy bien), PHP generalmente es startup, yo hago Ruby (generalmente startups que salieron de los estudios de diseño por alguna razón) para mucha gente como independiente Si te quedas con PHP, aprende las cosas de OO, porque creo que finalmente comenzará a ser la forma en que las personas hacen las cosas, a pesar de que es una reimplementación ligeramente mejor de lo que tienes con Java y podrían haberlo hecho mucho más dinámico. Las personas que hacen Python y quieren viajar pueden terminar haciendo todo tipo de cosas científicas y de juegos interesantes en todo el mundo. Perl sigue siendo un corredor también y tiene un perfil similar.
Olvídate del idioma, la selección y la industria que te gusta, elige una empresa administrada por seres humanos y diviértete entregando valor a las personas que lo aprecian. No te arrepentirás.
fuente
¿Qué tiene que ver la elección del lenguaje de programación con tu carrera?
Esta pregunta es como preguntar: "Tengo dos opciones para un lugar para trabajar. ¿Debería trabajar en la que el jefe tiene acento noruego o la que tiene acento español?"
Hay consideraciones de carrera mucho más importantes.
Esta lista podría continuar por horas. La elección de un lenguaje de programación es tan relevante para la carrera de un programador como la elección de peinarse hacia la izquierda o hacia la derecha. Todo es desarrollo de software, sin importar el dialecto del lenguaje de programación que esté hablando.
fuente
Aprenda tantos idiomas como pueda, preferiblemente al menos uno de cada área principal de desarrollo.
Cada uno de estos le enseñará algo sobre los fundamentos del desarrollo de software. Por supuesto, además de eso, necesitará experimentar diferentes enfoques de diseño (OO, funcional, basado en datos), diferentes métodos de trabajo en equipo (ágil, tdd, en comparación con tipos más rígidos), diferentes plataformas, diferentes mecanismos de implementación (nativo , basado en framework, web). La lista continua. La fluidez del idioma es solo una pequeña parte del todo.
Para todas estas cosas, debe hacer al menos un producto real que los use para ser competente.
Algunas personas le dirán que necesita especializarse en una tecnología (PHP, .Net, Java) y desarrollar una carrera en gran medida en torno a esa para progresar. No estoy de acuerdo con esto en absoluto. Tomaré un desarrollador que ha estado alrededor del bloque varias veces con diferentes plataformas y tecnologías en una que ha pasado 10 años haciendo algo cualquier día de la semana. La razón es que la tecnología cambia cada año, y el desarrollador que es capaz de elegir una nueva tecnología, leer la API y aplicar su experiencia de una manera más general que simplemente conocer las funciones de la biblioteca de memoria, será mucho más productivo en el a largo plazo. Ok, entonces ese veterano .Net de 10 años estará fuera de los bloques de salida en .Net más rápido, pero esa ventaja inicial se pierde en aproximadamente un mes. Eso'
fuente
Sugeriría buscar un trabajo PHP porque eso es lo que mejor haces.
También te sugiero que comiences a educarte en las nuevas tecnologías que quieres aprender para que eventualmente puedas comenzar a buscar trabajo usando esas, pero no lo hagas en un plazo tan corto porque encontrarás que estas cosas son enormes y los empleadores esperan que conozcas lo suficiente de estos gigantes para ser productivo. Eso requiere tiempo y práctica . No subestimes la cantidad de tiempo y la cantidad de práctica que tendrás que hacer.
Para darle una estimación de lo que el potencial empleado "puedo programar en Java" debería ser capaz, puede echar un vistazo al Tutorial Sun Java . Espero que esté familiarizado con al menos la mitad de los conceptos enumerados, donde familiar significa poder usarlo en un programa escrito por usted y usarlo correctamente . Esperaría que tome más de 6 meses de tiempo libre estudiando para alcanzar ese nivel.
fuente
Odio parecer un troll, pero el idioma que debes aprender es el inglés. Hay un montón de errores en tu publicación y eso se ve descuidado. Si estuviera contratando y ese fuera tu currículum, no me importaría qué lenguajes de programación dijiste que sabías, asumiría que tu descuido con el idioma inglés se trasladaría a tu trabajo de programación.
No parecía que vienes al inglés como segundo idioma (por supuesto, podría estar equivocado), pero hubo suficientes errores gramaticales y ortográficos para detener a la mayoría de los gerentes de contratación. Como solo van a ver tu palabra escrita al principio, debes arreglarla.
fuente
La respuesta a largo plazo a esta pregunta es básicamente lo que dijeron nuestro estimado anfitrión (Joel Spolsky) y Steve Streeting. La programación en su núcleo no se trata de idiomas, se trata de usar la computadora para resolver problemas, y es un oficio que se debe aprender, trabajar y pensar con el tiempo. Saber codificar no hace que uno sea un programador.
Pero preguntaste un tema pragmático y sensible al tiempo ... ¿qué debes hacer AHORA?
Te sugiero que profundices en PHP hasta el movimiento. Profundiza en ello, duro, realmente duro, 20 horas a la semana fuera del trabajo duro. Con PHP es bastante fácil ... obtener una cuenta de hosting y un dominio y comenzar a construir aplicaciones. Con un esfuerzo enfocado, 6 meses es una eternidad. Durante ese tiempo, sé realmente bueno en eso. Esto lo ayudará a encontrar un buen trabajo una vez en Nueva York, y muy probablemente lo convertirá en un mejor programador para arrancar.
Por cierto ... si aún no lo sabía, hay un sitio de empleo de TI en la familia StackExchange.
ENTONCES, cuando la transición de la vida se haya calmado un poco, comience a seguir el libro de jugadas del Sr. Streeting y a aprender sobre el oficio de la programación en lugar del comercio de la codificación. Use algo de tiempo fuera del trabajo para leer y hacer cosas en otras plataformas y con otras herramientas.
fuente
Creo que el punto principal es que, con el tiempo, un ingeniero de software debería llegar al estado en el que el lenguaje es en gran medida irrelevante para la tarea en cuestión, excepto en sus limitaciones.
Si conoces un idioma o no, no debería marcar la diferencia, siempre que tengas un manual, solo para acelerar durante el primer día más o menos mientras te orientas.
Dicho esto, los lenguajes propietarios tienden a tener menos documentación y ejemplos repartidos por la web y, por lo tanto, es más difícil acostumbrarse y plantear un problema si desea llevar su trabajo a casa.
fuente
Mi consejo es encontrar un trabajo haciendo lo que le interesa y disfrutar haciendo. Si disfruta de PHP, ¿por qué no continúa desarrollando sus habilidades de PHP? Es mucho más fácil aprender y desarrollar habilidades para hacer algo que le interesa.
¿Alguna vez has visto .NET o Java antes? De lo contrario, eso podría sugerir que no está interesado en esos idiomas, pero quizás podría pasar una semana más o menos examinándolos y ver si usted está interesado en alguno de ellos.
fuente
Término corto; No sé cuáles son las prácticas de contratación en los EE. UU., Pero teniendo en cuenta que se mudará en 6 ~ 12 meses, por el momento, consideraría seguir con PHP ya que tiene dos años de experiencia con él.
Mi experiencia aquí (en los Países Bajos) es que las empresas tienden a centrarse a muy corto plazo en las tecnologías y la experiencia en el marco. El lenguaje realmente no es, incluso si están preguntando " 3 años de experiencia en C # ", quieren decir " 3 años de experiencia con las bibliotecas y herramientas marco / clase que usaría con C # ".
(De lo contrario, no sé por qué quieren contratar a alguien que necesite 3 años para aprender la sintaxis de C # y las características del lenguaje. Parece que alguien a quien no quisiera contratar).
Aprendiendo nuevos idiomas; estático, dinámico, funcional, es de gran valor cuando se trata de ampliar sus perspectivas. Sin embargo, aprender las bibliotecas de clase relevantes y la forma de hacer las cosas en ese idioma requerirá experiencia.
Recomiendo tomar una decisión al elegir una pila de tecnología y aprenderla profundamente. Usa los otros ambientes para inspirarte.
Por supuesto, la preferencia personal también entra en juego. Por ejemplo, aunque hay mucho mercado para ello, nunca aceptaría un trabajo PHP: -PI elegir una pila y buscar trabajo en función de eso.
En cuanto a hacer una carrera, a largo plazo, creo que debería ir más allá de la codificación (al final, todo se trata de aprender y poder leer y / o leer la documentación) y la tecnología del día y analizar más las habilidades blandas y demás. Las tecnologías van y vienen bastante rápido. Por supuesto, hay mucho que aprender cuando se trata de buenas prácticas y conocimientos más generales, desafortunadamente en mi experiencia rara vez se los busca en el mercado laboral.
fuente
Creo que a menudo las personas mezclan lenguajes de programación y marcos / pilas de tecnología. Es relativamente fácil aprender un nuevo idioma, pero es mucho más difícil con grandes tecnologías. Estoy de acuerdo con algunas respuestas en que lo más importante es su experiencia general de programación / resolución de problemas, pero no creo que nadie pueda ENTENDER una tecnología completamente nueva en 1 semana.
Claro, una gran parte de los desarrolladores nunca han leído un solo libro técnico y no entienden los componentes básicos de las tecnologías que están utilizando. Simplemente logran salir de los problemas y son muy "exitosos". Yo mismo comencé mi carrera en PHP sin siquiera entender cómo funciona HTTP al principio. Pero algunos empleadores, a los que respeto más, esperan una comprensión profunda de "cómo funcionan las cosas", simplemente porque esto tiende a aumentar las posibilidades de éxito de sus proyectos.
Lo mínimo que debe hacer para obtener esta comprensión es leer un par de BUENOS libros con tiempo suficiente para crear prototipos de soluciones a problemas comunes en un nuevo entorno de desarrollo desconocido. ¿Es posible hacerlo en una semana? Me encantaría trabajar con personas que sean capaces de esto, pero no espero ver a esas personas pronto.
Algunos empleadores en realidad están listos para darle tiempo suficiente para obtener esta comprensión, respetando su profunda experiencia técnica general en otras pilas de tecnología (si tiene una), pero desafortunadamente la mayoría no lo es.
Además, cuando está cambiando las tecnologías, lo más importante es su personalidad: la persona humilde y curiosa que es para pasar el tiempo suficiente para comprender cómo funcionan las cosas y cómo se hacen las cosas en su nueva área.
En resumen, mi respuesta sería la siguiente. Elija una tecnología que tenga suficiente potencial y que (lo más importante) lo hará feliz en su trabajo. Especializados en esta tecnología, el mercado laboral valorará esto y pocos años necesarios para obtener su salario objetivo valdrán la pena. Pero nunca seas demasiado celoso, pasa un tiempo con otras tecnologías, te hará un PROFESIONAL mucho mejor en general.
fuente
Tengo que estar de acuerdo con Joel. Pero su respuesta va más allá de las habilidades técnicas y las preferencias.
En mi experiencia, generalmente los requisitos de su trabajo lo llevan a una tecnología específica o lenguaje de programación, no lo que le gustaría usar; a menos que sea una startup que aún no haya definido lo que van a usar. Y nadie puede garantizarle que encontrará un trabajo / empresa que utilice exactamente lo que está buscando.
Entonces la verdadera pregunta es: ¿eres bueno aprendiendo cosas nuevas? ¿Puede abordar un problema y resolverlo de manera oportuna sin importar el lenguaje de programación?
Un buen programador debe conocer los conceptos de construcción de software e ingeniería de software. Su pregunta me hace creer que no ha invertido suficiente tiempo para aprenderlos, lo que probablemente lo hace dudar de sus habilidades y cuáles son sus potenciales reales. Y honestamente, si no lo has hecho, es hora de que lo hagas, porque sin ellos probablemente no llegarás lejos.
Hay otra cosa a la que la mayoría de nosotros los programadores no prestamos atención antes de que tengamos más de 30 años: las habilidades de programación son solo la mitad de las habilidades que hacen un buen programador. ¿Eres un buen jugador de equipo? ¿Está dispuesto a transmitir el conocimiento a los compañeros de trabajo tan voluntariamente como está (o debería estar) recibiendo conocimiento de otros? Muchos de nosotros subestimamos las habilidades de las personas, aunque en realidad son muy importantes.
fuente
No estoy de acuerdo con la mayoría de los comentarios que figuran en este foro.
Además de aprender los principios y la teoría de la ingeniería del software, el idioma que elija dominar es una elección de carrera. Es por eso que hay programadores Java y programadores PHP. Los programadores de PHP probablemente no estarán trabajando para la NASA y los programadores de Java probablemente no estarán trabajando para una tienda web.
Si quiere un trabajo en la América corporativa, es mejor que vaya a Java / .Net. Puede obtener buenos ingresos, pero prepárese para donarles su vida (en cuanto al tiempo).
Si quieres ser un profesional independiente y vivir en la vía rápida con la tecnología web, estás mejor con PHP. Mucho trabajo aquí, pero el sueldo varía mucho y ser independiente es trabajar con cada Tom, Dick y Harry con una idea tratando de contratarte por unos centavos.
Hay cierta superposición con PHP y Java, pero solo se ve en trabajos corporativos (servicios REST de Java con front-end de PHP), sin embargo, no encontrará tiendas web o trabajo independiente independiente cerca de Java.
Ambos requieren mucho tiempo y dedicación si quieres ser útil en cualquier situación.
Para ser un desarrollador PHP competente y buscado, necesita una bolsa llena de conjuntos de habilidades. Es probable que sepa CSS, HTML4 / 5 y, definitivamente, Javascript DOM / Ajax / Jquery más al menos un marco viable como Zend (la elección del catador corporativo de Estados Unidos), Codeignitor, cakePHP, etc. y luego usted Necesitará conocer los "tres grandes" CMS: Drupal, Wordpress y Magento. Obtenga estos conjuntos de habilidades en su haber y será un especialista en PHP con la capacidad de conseguir trabajo donde quiera que vaya. Como puede ver, asimilar todo esto es una devoción a un idioma y son herramientas porque aprender Perl no lo ayudará a ser un desarrollador experto de Drupal o Zend.
Lo mismo ocurre con Java: OOP, J2EE, REST / SOAP, Spring / Struts, etc. y es una flota de otras herramientas que lleva años dominar.
¿Alguien aquí intentó codificar Java durante un año y luego volvió a PHP (o cualquier lenguaje de script). Es difícil. Se siente incomodo.
Trabajo para una compañía de Fortune 500 y los desarrolladores de Java no podrían hacer lo que hacen los desarrolladores de PHP y los desarrolladores de PHP no podrían hacer lo que hacen los desarrolladores de Java. Pero a ambos les va bien económicamente porque son especialistas en su campo, su idioma de elección y la variedad de herramientas que lo acompañan.
fuente
El lenguaje y la plataforma no son tan importantes. Aprende personas sólidas y habilidades de comp. Mucha gente ha dicho esto pero no ha dado detalles, así que déjame hacer eso. Aquí hay algunas cosas para aprender
fuente