Qual é o melhor lugar para um programador do ensino médio ter seu trabalho notado? [fechadas]

52

Eu sou um estudante do ensino médio de 16 anos, com uma paixão pela programação de computadores. Estou no 11º ano e aprendi isso como parte do currículo da escola por cerca de 8 meses. Eu fui além do que está sendo ensinado na escola e crio algumas aplicações (razoavelmente boas). A linguagem que eu programo é C ++, na plataforma windows. Eventualmente eu gostaria de me formar em CS em uma boa faculdade e depois trabalhar como programador.

As perguntas específicas que tenho são:

  • Qual é o melhor lugar para eu conseguir que meu trabalho seja notado?
  • Há algum periódico ou publicações especificamente para jovens programadores?
  • Se não houver publicações, existem bons blogs ou é melhor começar o seu próprio blog?
  • Há mais alguma coisa que me ajudaria a ser notado como programador?

Eu tentei ser o mais objetivo possível.

Se tudo isso foi tl; dr: Qual é a melhor maneira de ser notado como um jovem programador?

Editar: Eu não estou olhando para ser contratado direto do ensino médio O objetivo não é impressionar a comunidade como programador profissional. Isto é com intenção de aplicações universitárias, onde ter seu trabalho visto e criticado por outras pessoas irá melhorar sua aplicação. Não estou querendo ganhar dinheiro com o que escrevi (até agora).

    
por viraj 28.12.2011 / 18:33
fonte

20 respostas

61

Eu gostaria de dar alguns avisos e sugestões.

Avisos:

  • Não superestime seu conhecimento: agora posso supor que você sabe o suficiente para escrever um aplicativo simples e mais do que o que é realmente ensinado na aula. Mas isso não faz de você um "programador profissional"; pode torná-lo um "freelancer" no máximo.

  • Não subestime o valor do que é ensinado na escola. Mesmo que algo pareça óbvio para você, estude-o também: você verá "novos aspectos" (ficarei mais claro depois) à medida que prosseguir.

Sugestões:

  • As aplicações profissionais têm um ciclo de vida típico de 3 a 5 anos e exigem milhares de horas (até milhões) de horas de trabalho por hora. Eles não podem ser implantados apenas por um desenvolvedor. Os programadores profissionais precisam trabalhar com os outros. Não se trata apenas de um bom conhecimento de ferramentas (como idiomas, IDEs etc.), mas também de técnicas, métodos e expressões idiomáticas.

  • Embora as ferramentas possam ser ensinadas por amostras formais e exercícios, técnicas e expressões idiomáticas só podem ser "descritas". Para "aprendê-las", você precisa experimentar e compartilhar a experiência com os outros. Eles são continuamente inventados e aprimorados.

  • As empresas, ao contratar da escola, verificam sua compreensão das ferramentas e sua habilidade com as técnicas básicas, mas - mais importante - testam sua capacidade de aprender coisas novas rapidamente e "capturar o trabalho" conforme necessário. / p>

  • Ao contratar pessoas experientes, elas observam quantas coisas fizeram e que experiências tiveram com essas coisas.

Moral:

  • Se você quer ser mais "avaliado", aprenda a trabalhar com os outros, participando de outros problemas (como em stackoverflow ) ou projetos abertos (como em sourceforge )

  • Além disso, não seja rápido demais para pedir dinheiro; divida seu "código de produção" em "algo para compartilhar" e "algo para vender". O que você pode compartilhar pode ser usado por outras pessoas, mas também pode atrair a participação de outras pessoas para expandir o projeto inicial. O que você pode vender é o que torna seu aplicativo "único" em relação a outros projetos semelhantes, levando-o a se tornar um produto comercial real.
    Para compartilhar códigos com outras pessoas, consulte o site codeproject ou o sourceforge . Sua classificação também dá uma ideia de como o que você fez foi interessante para outras pessoas.

por 14.09.2014 / 02:59
fonte
35

Já pensou em criar projetos de código aberto para os aplicativos que você escreveu e hospedá-los on-line? SourceForge.net ou GitHub.com são bons projetos de código aberto anfitriões. Isso ajudará a ganhar visibilidade para seus aplicativos.

    
por 28.12.2011 / 17:43
fonte
26

