Como posso inicializar uma comunidade de desenvolvimento de software na minha escola?

14

Sou um estudante da Universidade do Sul da Flórida que está frustrado com o ambiente educacional no programa de Ciência da Computação. No momento, estou fazendo o "Program Design". Eu deveria estar aprendendo como organizar meu código-fonte em funções e módulos para tornar meus programas legíveis e sustentáveis; em vez disso, estou aprendendo sobre arrays e recursão em C. No próximo semestre, eu tenho que tomar "Design Orientado a Objetos", que é ensinado através de C ++ ( shudder .)

Dois anos atrás, eu me apaixonei por programação, e tenho aprendido o máximo que pude desde então. A perspectiva de fazer outra aula de C ++ me aborrece quase às lágrimas. Por essa razão, pensei em começar um clube de programação para conhecer estudantes igualmente ambiciosos, aprender novos idiomas, discutir tópicos de desenvolvimento de software e trabalhar com outros desenvolvedores de alunos.

No entanto, estou começando a perceber que talvez não haja outros alunos que compartilhem minha experiência de desenvolvimento de software. Não é por falta de motivação, mas por falta de oportunidade: conheço apenas uma outra classe de programação ("Linguagens de Programação") e nenhuma aula sobre desenvolvimento de software no mundo real. Todo mundo só tem experiência em escrever scripts triviais em C e C ++.

Eu percebi que, se eu quiser trabalhar com outros desenvolvedores de software estudantil, terei que treiná-los eu mesmo. Agora, estou planejando tornar o clube um bootcamp de desenvolvimento de software, ensinando os membros a desenvolver software com ferramentas e linguagens modernas. Obviamente, iniciar um curso de desenvolvimento de software não oficial é uma tarefa monumental com muitas abordagens possíveis. Minha pergunta para você, caro leitor, é

Qual é o meu plano de ataque?

Devo

  • palestra o clube sozinho, tentando equilibrar o trabalho do clube com a lição de casa?
  • pedir ao corpo docente do CS que ensine sobre tópicos dentro de seus conhecimentos que podem ser menos relevantes para os membros?
  • tente encontrar um desenvolvedor experiente e compreensivo dentro ou fora da escola que possa compartilhar minha carga de trabalho?
  • mostre palestras em vídeo (em MIT OpenCourseWare , Google Tech Talks , etc)?
  • realizar workshops práticos de programação?
  • atribuir tarefa de casa?
  • faz outra coisa?
por Evan Kroske 17.10.2010 / 20:06
fonte

9 respostas

20

Francamente toda a sua atitude me preocupa. Você nem sequer juntou o grupo e já supõe que você será apenas alguém que tenha algum conhecimento a transmitir e aquele que decidir o que o grupo fará.

A melhor aposta é reunir o grupo inicial e, em grupo, debater o que eles querem fazer. O que você pessoalmente quer fazer é irrelevante em termos do que o grupo quer fazer. Decidir o que fazer sem a entrada dos outros membros do grupo antes da primeira reunião, você vai se deparar com um idiota arrogante que eu não gostaria de trabalhar com voluntariamente. Assim você mataria o grupo antes de começar.

    
por 21.10.2010 / 19:06
fonte
5

Como todos os membros do seu clube estão vindo voluntariamente, você precisa torná-lo interessante e motivador. E o dever de casa não é exatamente motivador.

Ensinar alguém é difícil, mas por que não tentar ensinar de uma maneira que não é com um objetivo no final? Essencialmente, a princípio, você se une e cria um projeto em grupo e uma linguagem. O projeto precisa ser interessante e ser capaz de mostrar um progresso visível, mas não muito difícil. Uma vez que você tenha a língua pregada, você ensina o básico (sintaxe, pacotes / namespaces, classes, tipagem estática / dinâmica, etc). Você, então, dá a eles recursos (livros, tutoriais on-line, documentação on-line), uma maneira fácil de se apossar de você e uma parte específica do projeto para trabalhar. Cada pessoa trabalha no projeto em seu tempo livre, consultando a documentação e você, conforme necessário.

Qual é a vantagem deste processo?

  • As pessoas não se cansam de ouvir você ou alguém falar sobre algo em cada reunião
  • As pessoas aprendem como se auto-ensinar, uma habilidade muito importante no mundo real
  • Você não está se comprometendo demais, já que não é o único recurso de conhecimento
  • Você não precisa conhecer todo o idioma antes de poder ensiná-lo, pois só é necessário apresentá-lo ao idioma. E quando eles precisarem perguntar sobre algo, você pode pesquisá-lo rapidamente. Você precisa, no entanto, estar um pouco à frente de todos os outros, já que algumas coisas exigem saber quais são os 5 passos à frente
  • Você está criando algo que tende a motivar as pessoas

