Atingindo o status de programação intermediária [fechado]

32

Eu sou um engenheiro de software que teve posições de programação em VBA (embora não ouse considerar essa experiência 'real', como tentativa e erro!), Perl com CGI, C # e ASP.NET. Os dois últimos são de pós-graduação, com minha entrada no 'mundo real'. Estou com 2 anos de faculdade e 5 anos de experiência (total) nos idiomas mencionados. No entanto, quando se trata do meu currículo, eu posso colocar apenas 2 anos no C # e menos de um ano no ASP.NET.

Sinto que conheço C #, mas ainda tenho que gastar algum tempo 'O que esse método faz?', Enquanto alguns dos engenheiros de nível mais alto podem dizer imediatamente: "Ah, o Método X faz isso, sem nunca ter olhado para isso" antes. " Então eu sei empiricamente que existe um abismo ali, mas não sei exatamente como fazer a ponte. Comecei a programar no Project Euler e peguei um livro sobre padrões de design, mas ainda sinto que passo todos os dias pisando na água, em vez de seguir em frente.

Isso não quer dizer que eu não sinta que tenha feito progresso, apenas significa que, tanto quanto chego todos os dias, ainda vejo o topo da montanha à distância.

Minha pergunta é a seguinte: como você superou esse platô? Quanto tempo demorou para você? Que métodos você pode sugerir para me ajudar nisso?

Eu li o Code Complete , The Mythical Man Month e o CLR via C #, 2ª edição - minha pergunta é: O que faço agora?


Edit : Acabei de encontrar esta pergunta em projetos para um programador de nível intermediário. Eu acho que isso aumenta a discussão (apesar de não suplantar minha pergunta). Como tal, estou adicionando à pergunta como um "Para obter mais informações".

George Stocker
fonte
2
Eu tenho jogado com o Project Euler recentemente e abrange apenas uma gama bastante limitada de técnicas. Está tudo muito bem otimizando uma função por memoisation ou programação dinâmica, mas não ajudará você a escrever GUI ou webapps. Os problemas difíceis são projetados para ser matemática, não codificação.
Boa diversão, por tudo isso: não tenho nada contra, apenas não foi projetado para ajudá-lo a aprender um idioma além dos tipos de dados básicos, estruturas e talvez algumas técnicas de otimização. Se, como eu, você preferir colocar suas soluções sob 0.1s sempre que possível.
@Gortok, eu concordo que há muitas coisas específicas que você pode fazer para aprimorar suas habilidades, mas isso certamente depende do tipo de programação que você faz. Os desenvolvedores do Windows precisam de habilidades diferentes dos programadores de dispositivos incorporados, por exemplo. Eu acho que a pergunta feita é de fato muito ampla para obter uma boa resposta.
21715 Nathan Fellman
1
Venho programando desde os 2 anos de idade. Não consegui me tornar o melhor programador do mundo e agora odeio minha vida. Gostaria que meu objetivo fosse ser a principal estrela pornô do mundo.
Você não sente que está avançando porque sua intuição está lhe mostrando uma lacuna entre a prática acadêmica e a prática de negócios (no mundo real). E sua intuição está correta. A prática acadêmica trata de pequenos problemas e exercícios independentes. As empresas estão corrigindo um bug ou adicionando um recurso / página da web etc. a um gigante (geralmente). A prática acadêmica é recursão. Os negócios são legibilidade e manutenção. A prática acadêmica é o conhecimento de matemática e ciências da computação. Negócios são habilidades de pessoas e análise de requisitos, tanto quanto codificação. Teria colocado isso como resposta, mas o Q está fechado.
Brad Thomas

Respostas:

41

Parabéns!

Na sua descrição, você é um desenvolvedor intermediário.

Esta fase durará cerca de 3-8 anos, dependendo da sua vontade de aprender acima e além do problema do momento

Para acelerar o processo, leia, navegue no blog, acesse reuniões de grupos de usuários, encontre um mentor, faça pesquisas independentes, codifique projetos paralelos e se enterre em novas tecnologias. Isso pode raspar um ou dois anos fora do tempo.

Ou você poderia ter uma vida fora da programação ;-)

Sério, mantenha-se atualizado e introspectivo, mas desative a opção #% $ @ de vez em quando

Adendo: quando sair, lembre-se de usar calças.

Steven A. Lowe
fonte
17
e cuidado de citar Tolkien, que é um hobbit difícil de quebrar
Steven A. Lowe
1
Bem jogado, Sr. Lowe, bem jogado.
precisa saber é o seguinte
1
Sério, tenha uma vida fora da programação. Um: há mais na vida do que código. Dois: muito pode ser aprendido com outras disciplinas.
precisa saber é o seguinte
1
+1 - Bem feito. Nada substitui a prática (ou um bom senso de humor).
15