Antes de mais nada, vamos ser claros: a maioria dos 16 programadores do YO não impressionará realmente a comunidade.

Existe uma razão para isso na minha opinião. Ser um bom programador não depende apenas de habilidades de programação. Como você esperançosamente verá durante o seu CS principal, a programação é apenas um subconjunto de ciência da computação, e a maioria das pessoas que ganham prêmios (prêmios acadêmicos pelo menos) o fizeram porque provaram algo novo (um novo teorema por exemplo), ou descobriu uma nova maneira de realizar algum tipo de tarefa (padrões de projeto). Para fazer isso, você precisa (pelo menos):

  • Tenha uma boa experiência em matemática, é necessário entender algoritmos e, portanto, dominar as diferentes estruturas de dados.
  • Entenda que um bom programador primeiro entende os paradigmas (orientados a objetos, funcionais, ...) antes de se interessar por uma linguagem "concreta".
  • Entenda que a boa programação geralmente também vem para a modelagem de código e aprende os padrões de design existentes.

Se você acha que já dominou tudo isso, então sim, provavelmente vai impressionar a comunidade.

Você sempre pode tentar contribuir para um projeto de código aberto, mas também pode ficar surpreso com o quanto você precisa recuperar antes de poder contribuir.

Finalmente, dê uma olhada no StackOverflow e veja o quanto você pode responder em seu idioma favorito ... você terá um bom proxy do seu nível.

    
por 05.09.2014 / 07:40
fonte
13

Tente obter uma reputação muito importante no Stack Overflow. Quase o mesmo tópico foi discutido aqui:

Terá alta reputação no Stack Overflow ajudam a obter um bom trabalho?

    
por 12.04.2017 / 09:31
fonte
8

Algumas coisas que você pode tentar:

  • Escreva um software que resolva problemas reais, idealmente problemas que não foram resolvidos antes (ou pelo menos não satisfatoriamente). Se ninguém usa seu software apesar de seus melhores esforços promocionais, é provável que eles simplesmente não precisem disso tão desesperadamente.
  • Anuncie seu trabalho em listas de discussão relevantes, canais de IRC e fóruns da Internet. Se o seu programa faz uso extensivo de alguma biblioteca, considere postar na comunidade da biblioteca; se complementar outras peças de software existentes, anunciar para as suas comunidades, etc.
  • Se for um projeto sério o suficiente, configure um site dedicado para isso. O site deve fornecer um resumo de recursos, links para downloads e documentação e (se aplicável) algumas capturas de tela. Certifique-se de que é um site adequado, e não uma abominação barata de estilo geocities - você quer ser levado a sério, então aja de acordo. Adicionando uma seção de notícias, um wiki e / ou um bug tracker dá ao usuário em potencial uma indicação de como o projeto está ativo, o que pode funcionar para você ou contra você (se o projeto não estiver muito ativo, afinal).
  • Se for um projeto de código aberto, hospede-o em um dos hubs populares do FOSS (github, bitbucket, sourceforge se for necessário) e (veja acima) exponha o wiki e o rastreador de bugs (mas somente se você usá-los regularmente).
  • Faça o que fizer, forneça uma boa documentação. Você precisa de um breve "início" e uma referência completa. Se você não tiver o primeiro, as pessoas acharão seu programa muito difícil de usar. Se você não tiver o segundo, as pessoas deixarão de usá-lo porque não poderão encontrar as informações de que precisam.
por 28.12.2011 / 18:05
fonte
7

Vou seguir na resposta de Bernard e adicionar um pouco mais. Existem muitos projetos de OSS por aí que ainda podem ser difíceis de serem notados, a menos que você crie um projeto popular, o que não será fácil para um programador que está começando.

Supondo que você esteja tentando ser notado na comunidade de programação, sugiro que você publique (seja OSS ou fonte fechada) complementos para ferramentas que os programadores usam. Imagine entrar em uma entrevista de emprego e ser capaz de dizer que a empresa já está usando o software que você escreveu. Muitas ferramentas de desenvolvimento têm APIs para criar complementos e várias "App Stores" até hospedadas, onde você pode obter alguma exposição para sua ferramenta sem se preocupar muito com o marketing.

