Queria antes pedir desculpas se esse tipo de questão parece óbvio para esta lista, mas acho que é um assunto pertinente. O que preciso é de um roadmap para melhorar como desenvolvedor.
Trabalho com java já faz 3 anos e sempre senti a necessidade de saber organizar melhor os sistemas do meu trabalho. São muuuuito zoneados e a manutenção é um pesadelo. Isso é certamente o que se procura evitar quando se desenvolve, mas já peguei tudo assim. Como venho de uma formação de engenharia, não tenho nenhuma experiência prática sobre arquitetura de sistemas e portanto me faltam muitos conhecimentos a respeito de como arquitetar sistemas complexos. Sei a respeito do conceito de MVC, da utilidade do Hibernate, do EJB, de Design Patterns, um pouco de DAO e quase nada de UML, entre outras coisas. O que preciso é saber por onde começar.
Em que ordem devo aprender cada assunto? Qual o papel de cada um? Em outras palavras, no desenho de um sistema, qual a ordem em que se emprega cada área de conhecimento dessas?
Tenho uma boa noção do que se trata cada assunto, mas não queria perder tempo aprendendo as coisas na ordem errada. Ia ter que interromper o estudo de um assunto para começar outro do qual o primeiro dependesse.
Fazer um curso de pós como o da PUC (Análise, projeto e gerência de sistemas) vai esclarecer essas dúvidas? Estou pretendendo fazê-lo.
São assuntos distintos mas atrelados. Bom, na minha opinião, se vc estiver bem fixado os conceitos de OO, poderia ter alguma noção de UML, já que no desenho de um sistema, a primeira fase é análise. Feito isso, é importante entender o conceito MVC e do DAO (Persistência). Depois de bem fixados estes, aí sim partiria pras Patterns, EJBs e frameworks (como o Hibernate).
Os cursos do CCE da PUC-RIO não costumam decepcionar.
Já que você é do rio, recomendo também que frequente ás reuniões do riojug: http://www.riojug.org
Como o beto falou, o que você precisa é conceitos, começando do básico.
Para começar de maneira prática, recomendo um livro sobre OO (tem uma lista de clássicos aqui, mas você pode começar com um mais básico) e programar bastante implementando patterns e tentando entender o contexto de uso deles.
Muito obrigado pelas dicas. Vocês me deram uma boa direção para meus estudos. Comprei um livro de UML com EJB, mas achei burrice minha tê-lo comprado porque EJB eu também não sei e certamente ele espera que o leitor saiba. Bom, com isso eu já me viro!
E ae pessoal blz?
Gostaria de aproveitar o tópico e pedir uma recomendação de livro sobre Orientação a Objetos. Assim um livro que tivesse bons exemplos práticos e uma explicação bem direcionada!
Existe algum bom livro disso para programadores de nível intermediário como eu?
Queria antes pedir desculpas se esse tipo de questão parece óbvio para esta lista, mas acho que é um assunto pertinente. O que preciso é de um roadmap para melhorar como desenvolvedor.
[/quote]
Se vc sabe montar o sistema é irrelevante como vc chega lá.
UML é uma documentação. Não ha nada a documentar sem a ideia do que deve existir.
Claro que vc pode usar UML informalmente num quadro branco enquanto discute com alguem ou até enquanto pensa sozinho. É esta a importancia da UML : comunicação. Mas ela não gera o sistema. (faço-me entender?)
Desing Patterns , Ferramentas e Frameworks servem para serem usados como poças de Lego ao contruir o sistema. Mas mais uma vez , se vc não sabe o que quer construir não adiante. É obvio que quanto mais vc conhecer as peças , melhor sabe como as encaixar de formas não ortodoxas e ai é que está o ganho de conhecer essas coisas todas.
Para começar vc precisa ser capaz de imaginar o sistema na sua cabeça. Depois vc usa essas coisas todas.
Não ha uma ordem porque é um processo iterativo , mas eu diria que começa assim :
Java (plataforma e linguagem) , API do JSE.
Em paralelo UML. Comece pelos diagramas de classes e evolua dai. (isso vai servir para o ajudar a pensar e a comunicar com outros)
Desing Patterns : serve para poder comunicar , pensar e simplificar seus problemas.
Frameworks : comece pelos que precisa. Por exemplo Log4J é muito usado.
Depois vc decide se vai para ME, EE ou fica no SE.
Ai vc começa de novo mas com a API certa. Por exemplo para ME , estude a JME , padrão associados a ela, frameworks , e assim vai.