Uma das melhores maneiras de subir a montanha é escrever algo para você, porque você deseja. Os melhores programadores têm respostas maravilhosas para a pergunta 'qual é o programa mais interessante que você escreveu no seu tempo livre'. Se você não está escrevendo nenhum código no seu tempo livre, não ama o seu ofício o suficiente para melhorar.

Norman Ramsey
fonte
8
Não gosto dessa teoria: as pessoas têm empregos em período integral e outras responsabilidades. Não é responsável presumir que aqueles que não têm projetos paralelos não gostam de programar o suficiente ou são maus programadores. Como afirma a resposta aceita, Tenha uma vida fora da programação.
10
Eu discordo --- os melhores programadores são como os melhores escritores: eles literalmente não conseguem se impedir de fazer o que fazem melhor.
Norman Ramsey
2
Eles podem não ser capazes de parar a si mesmos, mas a vida pode, e por alguma vontade.
Shannon Severance
@ ShannonSeverance, para muitos , não apenas para alguns.
Pacerier
9

Você deve passar pelo estágio larval.

Embora agora eu programa no VB.NET no Windows, passei pelo estágio larval no Linux x86 com o assembly como idioma principal.

Por um tempo, você deve se dedicar ao ofício até dominá-lo. O que chamamos de instintos de um programador mestre são realmente comportamentos aprendidos. É uma cultura compartilhada. Os programadores devem pensar um no outro e gostar da máquina.

Ovelhas tornam-se como pastores e pastores como ovelhas, mas também não são muito longas no mundo. Com [árvores e] Ents, é mais rápido e mais próximo, e eles caminham ao longo das eras juntos. - Tolkien

Conheça e entenda. As melhores habilidades não são aquelas vinculadas a um idioma específico, mas podem ser aplicadas a quase qualquer idioma. Conheça os conceitos, procure-os nos problemas e nas linguagens, esteja pronto para inventar coisas novas quando necessário.

Este é o caminho para a grandeza.

Joshua
fonte
2
De alguma forma envolve cheetos? A imagem na minha cabeça envolve cheetos.
2
lol "Não é fácil ser extravagante!"
Gnovice
Estágio larval ou estágio Laravel? ;)
Brad Thomas
9

Venho programando desde os 8 anos. Terei 33 anos na véspera de Natal. Ainda vejo a montanha ao longe. Não importa o quão longe você chegue, sempre há mais para aprender.

Conheça os paradigmas e descubra como a linguagem em que você está codificando atualmente implementa esses paradigmas. A programação é uma experiência de vida que sempre tem mais a aprender. Essa é a alegria, não importa quão proficiente você seja, sempre há mais.

Uma maneira de descobrir coisas novas que normalmente não aprenderia é passar um tempo aqui e em outros fóruns de programação como Bytes e Experts Exchange, onde as pessoas fazem perguntas. Se você puder responder à pergunta, vá em frente; se não puder, tente descobrir como concluir a tarefa sozinho, não apenas o OP apreciará seu esforço e assistência, mas também aprenderá algo novo.

Acho que aprendo mais ajudando outras pessoas a encontrar respostas para coisas que ainda não sei do que jamais faria, apenas programando minhas coisas diárias que faço todos os dias.

BenAlabaster
fonte
9

O status de programação intermediária implica que você está saindo da mentalidade de "digitar mais rápido" do macaco de código e entrar no reino de querer construir sistemas reais como uma carreira. Esta é uma grande mudança profissional e, francamente, não se trata realmente de habilidades técnicas. Trabalhar no nível intermediário (também conhecido como "desenvolvedor") requer um conjunto significativamente avançado de habilidades pessoais.

Aqui estão alguns sintomas em que você poderia pensar:

  1. Você entra em guerras de edição online? Nesse caso, você pode estar demonstrando que gosta mais de discutir detalhes dentro da sua zona de conforto do que gosta de tentar entender o ponto de vista da outra pessoa.
  2. Você acha que as línguas são coisas verdadeiramente diferentes? C # e Java trazem suas próprias plataformas e recursos para a tabela, mas ambos são modelos eficazes de computabilidade. Você pode aprender um novo idioma e plataforma com rapidez suficiente para receber o pagamento para fazer o trabalho?
  3. Você ainda pensa nas tarefas de software como digitando? Se você recebe uma tarefa no trabalho, por quê? Para que esse código será usado? De que sistema ele fará parte? Essa informação pode mudar drasticamente a sua solução proposta.
  4. Você deixou o know-it-all fase de da sua vida? Você está ouvindo o resto da equipe ou apenas tentando pensar na próxima coisa a dizer?
  5. Você já percebeu que "puxar a noite toda" para produzir uma solução de última hora de buggy não é mais impressionante? Após as primeiras oito horas, você pode facilmente imaginar que o resto do tempo foi usado apenas para digitar bugs.