Aqui estão alguns exemplos que estão no topo da minha cabeça:

Dependendo da ferramenta escolhida, você pode segmentar o enclave específico da comunidade de programação que deseja que seja notada.

    
por 12.04.2017 / 09:31
fonte
4
  1. Ir para competições como Imagine Cup ou, pelo menos, as competições da sua escola (se houver)
  2. Coloque seus aplicativos on-line, talvez forneça o código-fonte e, embora não esteja relacionado à sua pergunta, ouça ao feedback de outras pessoas e aprenda com ele
  3. Tente contribuir para comunidades diferentes
por 28.12.2011 / 17:54
fonte
4

Eu tenho um ponto de vista ligeiramente diferente aqui.

Se você quiser que seu software seja notado, a melhor maneira é que as pessoas o utilizem. Embora Bill Gates e Mark Zuckerberg fossem ótimos jovens programadores, havia muitos programadores melhores. Mas esses dois senhores têm muita gente para usar seus produtos e, portanto, são mais conhecidos por seu trabalho.

Para levar as pessoas a usar seu código, você pode:

  • Venda seu produto para muitas pessoas. Por exemplo, coloque um aplicativo móvel em uma loja de aplicativos e acompanhe downloads, compras e uso contínuo.
  • Faça com que muitas pessoas usem seu produto e gerem receita com publicidade.
  • Obtenha muitos desenvolvedores para desenvolver produtos que funcionam com seu produto. Isto é difícil.
  • Contribua com um projeto popular de código aberto para que suas contribuições sejam usadas por muitas pessoas.

Na minha opinião, o software é quase irrelevante sem fornecer benefícios aos usuários. E você será notado por resolver problemas com os quais as pessoas se importam, e essa é uma habilidade muito rara.

    
por 28.12.2011 / 22:54
fonte
3

Uma resposta que ainda não li: o Google Summer of Code.

Do site :

Google Summer of Code is a global program that offers student developers stipends to write code for various open source software projects. [...] Through Google Summer of Code, accepted student applicants are paired with a mentor or mentors from the participating projects, thus gaining exposure to real-world software development scenarios.

Você precisa ter 18 anos para participar, mas isso não está longe. Conheço algumas pessoas que participaram e tiveram uma ótima experiência. Como todas as suas contribuições são para programas de código aberto, elas são públicas, para que sejam notadas.

Como você tem menos de 18 anos, o Google também tem um programa semelhante ao GSOC para alunos pré-universitários (de 13 a 17 anos) chamado Google Code IN .

    
por 29.12.2011 / 19:52
fonte
3

Do meu ponto de vista, existem tipos de pessoas que programam.

  1. "Programadores" - Estes incluem autodidata de 16 anos e 99% da força de trabalho "desenvolvedor de software" disponível na China. Eles podem fazer o trabalho ... meio que .. em um sentido mínimo, mas têm poucas idéias de conceitos como padrões de design, capacidade de manutenção, codificação robusta / defensiva, algoritmos / estruturas de dados e outras coisas que gostam do uso eficiente da fonte software de controle. Eles têm a capacidade de ler a documentação com eficiência e usar a maioria das APIs.
  2. "Engenheiro Eletricista Médio" - 80% Elétrico, 10% informático, 10% engenheiro de software. Proficiência em eletrônica, mas quase tão programada quanto o "programador" típico. Lógica, pensamento crítico e habilidades de gerenciamento do lado elétrico ajudarão.
  3. "Graduação em BS de Ciência da Computação" - 25% de programador, 25% de engenheiro de software, 25% de cientista da computação, 25% de eletrônica aplicada (lógica incluída).
  4. "Engenheiro de computação médio" - Essas pessoas são uma mistura de 50% engenheiro elétrico, 50% de pós-graduação em ciência da computação.

Definições:

  1. "Ciência da Computação" - Dijkstra afirmou certa vez: "A Ciência da Computação não é mais sobre computadores do que sobre astronomia". A Ciência da Computação é mais sobre matemática do que sobre computadores. Isso inclui a capacidade de desenvolver, entender e classificar algoritmos complexos e estruturas de dados.
  2. "Engenharia de Software" - Design Pattern, diagramas representando programas (não me lembro como são chamados). coisas assim. Codificação defensiva. Uso do controle de origem,