A única maneira de ver se funciona é testá-lo.

    
por 17.10.2010 / 20:51
fonte
4

Olhando para o fluxograma do curso para o seu curso , você está realmente entendendo mal o que esperar em diferentes classes de um curso de Ciência da Computação.

As classes que você está falando são aulas introdutórias que apresentaram aos alunos vários conceitos básicos de codificação. Ele se parece com "Conceitos de Programação", uma introdução à profissão com uma visão geral de uma semana de todas as áreas básicas da ciência da computação, sem codificação real. A partir daí, é NORMAL ter um curso introdutório em C, e outro curso introdutório em C ++ é NORMAL para um curso de Ciência da Computação. Você pode estar entrando no programa com alguma experiência de codificação, mas a maioria das pessoas não está. O programa tem que ensinar conceitos como recursão, e como escrever classes, e sobrecarga de operadores, e templates e todas essas coisas (sem mencionar o ensino sobre variáveis, for-loops, if-statements, etc. ..), então existem duas classes basicamente projetadas para ensinar como codificar em alguma linguagem de programação. E eles geralmente têm os tipos de nomes enganosos que as aulas da sua universidade fazem. As classes que ensinam o nível de organização que você deseja são geralmente chamadas de "Engenharia de Software" ou "Padrões de Design". O primeiro é tipicamente um requisito, e o último é tipicamente eletivo (talvez no nível de pós-graduação), mas ambos podem ser eletivos.

Há um debate acadêmico e setorial sobre se o currículo de Ciência da Computação se concentra na organização de software tanto quanto deveria, se os principais devem ser reorganizados e se a Ciência da Computação e a Engenharia de Software são diferentes, mas, por enquanto, sua Ciência da Computação o programa é NORMAL .

(E espere aí - em mais um ou dois semestres, você irá para classes mais desafiadoras que ensinam coisas que você ainda não aprendeu).

    
por 22.10.2010 / 16:44
fonte
1

Que tal competições de programação? Mesmo algo como Perl Golf (ou PHP Golf), onde você tem pessoas (ou equipes) trabalhando para resolver um problema usando a menor quantidade de código possível? É uma ótima maneira de aprender mais sobre idiomas e competições sempre tornar as coisas interessantes.

É claro que você deve oferecer mais do que apenas competições, mas elas são muito fáceis de configurar e eu sempre gostei delas.

    
por 18.10.2010 / 06:51
fonte
1

Você tem razão em precisar de alguma estrutura; você quer forçar a si mesmo e aos outros a aprender, e não apenas sentar-se tagarelando sobre o software / reclamando sobre a péssima seleção do curso. Mas não tenho certeza de tratar isso como uma aula com você, já que seu professor é o caminho a seguir; você não é um especialista ainda, e você está nisso para aprender alguma coisa também.

Que tal organizar o clube em torno de projetos de software? Não alguns programas de lição de casa de brinquedo, mas algo que você acha que pode achar útil. (Note que "marginalmente útil" ainda se qualifica como "útil"; você está tentando aprender fazendo, não encontrando uma startup. :-)) Se o clube tiver pessoas suficientes para várias equipes, forme várias equipes. A equipe decide qual linguagem quer usar, quais são as especificações, como o trabalho deve ser dividido, etc., etc., e trabalha nele individualmente em seu próprio tempo. Então, em sua reunião semanal do clube, você discute como está indo cara a cara, onde estão as barreiras, coisas legais que você aprendeu, etc.

Eu também gosto muito da ideia de trazer palestrantes convidados, seja professores, profissionais ou vídeos que você ou alguém acha que valem a pena compartilhar. Então, você poderia organizar uma reunião noturna assim:

  1. Palestra de convidado em algum tópico de software de alguém que o conhece bem.
  2. Sessão Q & A / gab sobre a palestra (espero que com a participação do palestrante, mas apenas entre vocês para vídeos).
  3. Divida as equipes de projeto, faça as coisas do projeto.

Isso vai ocupar uma noite e enche-la de bondade que aumenta o conhecimento. Esperançosamente.

Independentemente disso, desejo-lhe sorte com este projeto. Quando você tirá-lo do chão, espero que volte aqui e nos conte como está funcionando.

    
por 21.10.2010 / 18:04
fonte
1

O projeto do grupo é uma ótima ideia. Especialmente se o projeto é algo que pode ajudar a universidade ou seus colegas de classe.

Eu me juntei a um grupo na faculdade que estava trabalhando em projetos para estudantes.
O projeto mais popular foi um tour virtual de 360 graus do campus. Compramos o equipamento necessário e começamos a tirar fotos no campus. Em seguida, construímos um site para abrigar a turnê, descobrimos a hospedagem e a incluímos no site da universidade para possíveis alunos. Este projeto abrangeu mais do que apenas tarefas de programação, e também não interessou a programadores.

