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 usando o "Design do programa". Eu deveria estar aprendendo a organizar meu código-fonte em funções e módulos para tornar meus programas legíveis e mantidos; em vez disso, estou aprendendo sobre matrizes e recursão em C. No próximo semestre, preciso fazer o "Design Orientado a Objetos", que é ensinado por C ++ ( shudder ).

Há dois anos, 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 deixa quase às lágrimas. Por esse motivo, pensei em iniciar um clube de programação para conhecer alunos igualmente ambiciosos, aprender novos idiomas, discutir tópicos de desenvolvimento de software e trabalhar com outros desenvolvedores de estudantes.

No entanto, estou começando a perceber que talvez não haja outros estudantes que compartilhem minha experiência em desenvolvimento de software. Não é por falta de motivação, mas por falta de oportunidade: conheço apenas uma outra aula 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 ++.

Percebi que, se eu quiser trabalhar com outros desenvolvedores de software para estudantes, precisarei treiná-los. Agora, estou planejando tornar o clube um campo de treinamento em desenvolvimento de software, ensinando aos membros como desenvolver software com ferramentas e linguagens modernas. Obviamente, iniciar um curso não oficial de desenvolvimento de software é uma tarefa monumental com muitas abordagens possíveis. Minha pergunta para você, caro leitor, é

Qual é o meu plano de ataque?

Eu devo

  • dar uma palestra no clube, tentando equilibrar o trabalho do clube com a lição de casa?
  • pedir ao corpo docente do CS que ensine sobre tópicos de sua especialidade que podem ser menos relevantes para os membros?
  • tenta encontrar um desenvolvedor experiente e simpático dentro ou fora da escola que possa compartilhar minha carga de trabalho?
  • mostrar palestras em vídeo (do MIT OpenCourseWare , Google Tech Talks , etc)?
  • realizar workshops práticos de programação?
  • atribuir lição de casa?
  • fazer outra coisa?