Observe que usei a palavra "Média" acima. Dependendo dos interesses pessoais e experiência de trabalho, essas porcentagens podem mudar drasticamente. Estes são apenas estereótipos excessivamente generalizados. Não julgue um livro pela capa. Eu também estou apenas porcentagens de minha experiência.

    
por 29.12.2011 / 22:15
fonte
1

Eu sou um programador freelancer. A programação tem sido minha renda principal desde que me formei no ensino médio há 9 anos. Eu ainda pretendo obter meu diploma, mas no momento ainda não é o certo para mim.

Meu caminho para o reconhecimento auto-dirigido foi o seguinte. Não estou dizendo que essas etapas farão com que você seja reconhecido pela comunidade de programação, mas ajudará a aumentar sua credibilidade quando chegar a hora de fazer uma entrevista.

Mesmo depois de ter aprendido a programar IMO na época, voltei ao básico e passei por tutoriais e construí um portfólio baseado em trabalhos inspirados por eles. Eu também comecei a me forçar a comentar meu código de uma maneira estilo JavaDoc. O portfólio pode não estar cheio de glamour e glamour agora, mas dá uma base que você pode construir e eventualmente substituir o que você tem lá. Eu então tive um conjunto de demos e amostras de código para mostrar aos clientes em potencial. Isso é essencial para conseguir seu primeiro emprego. Ninguém quer contratar alguém que não tenha experiência, no entanto, há um número de indivíduos que dará a chance a um programador de aparência promissora que não tenha experiência profissional.

Mais tarde, analisei esses programas e comecei a escrever bibliotecas com base em minhas tarefas comumente usadas. Com minhas novas bibliotecas, comecei a analisar os problemas do CompSci na Internet e comecei a avaliar o tempo que levaria para criar uma solução com minhas bibliotecas. Isso me daria uma base no futuro quanto ao que eu deveria cobrar por uma tarefa específica.

Foi só então que descobri o código aberto. Analisei os projetos no sourceforge no idioma em que eu estava interessado e encontrei aplicativos que eu poderia usar. Eu instalei esses aplicativos e comecei a usá-los como parte da minha experiência diária de computação. Eu pude ver os pontos strongs e fracos desses aplicativos na medida em que minha interação diária era e comecei a estendê-los para atender às minhas necessidades. Eu enviaria meus patches para a comunidade em desenvolvimento para ser revisado, e depois de alguns eu me inscreveria para me tornar um membro do projeto. Foi aqui que aprendi a usar as diferentes ferramentas usadas ao trabalhar em uma equipe que levou minha "vasta experiência", como eu a considerava na época, e a levei para o próximo nível.

Adaptei todas as minhas práticas que pude trabalhar em projetos de código aberto e implementei soluções compreensíveis quando estava trabalhando como indivíduo. Comecei a perseguir seriamente uma carreira como desenvolvedor freelancer e juntei-me a vários sites de recrutamento de freelancers. Eu olhei para o que os trabalhos populares eram, e comecei a aplicar. Para cada trabalho que seria recusado, eu ainda o preencheria como se tivesse obtido o emprego para expandir meu conhecimento. Isso ajudaria a construir meu portfólio e me apresentar alguns desafios do mundo real. Quando finalmente consegui a primeira entrevista, fui direto, disse-lhes que não tinha experiência profissional. Comecei então a contar-lhes os projetos de código aberto em que eu havia trabalhado, o que havia realizado lá. Alguns dos principais obstáculos que encontrei e como me dirigi a eles. Eu era capaz de oferecer um portfólio de aplicativos de trabalho e código de exemplo com base na minha experiência como amador, e eles absorveram todas as informações e me deram a oportunidade de entrar no mundo dos freelancers.

    
por 28.12.2011 / 20:11
fonte
0
  1. Aprenda o máximo que puder. Isso pode ser feito por livros, fóruns, classes, mas o mais importante é programar (e ser criticado). Se você superou as aulas de programação em sua escola, veja se uma faculdade local (comunitária) tem alguma aula de CS que você pode fazer (talvez durante um verão ou como uma aula noturna); ou tente usar o curso aberto dos tipos MIT / Stanford.
  2. Demonstrar iniciativa. Dizer que você sabe que o C ++ será totalmente desconsiderado. Dizer que você tem dúzias de commits para uma lista de projetos de código aberto demonstra que você sabe de alguma coisa, etc. (mas tenha cuidado, não apenas efetue commit por comprometer). Comece seus próprios projetos de código aberto. Isso não vai ser algo que você faça em uma tarde; mas algo que se torna seu bebê durante um período de meses. Escreva e publique um aplicativo para Android / iPhone que faça algo útil e faça com que as pessoas façam o download dele.