O melhor resumo que posso apresentar é que o programador intermediário (ou "desenvolvedor") aprendeu a ser mais produtivo em oito horas úteis para poder ir para casa e ter uma vida fora do trabalho.

Pontos de bônus concedidos se você conseguir encontrar um cônjuge e se reproduzir ....

Bob Cross
fonte
8

O que você está fazendo agora é ótimo, mas se você deseja acelerar incrivelmente o seu progresso, pode fazer duas coisas adicionais:

1) "Ensinar" - Uma maneira simples de fazer isso é iniciar um blog e tentar contribuir com algo útil regularmente (semanalmente, talvez). Almeje o que aprendeu recentemente ou que ainda não sabe . Isso significa que você se forçará a pesquisar, entender e reexpender.

BTW, você pode se inscrever facilmente em uma conta do SingingEels na qual obtém um blog gratuito em uma comunidade de desenvolvimento existente.

2) Escreva muitos miniprogramas - com isso, quero dizer cerca de 1 por semana. Você pode usar isso em conjunto com o acima ... ou apenas por diversão. O que fiz como jovem desenvolvedor foi escolher aleatoriamente (não estou brincando) um espaço para nome no .NET framework. Nele, escolha uma classe que você nunca viu / usou antes e faça um pequeno programa que a utilize.

Timothy Khouri
fonte
8

Tente

Leia MAIS livros Pegue esses grandes títulos da Amazon e leia-os. Por exemplo, o autor do Code Complete escreveu um ótimo livro sobre engenharia de software - Desenvolvimento rápido de software, compre um e leia-o.

Aprenda uma linguagem de programação diferente Vale a pena estudar uma linguagem de script como python / ruby. Ou talvez uma linguagem de programação funcional :) Isso pode mudar sua opinião sobre a programação. Você pode saber que alguns dos padrões GOF não são necessários para esse tipo de idioma.

Participe de uma comunidade As pessoas podem trocar seus pensamentos ouvindo os outros e fazendo apresentações.

rIPPER
fonte
4

Encontre programadores inteligentes e aprenda com eles. Imite-os. Observe as coisas que eles fazem de maneira diferente da sua.

Sua empresa faz revisões de código? Essa é uma das melhores maneiras de aprender. Você pode se surpreender com as sugestões que os programadores mais avançados fazem e com o que eles pensam durante a codificação.

David Norman
fonte
3

que tal se envolver em outro projeto de código aberto em andamento, para que pelo menos seu trabalho valha a pena para alguém e você possa aprender e interagir com outros desenvolvedores mais avançados que trabalham no mundo real.

para que pelo menos você não esteja limitado no que deseja aprender ou no tipo de projeto que deseja fazer. e já é uma ferramenta gratuita que você está usando, você pode se orgulhar de ajudar a melhorar.

e também aparece bem no seu currículo. :)

portanto, se isso ainda lhe resta algum tempo livre, por que não manter um blog documentando seu aprendizado, experiências e outras coisas. quem sabe, você pode ser o próximo contratado em software ou horror de codificação: p

Melaos
fonte
-1

Para se destacar como desenvolvedor de C #, leia os dois a seguir. Observe que o foco desses livros está mais na linguagem (C #) e não na estrutura (.NET).

  1. C # essencial : link é para a edição mais recente. Na verdade, eu li o anterior (C # 4.0), mas estou assumindo que o mais novo, melhor. Este livro também tem algumas coisas básicas, mas seja paciente e leia essa capa a capa.
  2. C # in Depth : link é novamente para a edição mais recente, que será lançada em 10 a 15 dias. Eu só dei uma olhada no livro, mas meus colegas que o leram têm grande consideração por isso.

Você já leu o CLR via C # , caso contrário essa é provavelmente a terceira sugestão de qualquer um para desenvolvedores de C #.

Isso também deve torná-lo um desenvolvedor melhor: Diretrizes de Design da Estrutura e Trabalhando Efetivamente com o Código Legado .

Asim Ghaffar
fonte
gostaria de explicar por que a votação diminuiu?
Asim Ghaffar