c# - ¿Cómo creces como desarrollador cuando eres el único en una tecnología determinada en tu empresa?
.net (10)
No soy el único programador, pero soy el único desarrollador de .NET, todos los demás trabajan con Perl, Ext JS y tecnologías relacionadas. Principalmente soy autodidacta, y uso mucho Codeproject para aprender nuevas técnicas.
Sin ningún mentor en mi empresa que tenga conocimiento específico de .NET, no estoy seguro de si las clases, los tutoriales en línea, los libros o quizás alguna otra vía podría ser más eficaz para ayudarme a ser un mejor desarrollador.
Mi objetivo, de manera optimista, es convertirme en un desarrollador capaz de administrar el próximo desarrollador .NET que contratemos, o al menos integrarme bien con él.
Actualmente estoy asumiendo la tarea de documentar mis programas de manera que reciban una revisión de los desarrolladores más experimentados de mi empresa, independientemente de que no sepan .NET, y espero que esto sea bastante general, pero espero que sea beneficioso.
¿Alguien tiene sugerencias o consejos sobre cómo aprender de manera más efectiva las buenas prácticas sin supervisión directa?
Mi objetivo, de manera optimista, es convertirme en un desarrollador capaz de administrar el próximo desarrollador de .NET que contratamos ...
En ese caso, debe buscar ampliar o mejorar sus habilidades de gestión de proyectos / personas, así como desarrollar sus habilidades técnicas de programación y diseño en su 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; por ejemplo .NET. Demasiada especialización tiende a limitar sus perspectivas de carrera.
Únase a algún proyecto OSS que funcione con .NET para obtener comentarios sobre su código de desarrolladores experimentados de .NET. Además, mirar el código de otras personas es una excelente manera de aprender cosas nuevas, tal como lo ha estado haciendo. También estoy de acuerdo con Justin también en que leer blogs como los de Eric Lippert es muy gratificante
Aproveche la oportunidad de aprender los idiomas y las tecnologías que utilizan sus colegas.
Le presentarán no solo la sintaxis, sino, lo que es más importante, las técnicas, expresiones idiomáticas y paradigmas que no encontrará en .Net, sino que lo desafiarán a pensar cómo podría aplicar o construir esas cosas en .Net. o por qué .Net no tiene o no debe usar esas cosas.
¿Por qué se escribe Perl débilmente (o lo es)? ¿En qué es mejor Perl que .Net? ¿Qué es .Net genial en Perl es simplemente terrible? ¿Por qué existen estas diferencias? ¿Cómo podrías implementar un intérprete de Perl en .Net? ¿Por qué podrías querer?
¿Por qué todo en un 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 tipificadas de forma firme y estática de .Net?
¿Cuáles son las estructuras de datos fundamentales 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? ¿Puede discernir algún idioma "ancestral" común entre los idiomas utilizados en su lugar de trabajo? ¿Por qué no tenemos "Un idioma para gobernarlos a todos"? ¿Deberíamos?
Finalmente, es realmente bueno tener excelencia en cualquier idioma, pero a menos que esté sentado en el Comité Estándar de ese idioma o escribiendo compiladores / intérpretes para ese idioma, un conocimiento más amplio de los algoritmos subyacentes y las estructuras de datos y patrones que son comunes en todos los idiomas Probablemente sea más importante para su desarrollo como programador, y ciertamente para la administración de programadores, si ese es su objetivo.
Busque grupos de usuarios locales .NET. En la mayoría de las ciudades, es probable que encuentre al menos una. 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 estar experimentando. Si no hay grupos de usuarios en su área, intente buscar en línea.
Cambiar empleadores. No estoy tratando de ser un idiota, en serio. El mayor crecimiento que tendrá como desarrollador es trabajar todos los días con alguien significativamente mejor que usted.
Estoy en la misma situación en la que estás. Aprendo principalmente de
- Proyectos / errores anteriores, especialmente cuando te encargas de un proyecto antiguo de otra persona (50%)
- google (25%)
- foro / (25%)
Hace un año estaba prácticamente en el mismo barco y es interesante cuando miro hacia atrás en las cosas en las que no era tan bueno. El conocimiento de la tecnología que está utilizando es importante, muchas personas han sugerido leer libros / blogs, etc., que son buenos.
Una cosa que puede ayudarlo es mirar el material de MCTS, comenzando con un examen básico (estoy trabajando para el examen Framework 70-536 .NET 2.0) para asegurarse de que tenga una buena base. Una de las ventajas de esto es que Microsoft lo acredita, por lo que puede agregarlo a su CV para el futuro y le brinda un enfoque más estructurado que solo leer libros.
En segundo lugar, lea sobre las prácticas de diseño, o incluso los principios de diseño (como Gang Of Four ). Haga todo lo posible para no cortar esquinas y desarrolle su código de la mejor manera reutilizable. Esto te mantiene pensando en el diseño y la capacidad de mantenimiento, que es extremadamente importante.
Finalmente, probablemente sugiero tratar de asegurarte de que no estás haciendo lo mismo una y otra vez. No solo trabaje con bases de datos, UI, etc. Trate de obtener una mezcla de cosas para probar nuevas técnicas y aprender cosas nuevas.
Si es libre de elegir cómo se desarrolla y obtiene proyectos nuevos con bastante frecuencia, elija una nueva tecnología con la que no esté familiarizado para usar en cada proyecto. Por supuesto, primero investigue y asegúrese de que tenga sentido para el proyecto.
En mi última empresa, era bastante libre de usar lo que quisiera siempre y cuando tuviera sentido y funcionara. Siempre intenté usar algo nuevo en cada proyecto. El último proyecto en el que trabajé, utilicé NHibernate. Nadie me dijo que aprendiera NHibernate, pero me encargué de 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 se pegue más que usarlo en un proyecto real.
Siempre he trabajado así. Mis formas de mejorar son:
- Leyendo blogs de alta calidad.
- Aplicar lo que recomiendan estos blogs de alta calidad (siempre que se ajuste a su proyecto y cuando el tiempo lo permita, por supuesto)
- Lectura del código fuente del proyecto de código abierto de alta calidad.
- Escriba todo el código que pueda, siempre teniendo en cuenta lo que ha aprendido y siempre tratando de elevar el nivel de calidad. La práctica no hace la perfección. Sólo la práctica perfecta hace perfecto .
- Vigile las 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 cosas sobre programación funcional, F #, Haskell, otros marcos web como django, Ruby on Rails, etc. No estoy diciendo que los aprenda , simplemente vea cómo Las cosas se pueden hacer de manera diferente. Ampliará su perspectiva.
- Cuando gane algo de confianza en sí mismo: contribuya a proyectos de código abierto, escriba un blog.
Acerca de los libros: En mi humilde opinión, los libros que son altamente técnicos (es decir, "¡Buzzword 2.0 en Acción!") No valen su tiempo. Todo sucede tan rápido que probablemente quedarán obsoletos 6 meses después de su lanzamiento. Los únicos libros que vale la pena comprar son aquellos que tratan con 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 / dinero. La mayoría de las veces puedes aprender más rápido por ti mismo. (ACTUALIZACIÓN: avance rápido hasta 2013, los MOOC son un recurso de aprendizaje gratuito, sorprendente y de alta calidad)
También desconfíe de los proyectos de código, hay muchos artículos con errores y / o malos consejos en general.
Sin mentores, hay varias cosas que puede hacer para mejorar sus habilidades:
- Tome clases ... especialmente si su empleador pagará por ellas.
- Leer libros. Son la mejor cosa para una clase.
- Leer blogs de desarrolladores. Es posible que no le enseñen las mejores prácticas, pero lo mantendrán al tanto de las novedades en el mundo del desarrollo. Eso te ayudará a evitar quedarte atrás.
- Cortesía de la comunidad Escuche Podcasts ( Hanselminutes , Hanselminutes , etc.) y mire Screencasts ( Dimecasts tiene toneladas de buen contenido).
- Participa en la comunidad. Podemos parecer duros a veces, pero es lo que más escuchará sobre las mejores prácticas, las técnicas de codificación, los patrones de diseño, etc. y las diferentes formas de aplicar todo.