PS: Faz muito tempo desde que eu me candidatei para a faculdade - eles ainda lhe dão a oportunidade de listar coisas assim, certo? (Por exemplo, uma seção sobre hobbies ou uma pergunta sobre seus interesses).

    
por 28.12.2011 / 19:44
fonte
0

Acho que o JohnFX deu uma ótima resposta a essa pergunta.

Algumas reflexões:

  • Eu acho que o jQueryUI pode ser o melhor lugar para começar. É divertido e visual. Assim, você pode ir ao fórum de desenvolvedores do jQueryUI no site do jQuery e pedir para ser um colaborador.

  • Acho que você demonstrará grande paixão e dedicação para programar mais do que demonstrará grande habilidade. Mas não deixe que isso te pare! Eu recomendo strongmente que você esteja envolvido.

  • Neste ponto, você pode ter que aceitar fazer o controle de qualidade. O controle de qualidade é chato, mas você pode aceitá-lo e demonstrar dedicação. Mas a partir daí você pode contribuir com um pouco de código e talvez fazer plugins.

  • Se você pede para se envolver em algo e eles tornam isso difícil, é porque eles são idiotas. Basta procurar um projeto em que as pessoas sejam encorajadoras e legais.

  • Depois de encontrar um projeto com pessoas boas e encorajadoras e com quem você contribui, peça a um dos colaboradores adultos ou esperamos que um dos responsáveis pelo projeto lhe escreva uma breve carta de recomendação.

por 29.12.2011 / 17:02
fonte
0

Discordo respeitosamente com aqueles que responderam "não se superestime"!

Se você gosta de programar na sua idade, vá em frente, provavelmente é ótimo e maior do que as outras crianças da sua idade e, quando for veterano, poderá ser o próximo Brian Kernighan, Edsger Dijkstra ou Doug Lea!

Sugiro aprender o desenvolvimento do iPhone ou Android e criar alguns aplicativos reais.

Seja ótimo em alguma coisa e, enquanto estiver chegando lá, fale em conferências e escreva artigos, o que fará com que você seja notado e aprimore suas habilidades.

Eu tenho programado desde o final dos anos 70, e em Java desde 1996. Eu posso te dizer que o livro Java mais importante que já li foi o Gang of Four Design Patterns, que foi escrito uma década antes de Java ser inventado. Leia e seja ótimo!

O setor que mais paga atualmente é financeiro, mas isso está mudando rapidamente. Eu acredito que vai voltar, mas você nunca sabe!

Seja um programador e desfrute de um alto nível de emprego e satisfação no trabalho!

Boa sorte, você tem uma ótima carreira pela frente!

    
por 29.12.2011 / 17:43
fonte
0