Evan Kroske
fonte
3
Por que você estremece quando o OOP está sendo ensinado através do C ++? Você simplesmente se sente desconfortável ao lidar com idiomas de alto nível? Se sim, como você espera aprender OOP?
Cam
4
@Evan: Para ser franco, se você acha que C ++ é uma linguagem de baixo nível, um curso de C ++ seria perfeito para você. Você aprenderá muito. O C ++ pode parecer baixo para iniciantes, porque oferece recursos de baixo nível, mas você definitivamente não precisa usá-los. Na verdade, na maioria das vezes, você usará o STL e todos os seus recursos de alto nível OOP.
Cam
10
O C ++ é de baixo nível comparado a, digamos, Java, Ruby, Javascript, C #, etc. É de alto nível comparado a muitos outros idiomas. Parece um debate sem sentido.
Fishtoaster 18/10/10
2
@ fishtoaster: Eu não diria que o c ++ é de baixo nível comparado ao java e c #. É tanto de alto nível quanto o idioma (pelo menos não sei muito sobre o outro). Há apenas a vantagem adicional de que ele também pode ser de nível baixo, para que você obtenha o melhor do mundo.
N1ckp 18/10/10
1
@ n1ck: Ponteiros, como é óbvio (eu sei que o C # os tem, mas seu uso é raro), gerenciamento manual de memória, sem lambdas (não sei qual nome o C #, o python usa lambdas), sem foreach nativo, um padrão muito menor biblioteca, manipulação de bits mais frequente, recompilação necessária para plataformas diferentes etc. Você não precisa ser assembly para ter um nível mais baixo do que os dois.
Macha

Respostas:

20

Francamente, toda a sua atitude me preocupa. Você nem reuniu o grupo e já supõe que será apenas aquele que tem algum conhecimento a transmitir e quem deve decidir o que o grupo fará.

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

HLGEM
fonte
Você está absolutamente certo; Não tenho que formular e implementar sozinho um plano mestre para o clube. No entanto, preciso de idéias para as atividades e reuniões do clube para discutir com o restante do clube.
Evan Kroske 23/10/10
5

Como todos no seu clube estão vindo voluntariamente, você precisa torná-lo interessante e motivador. E a lição de casa não é exatamente motivadora.

Ensinar alguém é difícil, mas por que não tentar ensinar de uma maneira diferente com um objetivo no final? Essencialmente, a princípio, você reúne todos e cria um projeto de grupo e um idioma. O projeto precisa ser interessante e ser capaz de mostrar progresso visível, mas não muito difícil. Depois de definir o idioma, você ensina o básico (sintaxe, pacotes / espaços para nome, classes, digitação estática / dinâmica, etc.). Você fornece a eles recursos (livros, tutoriais on-line, documentação on-line), uma maneira fácil de contatá-lo 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 desse processo?

  • As pessoas não ficam entediadas ouvindo você ou alguém zangando sobre algo a cada reunião
  • As pessoas aprendem a auto-ensinar, uma habilidade muito importante no mundo real
  • Você não está se comprometendo demais, pois não é o único recurso do conhecimento
  • Você não precisa conhecer o idioma inteiro antes de poder ensiná-lo, pois você só precisa apresentá-los ao idioma. E quando eles precisam perguntar sobre algo, você pode pesquisar rapidamente. No entanto, você precisa estar um pouco à frente de todos os outros, pois algumas coisas exigem saber o que está 5 passos à frente
  • Você está criando algo, que tende a motivar as pessoas

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

TheLQ
fonte
Um projeto em grupo seria uma boa idéia, se eu pudesse manter a afiliação ao clube abaixo de dez alunos. Depois disso, as equipes começam a se tornar pesadas. No entanto, não posso obter apoio da universidade se impedir que os alunos ingressem no clube, e tenho certeza de que mais de 10 estudantes estarão interessados ​​em ingressar no clube. Nosso clube de hackers sempre tem mais de trinta alunos em suas reuniões semanais.
Evan Kroske
1
Então, mais de um projeto? Tente encontrar interesses comuns entre todos os membros do grupo. A primeira reunião pesquisou os interesses pessoais e, em seguida, tentou criar projetos relacionados a esses projetos?
21410 Chris
4

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

As aulas de que você está falando são aulas introdutórias que apresentaram aos alunos vários conceitos básicos de codificação. Parece que "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 fazer 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 em codificação, mas a maioria das pessoas não. O programa tem que ensinarconceitos como recursão e como escrever classes, sobrecarga de operador, modelos e tudo mais (sem mencionar o ensino sobre variáveis, for-loops, if-etc, etc.), então existem duas classes basicamente projetadas para ensiná-lo a 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 aulas que ensinam o nível de organização que você deseja geralmente são nomeadas "Engenharia de Software" ou "Padrões de Design". O primeiro é tipicamente um requisito, e o segundo é tipicamente um eletivo (talvez no nível de pós-graduação), mas ambos podem ser eletivos.

Há um debate acadêmico e do setor sobre se o currículo de Ciência da Computação se concentra na organização de software o quanto deveria, se o principal deve ser reorganizado e se a Ciência da Computação e a Engenharia de Software são diferentes, mas por enquanto, seu programa de Ciência da Computação é NORMAL .

(E fique aí - em mais um semestre ou dois, você terá aulas mais desafiadoras que ensinam coisas que você ainda não aprendeu.)

Ken Bloom
fonte
Não estou satisfeito com o "normal". Quero deixar a faculdade com uma educação de classe mundial em desenvolvimento de software e estou disposto a trabalhar duro para conseguir isso. Eu pretendia me transferir para o MIT em vez da USF, então uso o programa de Ciência e Engenharia da Computação do MIT como minha educação ideal em CS.
Evan Kroske 23/10/10
@Evan @Ken heh. Então minha faculdade eu consideraria não normal. Introdução aos aplicativos de computador (como você usa o Word) -> Lógica e algoritmos de computador (ou seja, gráficos de fluxo e lógica booleana. Nenhum algoritmo é realmente usado) -> Programação em C ++ (sintaxe, OOP, noções básicas) -> Avançado Programando em C ++ (algoritmos, recursão, ponteiros) -> Programando em Java (o mesmo que C ++ básico) -> Programando em Cobol (Ainda não cheguei tão longe, mas Deus estou com
medo
1

E as competições de programação? Até algo como o 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 torna as coisas interessantes.

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

Colin O'Dell
fonte
1

Você está certo que precisa de alguma estrutura; você quer forçar a si e aos outros a aprender, e não ficar apenas conversando sobre software / reclamações sobre a péssima seleção de cursos. Mas não tenho certeza de que tratar isso como uma aula com você como professor é o caminho a percorrer; você ainda não é um especialista e também está nessa para aprender algo.

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

Também gosto muito da idéia de trazer palestrantes convidados, sejam eles professores, profissionais ou vídeos que você ou outra pessoa acha que vale a pena compartilhar. Portanto, você pode organizar uma reunião noturna como esta:

  1. Palestra de convidado sobre algum tópico de software de alguém que o conhece bem.
  2. Sessão de perguntas e respostas sobre a palestra (espero que o palestrante participe, mas apenas entre vocês para vídeos).
  3. Divida em equipes de projeto, faça coisas do projeto.

Isso vai levar uma noite e enchê-la de bondade que aprimora o conhecimento. Esperançosamente.

Independentemente disso, desejo-lhe sorte com este projeto. Quando você começar do zero, espero que você volte aqui e nos conte como está funcionando.

BlairHippo
fonte
1

O projeto do grupo é uma ótima idéia. Especialmente se o projeto for algo que possa ajudar a universidade ou seus colegas de classe.

Entrei para um grupo na faculdade que trabalhava em projetos para estudantes.
O projeto mais popular foi um tour virtual de 360 ​​graus no campus.
Compramos o equipamento necessário e começamos a tirar fotos pelo campus. Em seguida, construímos um site para abrigar o passeio, descobrimos a hospedagem e o destacamos no site da universidade para futuros alunos. Este projeto abrangeu mais do que apenas tarefas de programação e também interessou não-programadores.

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

Todd Bumbarger
fonte
Eu realmente gosto dessa ideia; existem várias maneiras pelas quais meu novo clube poderia adicionar ou melhorar os sistemas de TI da faculdade. Por curiosidade, onde você foi para a faculdade?
Evan Kroske
Universidade Clarion em PA. Até fui a uma entrevista uma vez em que a entrevistadora mencionou ter usado o passeio para a pesquisa na faculdade de seu filho. Foi muito legal.
Todd Bumbarger
1

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

Você provavelmente poderia ter algo bacana apenas iniciando um grupo no Github e postando / enviando e-mails em sua escola (acho que hoje em dia as crianças também usam o Facebook e o Twitter? Pode ser uma boa idéia abordar esses pontos também). Quando você reunir um grupo de 5 a 6 pessoas realmente interessadas, decida um projeto e apenas trabalhe nele.

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

A vantagem que você tem da geração anterior não é que não é difícil conectar-se a programadores no seu nível e no seu idioma, embora seja muito geograficamente desigual. E não quero dizer apenas enviar um email. O Skype / iChat / Ventrilo facilita as conferências por voz, ferramentas como git / mercurial (e as páginas de projetos associadas on-line) facilitam a codificação como um grupo, mesmo se você estiver em lados opostos do Atlântico. Atualmente, não há realmente nenhuma razão para não codificar socialmente, se é isso que você deseja fazer.

Finalmente, não crie o hábito de julgar as pessoas pelas línguas que elas conhecem / desejam conhecer. É uma armadilha fácil de cair quando você é o único Smalltalker em um grupo de pessoas que pensam que o C ++ representa o limite da programação, mas isso não atrai muitos amigos e oferece uma tendência a certas ferramentas. Eu conheci hackers que estão muito à 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.

Inaimathi
fonte
1

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

Você participou de um dos Code Camps (treinamento gratuito relacionado a desenvolvedores) na área de Tampa Bay ou ingressou em um dos grupos de usuários de programação local?

Esses dois recursos fornecerão oportunidades de rede. E, em vez de sentir que você precisa treinar seus colegas, poderá convidar seus amigos e discutir o que foi abordado.

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

Depois de explorar esses recursos locais, você ainda encontrará oportunidades para 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 orador de uma apresentação de campo de código é uma boa maneira de obter feedback sobre o que aprendeu e abrir para aprender mais.

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

Bem, essa foi uma resposta prolongada ...

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

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

http://www.tampadev.org/

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

Jeff
fonte
1

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

Eu acho que o maior desafio que você provavelmente enfrentará é que, embora escrever código seja divertido, é todo o administrador circundante etc. que pode transformá-lo rapidamente em uma experiência dolorosa. Se você pode encontrar um projeto de código aberto existente, 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 dos ouvidos, em comparação com alguns dos colaboradores, você terá uma grande vantagem sobre outras pessoas - todos estarão no mesmo local e poderão mantenha conversas com os membros da sua equipe, o que normalmente é uma das maiores dificuldades do trabalho comunitário de código aberto ...

DanW
fonte