¿Cómo puedo iniciar una comunidad de desarrollo de software en mi escuela?

14

Soy un estudiante de la Universidad del Sur de la Florida que está frustrado con el entorno educativo en el programa de Ciencias de la Computación. En este momento, estoy tomando "Diseño de Programa". Debería estar aprendiendo cómo organizar mi código fuente en funciones y módulos para hacer que mis programas sean legibles y mantenibles; en lugar de eso, estoy aprendiendo sobre arreglos y recursión en C. El próximo semestre, debo tomar el "Diseño orientado a objetos", que se enseña a través de C ++ ( shudder .)

Hace dos años, me enamoré de la programación y he estado aprendiendo todo lo que he podido desde entonces. La perspectiva de tomar otra clase de C ++ me aburre casi hasta las lágrimas. Por esa razón, pensé que iba a comenzar un club de programación para encontrar estudiantes igualmente ambiciosos, aprender nuevos idiomas, discutir temas de desarrollo de software y trabajar con otros desarrolladores de estudiantes.

Sin embargo, estoy empezando a darme cuenta de que puede que no haya otros estudiantes que compartan mi experiencia en desarrollo de software. No se debe a la falta de motivación sino a la falta de oportunidades: solo conozco otra clase de programación ("Lenguajes de programación") y ninguna clase sobre desarrollo de software en el mundo real. Todos los demás solo tienen experiencia escribiendo guiones triviales en C y C ++.

Me he dado cuenta de que si quiero trabajar con otros desarrolladores de software para estudiantes, tendré que entrenarlos yo mismo. Ahora, estoy planeando hacer del club un campo de entrenamiento de desarrollo de software, enseñando a los miembros cómo desarrollar software con herramientas e idiomas modernos. Obviamente, comenzar un curso de desarrollo de software no oficial es una tarea monumental con muchos enfoques posibles. Mi pregunta para usted, querido lector, es

¿Cuál es mi plan de ataque?

Debería yo

    ¿
  • sermonearé al club, tratando de equilibrar el trabajo del club con la tarea?
  • solicite a la facultad de CS que enseñe sobre temas dentro de su experiencia que pueden ser menos relevantes para los miembros?
  • ¿Intenta encontrar un desarrollador simpático y experimentado dentro o fuera de la escuela que pueda compartir mi carga de trabajo?
  • muestra conferencias de video (de MIT OpenCourseWare , Google Tech Talks , etc)?
  • celebrar talleres prácticos de programación?
  • asignar tareas?
  • hacer otra cosa?
pregunta Evan Kroske 17.10.2010 - 20:06

9 respuestas

20

Francamente, toda tu actitud me concierne. Ni siquiera ha reunido al grupo y ya asume que será solo uno que tiene algún conocimiento que impartir y el que debe decidir qué hará el grupo.

La mejor opción es reunir al grupo inicial y, como grupo, intercambiar ideas sobre lo que quieren hacer. Lo que usted personalmente quiere hacer es irrelevante en términos de lo que el grupo quiere hacer. Decidiendo qué hacer sin el aporte de los otros miembros del grupo antes de la primera reunión, se encontrará con un idiota arrogante con el que no querría trabajar voluntariamente. Por lo tanto, matarías al grupo antes de que empezara.

    
respondido por el HLGEM 21.10.2010 - 19:06
5

Ya que todos en tu club vienen voluntariamente, debes hacerlo interesante y motivador. Y la tarea no es exactamente motivadora.

Enseñar a alguien es difícil, pero ¿por qué no tratar de enseñar de una manera que no sea de las manos con un objetivo al final? Esencialmente, al principio, todos se juntan y se les ocurre un proyecto grupal y un idioma. El proyecto debe ser interesante y poder mostrar un progreso visible pero no demasiado difícil. Una vez que haya definido el idioma, debe enseñarles lo básico (sintaxis, paquetes / espacios de nombres, clases, escritura estática / dinámica, etc.). Luego les da recursos (libros, tutoriales en línea, documentación en línea), una forma fácil de comunicarse con usted y una parte específica del proyecto para trabajar. Luego, cada persona trabaja en el proyecto en su tiempo libre, consultando la documentación y usted según sea necesario.

¿Cuál es la ventaja de este proceso?

  • La gente no se aburre al escucharte a ti o a alguien más que habla sobre algo en cada reunión
  • La gente aprende a autoaprender, una habilidad muy importante del mundo real
  • No te estás comprometiendo demasiado, ya que no eres el único recurso de conocimiento
  • No es necesario que sepas todo el idioma para poder enseñarlo, ya que solo necesitas introducirlos en el idioma. Y cuando necesitan preguntarte algo, puedes investigarlo rápidamente. Sin embargo, debe estar un poco por delante de todos los demás, ya que algunas cosas requieren saber lo que se avecina en 5 pasos
  • Estás creando algo, lo que tiende a motivar a las personas

