2008-08-22 13 views
8

Mi camino a un desarrollador de "tiempo completo" declaró como analista usando VBA con Excel, Access y luego en C#. Fui a la universidad a tiempo parcial cuando descubrí que me apasionaba la codificación, no los negocios.Aumenta las habilidades ¿Qué debo aprender?

Hago la mayor parte de mi codificación en C#, pero al ser un desarrollador de ASP.NET también escribo en HTML, JavaScript, SQL, etc. . los sospechosos de siempre.

Me gusta seguir avanzando para encontrar la ventaja que me llevará al próximo nivel, al próximo trabajo y, por supuesto, a más dinero. Lo más importante es que quiero aprender algo nuevo y desafiarme.

Pasé un tiempo aprendiendo LINQ, pero me preguntaba qué debería aprender a continuación. Algo sobre .NET Framework o una nueva tecnología de lenguaje?

Respuesta

6

Si quieres ser uno de los mejores que necesita especializarse. Si te vuelves muy bueno en muchas habilidades, entonces nunca podrás ser verdaderamente excelente en una. Lo sé porque he tomado esta ruta yo mismo y me ha resultado difícil conseguir un empleo a veces. Después de todo, ¿quién quiere a alguien que sea capaz en muchos idiomas cuando hay alguien que se destaca en lo específico que necesita? Si una empresa se desarrolla en C#, entonces quién querría a alguien que esté bien en C# pero también en C, Visual Basic, Perl y Cobol, cuando lo único que realmente quieren es el mejor desarrollador de C# posible por el dinero que pueden pagar.

Después de todo, solo serás contratado para una, tal vez dos de tus habilidades. Hay muy pocos trabajos para personas que son buenas en 10 o 15 habilidades.

Si está buscando una nueva habilidad, tal vez revise las bolsas de empleo y descubra qué habilidades son particularmente necesarias, pero tenga en cuenta que el sabor del mes de este año puede no estar en la escena el próximo año , lo que hará que todo ese esfuerzo para aprender la habilidad sea inútil y desperdiciado.

Lo que yo diría es:

  1. hacer una cosa, y hacerlo bien. Esto puede incluir habilidades de apoyo (C#, ASP.Net, SQL, LINQ, etc.).
  2. Si desea elegir algo más, elija algo complementario.
  3. Posiblemente lo más importante, elija algo que disfrute. Quizás Ruby on Rails es el sabor actual del mes, pero si no disfrutas haciéndolo, entonces no lo hagas. Realmente, no vale la pena. Nunca desearás, en tu lecho de muerte, haber trabajado más en algo que no disfrutaste.

Otra dirección que podría ver es quizás no para una habilidad de desarrollo particular, pero busque otra cosa, tal vez habilidades blandas como gestión de personas, una mejor comprensión comercial o incluso algo así como habilidades literarias para mejorar sus comunicaciones habilidades. Todo esto ayudará a permitirle hacer lo que desea hacer más y reducir las cosas que realmente no disfruta, lo que le ayudará a hacer su trabajo más agradable.

Disculpas por el waffling aquí. Esperamos que están todavía despierto :)

+2

Aunque estoy de acuerdo en que debes enfocarte en un idioma en particular, sigo creyendo que si eres versado en lenguajes de nivel inferior como C y C++ te convertirá en un mejor programador en lenguajes de nivel superior como C# o Java ... entonces Sigo pensando que al menos deberías tratar de aprender otros idiomas. Aparte de eso, no todos los idiomas son adecuados para cada trabajo en particular, de modo que cuanto más se sepa, más se podrá aplicar a tareas específicas ... lo que a su vez lo hará más productivo, y por supuesto, a los empleadores así. –

+1

Acepto que la especialización es importante, pero no estoy totalmente de acuerdo con usted. Trabajé en el grupo de captura de datos en una empresa de análisis y nuestro grupo tenía SDK para todas las plataformas móviles (solo hay 3 idiomas y 4 entornos de tiempo de ejecución), así como proyectos en C#, C++, Java y JavaScript. Cualquier desarrollador con fundamentos verdaderamente buenos debería ser capaz de llegar a dominar cualquier idioma/tiempo de ejecución con bastante rapidez. Sigo pensando que deberías especializarte, pero una comprensión profunda del software es más valiosa que conocer .NET, por ejemplo. Aún así, alentaría a las personas a aprender muchos idiomas. – evanmcdonnal

0

Salida OOAD & UML tal vez ...

Ooo! Y DDD - definitivamente.

