2009-09-29 9 views
17

No soy el único programador, pero soy el único desarrollador .NET, todos los demás trabajan con Perl, Ext JS y tecnologías relacionadas. Principalmente soy autodidacta, uso CodeProject en gran medida para aprender nuevas técnicas.¿Cómo crece como desarrollador cuando es el único en una tecnología dada en su empresa?

Sin ningún mentor en mi compañía específicamente experto en .NET, no estoy seguro de si las clases, o tutoriales en línea, libros, o tal vez alguna otra avenida podrían ser más efectivos para ayudarme a ser un mejor desarrollador.

Mi objetivo, con optimismo, es convertirme en un desarrollador capaz de administrar el próximo desarrollador de .NET que contrate, o al menos de integrarme bien con él/ella.

Actualmente estoy asumiendo la tarea de documentar mis programas de tal manera que reciban una revisión de los desarrolladores más experimentados en mi empresa, independientemente de que no conozcan .NET, y espero que esto sea bastante general, pero con suerte aún beneficioso.

¿Alguien tiene sugerencias o consejos sobre cómo aprender de manera más efectiva las buenas prácticas sin supervisión directa?

+0

Usaría mucho StyleCop y FxCop para empezar. –

+0

Terminé decidiendo que la mejor manera era cambiar de trabajo, 1 año después. – mlusby

Respuesta

5

Siempre he trabajado así. Mis formas de mejorar son:

  • lectura high-quality blogs
  • Aplicando lo que estos blogs de alta calidad de recomendaciones (siempre que se adapte a su proyecto y cuando el tiempo lo permite, por supuesto)
  • código fuente de lectura high-quality open source project 's
  • Escribiendo tantos códigos como sea posible, siempre teniendo en cuenta lo que has aprendido y siempre intentando subir la barra de calidad. Practice does not make perfect. Only perfect practice makes perfect.
  • Mantenga un ojo en cosas que no están relacionadas con su propia línea de trabajo. Por ejemplo, si su trabajo principal es codificar ASP.NET en C#, lea sobre programación funcional, F #, Haskell, otros frameworks web como django, Ruby on Rails, etc. No estoy diciendo que aprenda ellos, solo ver cómo se pueden hacer las cosas de manera diferente. Ampliará su perspectiva.
  • Cuando ganes algo de confianza en ti mismo: contribuye a proyectos de código abierto, escribe un blog.

Sobre libros: En mi humilde opinión, los libros que son altamente técnicos (es decir, "Buzzword 2.0 in Action!") No valen la pena. Todo sucede tan rápido que probablemente se vuelvan obsoletos 6 meses después de su lanzamiento. Los únicos libros que vale la pena comprar son los que se ocupan de los problemas subyacentes de CS o arquitectura.

Acerca de las clases: es muy difícil encontrar clases no universitarias de alta calidad que no sean una pérdida de tiempo o dinero. La mayoría de las veces puedes aprender más rápido por ti mismo. (ACTUALIZACIÓN: avance rápido a 2013, los MOOC son un recurso de aprendizaje gratuito increíble, de alta calidad)

También tenga cuidado con codeproject, hay muchos artículos allí con errores y/o malos consejos en general.

+1

Los primeros dos enlaces, los SO, apuntan a las preguntas eliminadas. – TankorSmash

3

estoy en la misma situación que se encuentre. Aprendo sobre todo de

  • proyectos/errores anteriores, especialmente cuando se toma sobre un viejo proyecto de otra persona (50%)
  • Google (25 %)
  • foro/stackoverflow (25%)
9

Sin mentores de todo, hay varias cosas que puede hacer para mejorar sus habilidades:

  • Tome clases ... especialmente si su empleador pagará por ellas.
  • Leer libros. Son la mejor opción para una clase.
  • Lea los blogs de desarrolladores. Es posible que no le enseñen mejores prácticas, pero lo mantendrán al tanto de las novedades en el mundo del desarrollo. Eso te ayudará a no quedarte atrás.
  • Cortesía de la Comunidad escuchar podcasts (Hanselminutes, Stackoverflow, etc.) y ver screencasts (Dimecasts tiene toneladas de buen contenido).
  • Participa en la comunidad. Puede que a veces parezcamos ser duros, pero escuchará al máximo sobre las mejores prácticas, las técnicas de codificación, los patrones de diseño, etc. y las diferentes maneras de aplicarlo todo.
+0

Excelentes sugerencias. También agregaría escuchar podcasts. –

+0

Ver http://stackoverflow.com/questions/1644/what-good-technology-podcasts-are-out-there –

+0

¿Qué se puede hacer para "participar en la comunidad"? Tengo la intención de comenzar a leer, hacer preguntas y, con un poco de suerte, responder cuando las preguntas sean de mi conocimiento.¿Hay lugares donde mi código podría ser criticado por desarrolladores más experimentados, como quizás proyectos de código abierto que podrían utilizar programadores más jóvenes y menos experimentados? – mlusby

2

Únase a algún proyecto de OSS que funcione con .NET para obtener comentarios sobre su código de desarrolladores de .NET experimentados. Además, mirar el código de otras personas es una gran manera de aprender cosas nuevas, tal como lo has estado haciendo. También estoy de acuerdo con Justin en que leer blogs como Eric Lippert's es muy gratificante

2

Aproveche la oportunidad de aprender los idiomas y las tecnologías que utilizan sus colegas.

