Se me ha pedido que lleve a una persona en nuestro departamento de TI que no tenga experiencia en programación, pero que sea una persona inteligente y capaz, y que lo ayude a pasar a la programación, digamos un desarrollador de nivel básico que admite aplicaciones .Net existentes. Definitivamente creo que esta persona puede hacerlo, pero estoy buscando la forma más rápida de acelerarlo. Tengo muchas ideas pero quería ver lo que pensaban otras personas. Sé que esto también dependerá en gran medida de cómo aprenda, pero estoy hablando en general.
Entonces, la pregunta: ¿Cuáles crees que son las mejores formas de hacer que un no desarrollador se acelere rápidamente en el desarrollo (.Net en este caso)?
Respuestas:
Por lo general, prescribo la misma secuencia para cualquiera que quiera aprender a programar. Es muy teórico, pero establece una buena base. Debería llevar tres o cuatro meses de estudio a tiempo completo, pero la programación no es algo que se aprende de la noche a la mañana.
Si no puede superar esta secuencia, no podrá programar, por lo que es mejor que se rinda ahora.
Mi regla es: trabaja en esos tres libros por pura fuerza, si es necesario. Haga cualquier pregunta que tenga, pero solo después de luchar por resolverlo por su cuenta. Si puedes atravesar esos tres libros, felicidades, eres un programador, ahora puedo arrojarte PERL EN 15 MINUTOS o lo que sea que haya en la librería en la Gran librería de Java y te las arreglarás bien. Si no puedes atravesar esos tres libros, ríndete, vete a casa, nunca lo conseguirás.
No creo que necesites aprender C y Scheme, para ser honesto. Son solo una base para el aprendizaje futuro. Estos dos libros bastante simples son muy simples en la superficie (C y Scheme son lenguajes súper fáciles) pero profundizan en el verdadero arte de la programación sin perder tiempo en sintaxis confusa, por lo que son excelentes para comenzar a volver a cablear tu cerebro para ser un buen programador.
Los intentos de tomar un atajo e ir directamente a aprender exactamente lo que desea aprender en este momento (como comenzar con C # y ASP.NET) están condenados.
fuente
up to speed quickly
parte.¡La mejor manera de hacer que un no desarrollador se acelere rápidamente es inspirarlo !
Para tener éxito, el candidato debe ser al menos curioso, si no apasionado , acerca de la programación (independientemente de la plataforma).
Si bien estoy de acuerdo con Joel en el caso del candidato ideal, tendría cuidado de no meter demasiada teoría en una mente débil, solo los desanimará. Si están inspirados, curiosos y, con suerte, apasionados, querrán entender la teoría después de haber visto la magia.
Estoy completamente de acuerdo con @karudzo: la realización personal y una revisión constructiva pueden ser muy inspiradoras.
fuente
La forma más rápida podría ser darle el tiempo que toma , aunque fácilmente podría ser uno o dos años.
Claro, parece fácil enseñarle un lenguaje simple (C #, si tiene que hacer cosas de .NET), pero aprender un idioma no es aprender a programar.
Si nunca ha programado, entonces, además de la sintaxis y la biblioteca de al menos un idioma, tendrá que aprender sobre matrices, listas vinculadas, el modelo de compilación de cualquier idioma que aprenda, modularización, gestión de recursos, paradigmas, patrones, Big- O-notation ... - toda la enchilada. Eso es un montón de cosas por recorrer, y la mayoría de nosotros tardó varios años en aprender estos conceptos básicos, y aún más para convertirnos en un verdadero programador profesional.
Hay material que cubre mucho de esto (como el libro más reciente de Stroustrup que enseña programación usando C ++, en lugar de enseñar el lenguaje C ++), pero no hay mucho y nada que lo cubra todo. Entonces el tipo debe estar dispuesto a aprender y leer muchos libros y artículos.
En cuanto a cómo hacer esto: no tengo un currículum completo a mano para pegar aquí. (Lo siento).
Sin embargo, lo que recomendaría es comenzar enseñándole un lenguaje de programación, para que tenga la oportunidad de hacer un progreso inicial rápido y obtener algunos resultados alentadores. Hay bastantes libros para enseñar tales idiomas, elija uno con el que esté familiarizado. Si el libro tiene muchos ejercicios, y él está dispuesto a hacerlos, prepárese para pasar mucho tiempo ayudándolo con esos. Si el libro no tiene ninguno, comience a pensar en los suyos con mucha anticipación, pero prepárese para adaptarlos a su nivel / velocidad de comprensión.
Si ese primer lenguaje no era C o C ++, en mi opinión, debería aprender uno de estos a continuación. K&R es bueno para eso, como lo es el TCPL de Stroustrup o, si puede (con su ayuda) lidiar con una curva de aprendizaje empinada, Koenig / Moo. La razón por la que recomendaría esto es que, una vez que conoces C o (IMO preferiblemente) C ++, es relativamente fácil elegir cualquiera de esos derivados de C como C #, Java, ObjC ...
Por lo demás, proporciónele un flujo constante de buenos libros y artículos. No creo que sea muy útil si sugerimos muchos de ellos, ya que 1) tiene que adaptarse a la cultura de su empresa, y 2) debe sentirse cómodo diciéndole que aprenda esas cosas.
fuente
No los iniciaría en .NET. He cometido este error muchas veces. No permita que un empleador lo presione a crear un programador incompetente debido al tiempo. .NET puede ser una plataforma de desarrollo rápido, pero no obliga a los desarrolladores a aprender programación. Solo en C #, encontrará un desarrollador atascado en los tipos de referencia, la vida útil del objeto, dejarán grandes pérdidas de memoria (sí, es posible en .NET) y tendrán diseños deficientes. Sería mucho mejor comenzarlos en C o C ++ (probablemente en C ++ ya que necesitarán usar conceptos de POO) y luego decir algo como: "Ahora, ¿no sería bueno si tu memoria fuera administrada por ti, todo era objeto? -orientado, y no tuvo que lidiar con todos estos punteros desagradables? Aquí está C # y JAVA. Si han dominado c ++, conquistarán ambos en una semana o dos cada uno. Recomiendo el regimiento de Joel. Esa fue la lista que me dio mi maestro de CS 101, y me sentí mucho mejor cuando llegué al análisis numérico debido a eso. Esto también le permitirá averiguar antes si el candidato cortará la mostaza o no. Además, una vez que obtenga c y c ++, comprenderá automáticamente c # y java después de leer la introducción a los libros. No solo los entenderías, sino que los entenderías mejor que alguien que no conocía c y c ++.
fuente
hWND
de los años 80, ¿verdad? Claramente usas una buena abstracción en su lugar (qué abstracción es un debate completamente diferente). Claro que saber cómo funciona bajo el capó es bueno, pero no necesita C # .NET para la abstracciónDales algo simple, pero útil para resolver. Déjelos hurgar un poco y ayúdelos a pulirlo. No hay nada como un pequeño logro para ayudar a estimularlos (aunque alguien que no esté interesado en programar w
fuente
Programación en pareja. Deja que te sigan mientras escribes tu propio código, cualquier código. En cuestión de horas, luego pídales que ingresen su código por usted, mientras les dice qué hacer, pulsación de tecla por pulsación de tecla, incluso si es necesario. Responde algunas de sus preguntas, pero no tanto como para que te ralentices mucho, solo deja que absorban todo. También encontrarán tus errores tipográficos y más errores de lo que piensas. Dentro de unos días, podrán comenzar a 'navegar' diciéndole qué código ingresar para tareas similares a las que han visto antes.
Aprendí mucho de lo que sé como desarrollador de esta manera en un mes, y he enseñado a varios otros nuevos desarrolladores de esta manera, uno de los cuales fue capaz de asumir el cargo de desarrollador principal en una startup después de varios meses. Cuando comenzamos a trabajar juntos, nunca había escrito una sola línea de código.
fuente
Dale una buena idea (estudios visuales, express sigue siendo bueno). Enséñele el 60% común de la sintaxis (omita el rendimiento, linq, enumeraciones, atributos, etc., enseñe clases, virtual y anulación). Pase tiempo en el depurador (especialmente callstack). Luego dígale que busque en Google "msdn functionanme" cuando necesite ayuda y eso debería ayudarlo a comenzar rápidamente.
También enséñele a nunca atrapar y tragar una excepción. ¡Dile que debe volver a tirarlo o registrarlo!
Bonificación: enséñele cómo serializar datos json para que pueda leer / escribir fácilmente en un archivo. Un db es excesivo y es demasiado para aprender y no desea que escriba formatos de archivo personalizados, aunque puedo dejar pasar una entrada por tipo de línea para guardar / cargar un conjunto de cadenas como aceptable.
fuente
Sé que mucha gente ha estado hablando de idiomas y libros para esos idiomas. Yo difiero
La programación se trata de aprender a pensar analíticamente. En primer lugar, la persona debe ser capaz de pensar y presentar el problema en un papel para determinar cuál es el problema. Tienes que guiarlos para que obtengan la técnica de pensamiento correcta.
Luego vienen los fundamentos del lenguaje. Inícielos en el idioma de su elección. Dale un problema al programa.
Después de que termine este primer corte, haga que hagan los fundamentos de CS y los patrones de diseño.
Ahora pídales que reprogramen el problema anterior con estos nuevos conceptos.
fuente
Comience con lo básico: variables, bucles, bucles while, bucles, matrices, enséñele conceptos básicos, imprimir en pantalla, hacer algunos cálculos matemáticos simples. Pase a los métodos y la OOP básica, cosas como esta es cómo crear una clase, muéstrele el por qué, no solo el cómo.
El idioma no importa, pero elige algo que conozcas y que sea muy abstracto (java, python, etc.) de esa manera no necesita preocuparse por cosas como la administración de memoria, punteros, etc. Enseña los conceptos básicos de recursividad, torres de hanio o búsqueda recursiva de directorios.
Aprender a programar es un buen recurso gratuito sobre programación de Ruby. Hazlo divertido, fácil y entretenido.
fuente
Dele algunos desafíos y pídale que aprenda a encontrar recursos para resolver el problema por sí mismo.
Si puede enseñarle cómo encontrar respuestas y ser autosuficiente, naturalmente aprenderá a programar bien. El pensamiento crítico y el ingenio son dos habilidades clave para un programador.
Al final del día, la pasión / interés definitivamente será un factor clave en el éxito que tendrán en aprenderlo rápidamente. Si no tiene o atrapa "el error", podría ser un proceso lento y / o doloroso. Si atrapa el error, se levantará tarde codificando, fuera de las horas de trabajo, pasando el mejor momento de su vida.
fuente