La única forma de ver si funciona es probarlo.

    
respondido por el TheLQ 17.10.2010 - 20:51
4

Mirando el diagrama de flujo del curso para su especialidad , realmente no está entendiendo qué esperar en las diferentes clases de una especialidad en informática.

Las clases de las que estás hablando son clases introductorias que introdujeron a los estudiantes a varios conceptos básicos de codificación. Se parece a "Conceptos de programación", una introducción a la profesión con resúmenes de una semana de todas las áreas básicas de la informática, sin codificación real. A partir de ahí, es NORMAL tener un curso introductorio en C, y otro curso introductorio en C ++ es NORMAL para una especialización en informática. Usted puede estar ingresando en el programa con algo de experiencia en codificación, pero la mayoría de las personas no. El programa debe enseñar conceptos como la recursión y cómo escribir clases, y la sobrecarga de operadores, y las plantillas y todo eso (por no mencionar la enseñanza sobre variables, for-loops, if-statement, etc.). ..), así que hay dos clases básicamente diseñadas para enseñarte cómo codificar en algún lenguaje de programación. Y usualmente tienen el tipo de nombres engañosos que tienen las clases de tu universidad. Las clases que enseñan el nivel de organización que desea normalmente se denominan "Ingeniería de software" o "Patrones de diseño". El primero suele ser un requisito, y el segundo suele ser un curso optativo (tal vez a nivel de posgrado), pero ambos pueden ser electivos.

Hay un debate académico y de la industria sobre si el plan de estudios de Ciencias de la Computación se enfoca en la organización del software tanto como debería, si se debe reorganizar la especialidad, y si la Ciencia de la Computación y la Ingeniería del Software son diferentes, pero por ahora, su Ciencia de la Computación el programa es NORMAL .

(Y espera, en otro semestre o dos, llegarás a clases más desafiantes que te enseñarán cosas que aún no has enseñado a ti mismo).

    
respondido por el Ken Bloom 22.10.2010 - 16:44
1

¿Qué pasa con las competiciones de programación? ¿Incluso algo como Perl Golf (o PHP Golf), donde hay personas (o equipos) que trabajan para resolver un problema utilizando la menor cantidad de código posible? Es una excelente manera de aprender más sobre idiomas y competiciones que siempre hacen que las cosas sean interesantes.

Por supuesto, debería ofrecer más que solo competiciones, pero son muy fáciles de configurar y siempre las he disfrutado.

    
respondido por el Colin O'Dell 18.10.2010 - 06:51
1

Tienes razón en que necesitas algo de estructura; quieres forzarte a ti mismo ya los demás a aprender, y no solo a sentarte a charlar sobre software / a quejarte sobre la pésima selección de cursos. Pero no estoy seguro de tratar esto como una clase con usted como su maestro es el camino a seguir; todavía no eres un experto, y estás en esto para aprender algo, también.

¿Qué tal organizar el club en torno a proyectos de software? No algunos programas de tareas de juguete, sino algo que crees que realmente te puede resultar útil. (Tenga en cuenta que "marginalmente útil" todavía califica como "útil"; está tratando de aprender haciendo, no encontró una startup. :-)) Si el club tiene suficiente gente para varios equipos, forme varios equipos. El equipo decide qué idioma quiere usar, cuáles son las especificaciones, cómo se divide el trabajo, etc., etc., y trabaja en él individualmente en su propio tiempo. Luego, en tu reunión semanal del club, hablas sobre cómo se va a enfrentar, dónde están los obstáculos, las cosas que has aprendido, etc.

También me gusta mucho la idea de traer profesores invitados, ya sean profesores, profesionales o videos que usted o alguien más piense que vale la pena compartir. Entonces, podrías organizar una reunión nocturna como esta:

  1. Conferencia invitada sobre un tema de software de alguien que lo conoce bien.
  2. Sesión de preguntas y respuestas sobre la conferencia (con suerte con la participación del profesor, pero solo entre ustedes para los videos).
  3. Divide en equipos de proyecto, haz cosas del proyecto.

Tomará una tarde y la llenará de bondad para mejorar el conocimiento. Con suerte.

En cualquier caso, te deseo suerte con este proyecto. Cuando lo despegues, espero que vuelvas aquí y nos cuentes cómo está funcionando.

    
respondido por el BlairHippo 21.10.2010 - 18:04
1

El proyecto grupal es una gran idea. Especialmente si el proyecto es algo que puede ayudar a la universidad o a tus compañeros de clase.

Me uní a un grupo mientras estaba en la universidad que estaba trabajando en proyectos para estudiantes.
El proyecto más popular fue una visita virtual de 360 grados del campus.
Compramos el equipo necesario y comenzamos a tomar fotos en el campus. Luego, creamos un sitio web para albergar el recorrido, resolvimos el hospedaje y lo presentamos en el sitio web de la universidad para futuros estudiantes. Este proyecto abarcó más que solo tareas de programación, y también interesó a los no programadores.