Te presentarán no solo la sintaxis, sino lo que es más importante a las técnicas, expresiones idiomáticas y paradigmas que no encontrarás en .Net, pero que te desafiarán a pensar cómo podrías aplicar o construir esas cosas en .Net, o por qué .Net no tiene o no debe usar esas cosas.

¿Por qué Perl está tipeado débilmente (o no)? ¿Qué es Perl mejor que .Net? ¿Qué es .Net genial en el Perl es simplemente terrible? ¿Por qué existen estas diferencias? ¿Cómo podría implementar un intérprete de Perl en .Net? ¿Por qué querrías?

¿Por qué todo en JavaScript es un hash? ¿Cómo se compara la herencia de clase .Net con los prototipos de JavaScript? ¿Son las funciones de primera clase de JavaScript una gran herramienta o una fuente de abuso oscurantista, en comparación con las clases fuerte y estáticamente tipadas de .Net?

¿Cuáles son las estructuras de datos fundamental en cada idioma? Para cada idioma, ¿por qué esos tipos son fundamentales para ese idioma? ¿Cuáles fueron las diferentes decisiones de diseño (o la falta de decisiones) que motivaron e informaron el diseño e implementación de cada idioma? ¿Puedes discernir algún idioma "ancestral" común entre los idiomas usados ​​en tu lugar de trabajo? ¿Por qué no tenemos "Un lenguaje para gobernarlos a todos"? ¿Deberíamos? Finalmente, la excelencia en cualquier idioma es genial, pero a menos que esté sentado en el Comité Estándar de ese idioma o compiladores/intérpretes para ese idioma, un conocimiento más amplio de los algoritmos subyacentes y las estructuras y patrones de datos que son comunes en todos los idiomas es probablemente más importante para su desarrollo como programador, y ciertamente para los programadores, si ese es su objetivo.

2

Busque grupos locales de usuarios de .NET. En la mayoría de las ciudades, es probable que encuentre al menos uno. Los grupos de usuarios son un excelente lugar para desarrollar contactos, hacer preguntas sobre la tecnología y básicamente obtener respuestas a los problemas que pueda experimentar. Si no hay grupos de usuarios en su área, intente buscar en línea.

1

Mi objetivo, con optimismo, es convertirse en un desarrollador capaz de gestionar la próxima desarrollador .NET contratamos ...

En ese caso, usted debe buscar para ampliar o mejorar su habilidades de gestión de personas/proyectos, así como el desarrollo de su programación técnica y habilidades de diseño en la tecnología elegida.

También me suscribo a la opinión de que no es una buena idea centrarse demasiado en una tecnología en particular; p.ej. .RED. Demasiada especialización tiende a limitar sus perspectivas de carrera.

3

Cambiar de empleador. No estoy tratando de ser un idiota, en serio. El mayor crecimiento que tendrá como desarrollador es trabajando todos los días con alguien significativamente mejor que usted.

+0

Ok, luego cambie de trabajo para poder trabajar con alguien que escribe "usted es" en lugar de su. El inglés es mi tercer idioma. Un consejo (de mi clase de escritura técnica en la universidad): no use abreviaturas a menos que sea absolutamente necesario, por ejemplo: no en lugar de no hacerlo, tengo en contra de lo que tengo, etcétera. Además, asegúrese de pronunciar "et cetera" correctamente. Me molesta cuando los hablantes nativos no lo hacen. –

2

Si tiene libertad para elegir cómo se desarrolla y obtiene nuevos proyectos con bastante frecuencia, elija una tecnología nueva con la que no esté familiarizado para utilizarla en cada proyecto. Por supuesto, investigue primero y asegúrese de que tenga sentido para el proyecto.

En mi última compañía, era bastante libre de usar lo que quisiera siempre que tuviera sentido y funcionara. Siempre traté de usar algo nuevo en cada proyecto. El último proyecto en el que trabajé, utilicé NHibernate. Nadie me dijo que aprendiera NHibernate, pero me propuse usarlo para ampliar mi conocimiento. Por supuesto, me aseguré de que NHibernate fuera aceptable primero.

La mejor manera de aprender algo es usarlo. Las clases y los libros son buenos, pero nada hará que pegue más que usarlo en un proyecto real.

0

Hace un año yo estaba más o menos en el mismo barco y es interesante cuando recuerdo las cosas en las que no era tan bueno. La conciencia de la tecnología que está utilizando es muy importante, muchas personas han sugerido leer libros/blogs, etc., que son buenos.

Una cosa que puede ayudarte, es mirar el material MCTS, comenzando con un examen básico (estoy trabajando para obtener el examen 70-536 .NET 2.0 Framework) para asegurarte de que tienes una buena base. Una de las ventajas de esto es que Microsoft lo acredita para que pueda agregarlo a su CV para el futuro y le da un enfoque más estructurado que solo leer libros.

Segundo, lea sobre las prácticas de diseño, o incluso los principios de diseño (como Gang Of Four). Haga su mejor esfuerzo para no cortar esquinas, y desarrollar su código de la mejor manera reutilizable. Esto lo mantiene pensando en el diseño y la mantenibilidad, que es extremadamente importante.

Finalmente, probablemente sugeriría tratar de asegurar que no estés haciendo lo mismo una y otra vez. No solo trabaje con bases de datos, UI, etc. Intente obtener una combinación de cosas para probar nuevas técnicas y aprender cosas nuevas.

Cuestiones relacionadas