Crie um aplicativo da Web que funcione bem no iPhone e no Android (ignore os navegadores padrão por enquanto) e aproveite os recursos estendidos do HTML5 (https://developer.mozilla.org/en/HTML/HTML5) para superar a latência, rede irregular e a limitação dos navegadores de telefone. Isso provavelmente significa entregar um aplicativo de navegador javascript + html5 que se conecta a uma API baseada em servidor. (escolha xmlrpc / json / yaml, não SOAP). faça isso gritando rápido. No servidor, eu recomendo usar o cherrypy no linux (debian) no VPS barato. Você pode obter alguns em 123systems.com, buyvm.net (preferido, mas muitas vezes não está disponível) para menos de US $ 4 por mês. Aprenda a usar o Python e use o Fabric para implantar seu material em seu (s) servidor (es). Obtenha um domínio .info no namecheap.com por US $ 2,99 por ano e use o dnsmadeasy.com para DNS (mais caro, mas valeu a pena - usá-los há anos, nunca teve um único problema) em que você possa fazer o balanceamento de carga via DNS. Além disso, não desanime por bancos de dados. Use o sqlite e aprenda a projetar suas tabelas manualmente com instruções sql. Finalmente, com uma máquina, você provavelmente pode lidar com 30.000 usuários. (2.000 simultaneamente em um hit para o servidor a cada 3 segundos). Lembre-se de armazenar em cache o máximo possível no armazenamento do HTML5.

Se você fizer isso e fizer um blog sobre isso e twit sobre as entradas do blog e seu progresso, você definitivamente será notado. Concedido há muito a aprender, mas você pode fazer isso!

    
por 29.12.2011 / 23:57
fonte
-1

What is a good place for me to get my work noticed ?

Praticamente em qualquer lugar na internet - se você escreve algo que vale a pena mencionar, como um utilitário que faz algo simples ou exclusivo, que um grande número de pessoas usará / baixará - então você já realizou a maior parte deste tarefa. Aplicativos legais, úteis e disponíveis, anunciam a si mesmos.

Are there any journals, or publications specifically for young programmers ?

If not publications, then are there any good blogs, or is it just better to start your own ?

Você já está aqui - esta é apenas uma das muitas comunidades que, fora do desejo de compartilhar, e de ser conhecido por saber - outras pessoas estão mais do que felizes em relacionar tópicos de mérito, com o atual discussão.

Is there anything else, that would help me get noticed as a programmer ?

Apenas programa por programação - contanto que seja produtivo, criativo e útil - aviso será feito.

Um ponto que eu vejo mencionado em outras respostas, que eu também defendo, são contribuições feitas para projetos de código aberto. A única maneira de melhorar a codificação é codificar - e que melhor maneira de fazer isso do que resolver problemas atuais. Porque, sem um problema para resolver, você está codificando em vão ... ah, mais uma coisa, não importa os velhos rabugentos, com seus comentários inchados e intencionalmente desencorajadores, "jovem caranha" - você é jovem e entusiasmado, é tudo que você precisa.

    
por 28.12.2011 / 20:13
fonte
-1

Se eu fosse você, eu faria meu conhecimento divulgar meu trabalho, você diz que programa em c , então comece a fazer programas que sejam voltados para a experiência diária do PC, faça coisas como youtube downloader e comece seu próprio co_de % hey man im apenas 19 e comecei a programar 4 anos atrás e obter este im um jovem negro do capô .... então eu poderia entender a paixão que você pode ter para programação, mas ao mesmo tempo programação poderia ter um monte de seu tempo e esforço, dê a si mesmo tempo para viver ... o que significa que todo esse tempo em um computador pode ser estressante para um menino.

    
por 28.12.2011 / 20:59
fonte
-1

Existem milhares de lugares para colocar seu trabalho para ser reconhecido, mas enquanto você pode considerar seu trabalho de primeira qualidade, pode ser um dia simples de trabalho para alguns. Quando eu tinha 16 anos, eu achava que meu trabalho era incrível, eu estava fazendo coisas legais, mas na verdade estou trabalhando nesses campos agora, e onde eu estava, então não é nada comparado a onde eu estou agora, e ainda sou um longo caminho fora de onde eu quero estar.

    
por 28.12.2011 / 21:13
fonte
-2

Se você estiver em jogos, tente participar do Ludum Dare. Um bom jogo lá terá algum renome.

    
por 03.01.2012 / 21:27
fonte
-3

Se você deseja ser notado e ganhar dinheiro, recomendo o desenvolvimento para dispositivos móveis no iPhone ou no Android. Você já conhece o C ++, o que é um ótimo começo. Para o desenvolvimento nativo no iPhone, você precisará do Objective C e, para o Android, precisará do Java. Ambos são semelhantes ao C ++ (Java é mais fácil, pois não há gerenciamento de memória) e não será muito difícil de aprender. Portanto, você não apenas criará aplicativos que farão com que você seja notado e ganhe algum dinheiro, como também aprenderá novas linguagens e plataformas avançadas no processo.

    
por 29.12.2011 / 05:42
fonte