(Sí, yo sólo tenía que tirar el obligatorio enlaces de Wikipedia! Es la primera vez que hacerlo, y ahora me siento sucia!)

2

Sí, entre más consigo en el software, que comienza a ver yo mismo centrándome menos en el lenguaje y más en el diseño ..

Sí, hay bits de estructura que necesitamos para entender pero la mayoría de las veces (más no todos) puede buscarlos como-y- cuando los necesita ...

¿Pero un buen cabezal de diseño? Para eso se necesita años de experiencia para empezar a conseguir que funcione la derecha ..

Y eso es lo que las empresas realmente pagan por .. "crear y ellos vendrán" y todo eso ...

0

Por qué no hacer intercambias pilas y miras la pila LAMP?

¿O qué tal un lenguaje funcional como haskell?

¿O escribir un DSL?

¿O una aplicación para tu teléfono?

+0

¿Cuál es el punto de intercambiar la pila? Cualquiera que sea eso? –

1

A medida que continúa ganando más experiencia en ASP.Net, C#, etc., siempre es bueno ir a la competencia y ver si genera ideas sobre cómo puede hacer las cosas mejor en lo que está haciendo. Echar un vistazo a algo como Rails o Django puede cambiar la forma en que ve el diseño o la creación de sus aplicaciones.

1

Si ahora domina los idiomas y las tecnologías que utiliza, comience a dedicar más tiempo a enfocarse en el diseño, la arquitectura de la solución y la integración de sistemas. La "imagen más grande" que te diferenciará de tus contemporáneos.

Eche un vistazo a algunos libros de Martin Fowler como "Patrones de arquitectura de aplicaciones empresariales", o "Diseño impulsado por dominios" de Eric Evans.

1

Quizás más información sobre Usabilidad (mejores prácticas, pruebas, etc.) si aún no lo ha hecho.

"Do not Make Me Think" de Steve Krug es un buen libro para comenzar. Jakob Nielsen siempre tiene cosas interesantes también.

0

@ Michael DSL = Domain Specific Language

En cuanto a lo que debe aprender, que depende de lo que le interesa.

¿Está buscando ponerse a prueba durante su estancia en el mismo medio (centrada en la Web aplicaciones)? Sugeriría aprender sobre Apache y la arquitectura LAMP (Linux, Apache, MySQL, PHP) y desafiarse a sí mismo para construir una aplicación web que pueda construir fácilmente con ASP .NET usándola.

¿Quieres aprender algo completamente diferente? Pruebe Prolog o LISP y vea qué puede hacer con eso.

¿Te gustaría acceder al software integrado? Aprende C para comenzar.

Tienes una gran variedad de formas de mejorar tus habilidades, y cada una tiene una carrera profesional unida a ellas. (Bueno, tal vez no Prolog, pero es divertido!)

1

Cuantos más idiomas conozcas, más comercializable eres. Mire y vea cuáles son los lenguajes más populares (mercado de, no base de fanáticos), luego agregue una tecnología de vanguardia que no sea de mucha utilidad aún, completada por habilidades de programación general.

Con su conjunto de habilidades que recomendaría (en cuanto a los idiomas):

  • Java como un punto de partida
  • Por NET en el .NET MVC (usted tiene LINQ, o que estaría aquí también)

idiomas conocimientos de agnósticos:

  • patrones de diseño (incluye el MVC)
  • Domain Driven Design
  • prueba Driven Design
1

Aquí sería mi sugerencia:

1) patrones de diseño - Estos son muy ordenada, además de ser muy útil en algunas situaciones.

2) AJAX - Suponiendo que no haya hecho algo de esto, desde mi punto de vista es una parte interesante del desarrollo web.

3) Determine qué partes de la cadena le gustan más: Trabajo de front-end (HTML, CSS, Javascript), middleware (C# para partes de lógica de negocios) o back-end (MS-SQL con procedimientos almacenados , índices, disparadores y todo eso). Si es todo, intenta quedarte donde el equipo que realiza el desarrollo web es pequeño, ya que de lo contrario se te puede pedir que elijas.

4) Algoritmo de diseño y análisis - ¿Conoce varios algoritmos de clasificación? ¿Conoces varias técnicas para crear un algoritmo, p. codicioso, recursion, dividir y conquistar, programación dinámica, utilizando tipos de datos personalizados como montón en heapsort, etc. Esto puede ser nuevo y genial.

5) Determine si hay una parte del proceso de desarrollo que favorezca: ¿Analista, diseñador, programador, probador, depurador? Todos pueden tener diversos grados de estar cerca del código, IMO.

Cuestiones relacionadas