Tente identificar um novo site ou aplicativo que não apenas você usaria, mas todos no campus gostariam de usar. Acho que é mais fácil e mais divertido aprender se você tem um objetivo em mente.

    
por 21.10.2010 / 19:46
fonte
1

Se isso for uma atividade extra-curricular, não faça a lição de casa. Isso é apenas coxo.

Provavelmente, você poderia fazer algo interessante apenas iniciando um grupo github e fazendo propaganda / envio por e-mail em sua escola (acho que as crianças usam o Facebook e o Twitter também? Talvez seja uma boa ideia atingir esses pontos também). Quando você recebe um grupo de 5-6 pessoas que estão realmente interessadas juntas, decida sobre um projeto e apenas trabalhe nele.

Se não houver interesse, é muito fácil entrar em um projeto de código aberto se você for razoavelmente qualificado. Simples como algo que você está interessado no github e começar a conversar com os desenvolvedores.

A vantagem que você tem que a geração anterior não tem é que não é difícil conectar-se a programadores em seu nível e em seu idioma, embora seja muito geograficamente distinto. E não quero dizer apenas enviar um email. O Skype / iChat / Ventrilo torna as conferências por voz fáceis, ferramentas como o git / mercurial (e as páginas do projeto associadas on-line) facilitam o código como um grupo, mesmo se você estiver em lados opostos do Atlântico. Não há realmente nenhuma razão para não codificar socialmente nos dias de hoje, se é isso que você quer fazer.

Por fim, não crie o hábito de julgar as pessoas pelos idiomas que eles conhecem / querem saber. É uma armadilha fácil cair quando você é o único Smalltalker em um grupo de pessoas que acha que o C ++ representa o limite da programação, mas não lhe dará muitos amigos, e isso lhe dará um preconceito contra certas ferramentas. Eu conheci hackers que estão à minha frente em habilidade e experiência, que usaram LISP, Perl e C no mesmo projeto . As pessoas no topo da pilha de desenvolvedores profissionais tendem a não se importar muito com o nível de suas ferramentas, desde que façam o trabalho.

    
por 21.10.2010 / 19:51
fonte
1

Isso soa como uma oportunidade de networking, tenho certeza que há um número de estudantes interessados em programar com um nível similar de experiência / treinamento ... você simplesmente não os encontra ...

Você já participou de um dos Code Camps (treinamento gratuito relacionado ao desenvolvedor) na área de Tampa Bay ou se juntou a um dos grupos de usuários de programação local?

Ambos os recursos fornecerão oportunidades de networking. E em vez de sentir que você tem que treinar seus colegas, você poderá convidar seus amigos junto com você e depois discutir o que foi abordado.

Você também terá acesso a pessoas que estão programando como uma carreira e pode ter uma ideia de quais tipos de situações você provavelmente criará no "mundo real".

Depois de explorar esses recursos locais, você ainda poderá descobrir oportunidades de compartilhar seu conhecimento fazendo suas próprias apresentações, o que é ótimo. Compartilhar o que você aprendeu com um grupo de usuários ou como um orador de uma apresentação de campo de código é uma boa maneira de obter feedback sobre o que você aprendeu e também o abre para aprender mais.

Eu cresci na área de Tampa Bay e participei de muitos eventos gratuitos patrocinados pela Microsoft, e seu grupo de usuários locais também deve ter informações sobre como se envolver nesses eventos.

Bem, esta foi uma resposta longa ...

O próximo Code Camp em Tampa será no dia 13 de novembro de 2010, de acordo com o site do tampacodecamp.

Aqui está um link para o seu grupo de usuários local INETA / programação:

link

(Sou novo neste grupo e só consegui incluir um link.)

    
por 26.10.2010 / 18:47
fonte
1

Que tal encontrar um projeto de código aberto (ou mais de um) que seu grupo esteja interessado em contribuir?

Acho que o maior desafio que você provavelmente enfrentará é que, embora escrever código seja divertido, é tudo o que o envolve, etc., que pode rapidamente transformá-lo em uma experiência dolorosa. Se você puder encontrar um projeto de código aberto existente, você deve ter pelo menos parte da estrutura de suporte.

O código aberto o levará a bons hábitos e, embora você fique um pouco molhado atrás das orelhas, em comparação com alguns dos colaboradores, você terá uma grande vantagem sobre as outras pessoas - você estará no mesmo local e capaz de manter conversas com os membros da sua equipe, que normalmente é uma das maiores dores com o trabalho da comunidade de código aberto ...

    
por 18.11.2010 / 16:33
fonte