Intente identificar un nuevo sitio web o aplicación que no solo usaría, sino que todos en el campus querrían usar. Creo que es más fácil y más divertido aprender si tienes un objetivo en mente.

    
respondido por el Todd Bumbarger 21.10.2010 - 19:46
1

Si esto va a ser una actividad extracurricular, no hagas la tarea. Eso es simplemente cojo.

Probablemente podría obtener algo genial al comenzar un grupo de github y hacer un póster en su escuela (supongo que los niños en estos días también usan Facebook y Twitter. También podría ser una buena idea acertar esos puntos). Cuando consiga un grupo de 5-6 personas que estén realmente interesadas, decida un proyecto y simplemente trabaje en ello.

Si no hay interés, es ridículamente fácil unirse a un proyecto de código abierto si está razonablemente capacitado. Tan simple como bifurcar algo que te interesa en github, y comenzar a hablar con los desarrolladores.

La ventaja que tiene de la generación anterior es que no es difícil conectarse con los programadores en su nivel y en su idioma, al mismo tiempo que son muy diferentes geográficamente. Y no me refiero a simplemente enviar un correo electrónico. Skype / iChat / Ventrilo facilita las conferencias de voz, herramientas como git / mercurial (y las páginas de proyectos asociados en línea) facilitan la codificación en grupo, incluso si se encuentra en lados opuestos del Atlántico. Realmente no hay razón para no codificar socialmente en estos días, si eso es lo que quieres hacer.

Finalmente, no hagas el hábito de juzgar a las personas por los idiomas que saben / quieren saber. Es una trampa fácil de caer cuando eres el único Smalltalker en una manada de personas que piensan que C ++ representa el límite de la programación, pero no te dará muchos amigos, y te dará un sesgo en contra de ciertas herramientas. Conocí a hackers que están muy por delante en habilidad y experiencia, que han usado LISP, Perl y C en el mismo proyecto . Las personas que se encuentran en la parte superior del montón de desarrolladores profesionales tienden a no preocuparse mucho por el nivel en el que estén sus herramientas, siempre y cuando hagan el trabajo.

    
respondido por el Inaimathi 21.10.2010 - 19:51
1

Esto parece una oportunidad para establecer contactos, estoy seguro de que hay una cantidad de estudiantes interesados en la programación con un nivel similar de experiencia / capacitación ... simplemente no los está encontrando ...

¿Ha asistido a uno de los Code Camps (capacitación gratuita relacionada con desarrolladores) en el área de Tampa Bay, o se ha unido a uno de los grupos de usuarios de programación local?

Ambos recursos le brindarán oportunidades para establecer contactos. Y en lugar de sentir que tienes que entrenar a tus compañeros, podrás invitar a tus amigos y discutir lo que se cubrió.

También obtendrá acceso a personas que están programando como una carrera y pueden tener una idea de qué tipo de situaciones es probable que surjan en "el mundo real".

Una vez que haya explorado estos recursos locales, es posible que aún encuentre oportunidades para compartir sus conocimientos haciendo sus propias presentaciones, lo cual es genial. Compartir lo que aprendió con un grupo de usuarios o como orador de una presentación de Code Camp es una buena manera de obtener comentarios sobre lo que ha aprendido y también lo abre para aprender más.

Crecí en el área de Tampa Bay y asistí a muchos eventos gratuitos patrocinados por Microsoft, tu grupo de usuarios locales también debería tener información sobre cómo participar en esos eventos.

Bueno, esta fue una respuesta larga y sin aliento ...

El próximo Code Camp en Tampa es el 13 de noviembre de 2010, según el sitio web de tampacodecamp.

Aquí hay un enlace a su grupo de usuarios de programación / INETA local:

enlace

(Soy nuevo en este grupo y solo pude incluir un enlace)

    
respondido por el Jeff 26.10.2010 - 18:47
1

¿Qué hay de encontrar un proyecto de código abierto (o más de uno) en el que su grupo esté interesado en contribuir?

Creo que el mayor desafío al que te enfrentarás es que si bien escribir código es divertido, todo el administrador que lo rodea, etc., puede convertirlo rápidamente en una experiencia dolorosa. Si puede encontrar un proyecto de código abierto existente, debería tener al menos parte del marco de soporte en su lugar.

El código abierto le permitirá adquirir buenos hábitos, y aunque estará un poco mojado detrás de las orejas en comparación con algunos de los colaboradores, tendrá una gran ventaja sobre otras personas: todos estarán en el mismo lugar y capaz de mantener conversaciones con los miembros de su equipo, que normalmente es uno de los mayores problemas con el trabajo comunitario de código abierto ...

    
respondido por el DanW 18.11.2010 - 16:33

Lea otras preguntas en las etiquetas