Como se tornar bom em análise e design orientado a objetos (OOAD)?
26
Tornar-se um bom analisador e designer pode beneficiar muito um desenvolvedor. Mas há definitivamente obstáculos para isso. Nem todo mundo está interessado no OOAD, e nem toda pessoa que está interessada conhece o caminho. Um bom OOAD deve conhecer vários idiomas OOAD? Ou deveria ter falhado em projetos? Como alguém pode se tornar um bom OOAD?
Pessoas que não estão interessadas estão criando seus próprios obstáculos. Não posso me preocupar com isso.
Para quem não conhece o caminho, sugiro:
Acho que toda linguagem OO que aprendi me torna um desenvolvedor OO melhor. Muito pode ser trazido de cada idioma para outros, desde que você encontre a comunidade.
Você aprende mais com o fracasso do que com o sucesso, mas tenta fazer isso no seu próprio tempo. Profissionalmente, confie nas pessoas com mais experiência, pelo menos uma parte do tempo - mas não tenha medo de perguntar "Por quê?".
Aprenda todos os cinco princípios do SOLID e entenda por que eles existem. Nenhum deles é regra, mas são boas diretrizes quando você está perdido.
O Desenvolvimento Orientado a Testes melhorou mais minhas habilidades de projeto OO do que qualquer outra coisa que eu já aprendi.
Você não será o seu melhor até passar da subengenharia para a superengenharia e depois encontrar o equilíbrio correto (mais próximo deste último).
Na verdade, não se esqueça, você nunca será tão bom quanto será dois anos depois.
Leia muitos livros e blogs, mas não tome nada como evangelho. Esse setor ainda não encontrou e pode nunca encontrar um caminho perfeito.
Por todos os meios, aprenda padrões de design, mas não procure lugares para usá-los, basta usá-los como um facilitador da comunicação.
Penso que, para apreciar completamente o modelo OO, você deve ter experiência em falhar miseravelmente com técnicas de programação não OO. Você pode entender o OO por dentro e por fora, mas para apreciá-lo e respeitá-lo, ele deve ser uma ferramenta nova e brilhante que substitui a antiga ferramenta enferrujada que não fazia bem o trabalho.
Autodidata por 7 anos, antes de finalmente aprender OO em Java em nível universitário. Antes disso, eu constantemente desenvolvia esses projetos e eles ficavam tão grandes que eu esquecia o que diabos estava acontecendo. Eles seriam volumosos, desorganizados e exigiriam muita manutenção para fazer pequenas alterações. Basicamente, eu continuava me acostumando com o meu código e começando de novo constantemente.
Demorei um pouco para tirar minha cabeça do design linear que eu havia adotado, mas depois que entendi completamente o modelo OO, era como Eureka! Consegui codificar projetos muito mais complexos por conta própria e minha produtividade disparou rapidamente depois de aprender conceitos como herança. Não estou perdendo tempo reescrevendo código ou recomeçando, porque objetivamente tudo faz sentido e é apenas intuitivo.
É minha opinião que todo programador deve conhecer o maior número possível de idiomas. Isso os tornará um veterano mais experiente, independentemente de ser OO ou não. Depois de entender o OO, você pode usar essas técnicas e aplicá-las em todos os lugares em que forem implementadas.
IMHO, se você não entende, ou não deseja aprender OO, você estará inadequadamente equipado no campo de batalha da vida. Mais e mais empresas estão usando idiomas OO mais recentes. Não vejo motivo para não conhecer o modelo OO hoje em dia.
Dependendo de como a pessoa aprende, depende de como ela deseja aprender o modelo. Pessoalmente, aprendo melhor quando alguém me ensina e, portanto, ir às aulas para Java I e Java II realmente fez uma grande diferença para mim. Eu recomendaria pegar disciplinas eletivas de engenharia de software na faculdade ou simplesmente entrar on-line e procurar tutoriais de OO se você não tiver acesso aos cursos da faculdade ou quiser aprender no seu tempo livre.
Quando penso em como isso me foi descrito, eu digo; uma maçã é uma maçã e uma laranja é uma laranja. Sim, ambos caem das árvores, mas são dois frutos totalmente diferentes e aí está a sua harmonia.
Você quis dizer falhar miseravelmente com a programação funcional ou falhar miseravelmente com a programação procedural?
Andrew Grimm
Falhar miseravelmente com a programação funcional, mas não falhar no domínio. Quero dizer, falhar na implementação bem-sucedida devido a suas limitações.
Styler
Então você definitivamente quis dizer programação funcional, não programação processual?
Andrew Grimm
Programação não OO.
Styler
2
Definitivamente, eu sugeriria editar isso, já que não OO! = Funcional por qualquer extensão da imaginação. As coisas podem até ser ambas.
Magus
0
Sempre existem obstáculos para os interessados ou não, mas o contexto e a gravidade podem variar.
Não é necessário que você precise aprender vários idiomas para os conceitos de OO; comece com um idioma que você goste; ao longo de um período de tempo, você terá uma posição forte no idioma; poste isso para explorar algumas coisas que você fez já e tente executar o mesmo em um idioma diferente. A experiência em um idioma ajuda a mudar para novos, uma vez que você teria uma referência para avaliar.
Qualquer projeto é uma experiência de aprendizagem, e não seu sucesso, o importante é como você adaptou os recursos para seu melhor uso; ocasionalmente, é bom ler o código de outros e descobrir como e por que ele foi feito. Se você conseguir um mentor, isso seria ótimo. Sempre saiba o motivo Por que isso foi escolhido , Que tal fazê-lo de alguma outra maneira. Tente trabalhar em seu próprio modelo de lógica e design e ateste-o ao seu mentor / sênior. Dessa forma, você melhoraria suas habilidades, talvez no início elas fossem direto para o caixote do lixo, mas então você tentou e aprendeu o que fez de errado. Iterativamente, você ficaria cada vez melhor.
Penso que, para apreciar completamente o modelo OO, você deve ter experiência em falhar miseravelmente com técnicas de programação não OO. Você pode entender o OO por dentro e por fora, mas para apreciá-lo e respeitá-lo, ele deve ser uma ferramenta nova e brilhante que substitui a antiga ferramenta enferrujada que não fazia bem o trabalho.
Autodidata por 7 anos, antes de finalmente aprender OO em Java em nível universitário. Antes disso, eu constantemente desenvolvia esses projetos e eles ficavam tão grandes que eu esquecia o que diabos estava acontecendo. Eles seriam volumosos, desorganizados e exigiriam muita manutenção para fazer pequenas alterações. Basicamente, eu continuava me acostumando com o meu código e começando de novo constantemente.
Demorei um pouco para tirar minha cabeça do design linear que eu havia adotado, mas depois que entendi completamente o modelo OO, era como Eureka! Consegui codificar projetos muito mais complexos por conta própria e minha produtividade disparou rapidamente depois de aprender conceitos como herança. Não estou perdendo tempo reescrevendo código ou recomeçando, porque objetivamente tudo faz sentido e é apenas intuitivo.
É minha opinião que todo programador deve conhecer o maior número possível de idiomas. Isso os tornará um veterano mais experiente, independentemente de ser OO ou não. Depois de entender o OO, você pode usar essas técnicas e aplicá-las em todos os lugares em que forem implementadas.
IMHO, se você não entende, ou não deseja aprender OO, você estará inadequadamente equipado no campo de batalha da vida. Mais e mais empresas estão usando idiomas OO mais recentes. Não vejo motivo para não conhecer o modelo OO hoje em dia.
Dependendo de como a pessoa aprende, depende de como ela deseja aprender o modelo. Pessoalmente, aprendo melhor quando alguém me ensina e, portanto, ir às aulas para Java I e Java II realmente fez uma grande diferença para mim. Eu recomendaria pegar disciplinas eletivas de engenharia de software na faculdade ou simplesmente entrar on-line e procurar tutoriais de OO se você não tiver acesso aos cursos da faculdade ou quiser aprender no seu tempo livre.
Quando penso em como isso me foi descrito, eu digo; uma maçã é uma maçã e uma laranja é uma laranja. Sim, ambos caem das árvores, mas são dois frutos totalmente diferentes e aí está a sua harmonia.
fonte
Sempre existem obstáculos para os interessados ou não, mas o contexto e a gravidade podem variar.
Não é necessário que você precise aprender vários idiomas para os conceitos de OO; comece com um idioma que você goste; ao longo de um período de tempo, você terá uma posição forte no idioma; poste isso para explorar algumas coisas que você fez já e tente executar o mesmo em um idioma diferente. A experiência em um idioma ajuda a mudar para novos, uma vez que você teria uma referência para avaliar.
Qualquer projeto é uma experiência de aprendizagem, e não seu sucesso, o importante é como você adaptou os recursos para seu melhor uso; ocasionalmente, é bom ler o código de outros e descobrir como e por que ele foi feito. Se você conseguir um mentor, isso seria ótimo. Sempre saiba o motivo Por que isso foi escolhido , Que tal fazê-lo de alguma outra maneira. Tente trabalhar em seu próprio modelo de lógica e design e ateste-o ao seu mentor / sênior. Dessa forma, você melhoraria suas habilidades, talvez no início elas fossem direto para o caixote do lixo, mas então você tentou e aprendeu o que fez de errado. Iterativamente, você ficaria cada vez melhor.
fonte