Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

From Computer Scientist to Software Engineer [closed]

I graduated in December in Computer Science and have acquired a Software Engineering position. I have been banging my head up against the wall for 2 months trying to learn Hibernate, Spring and everything else that has been thrown at me in my first project. Prior to accepting this job I had experience only in programming. Application architecture and engineering tools have been very difficult to grasp. I was hoping that someone would be able to tell me a good place to start understanding how Java based web applications work. There are so many components and I can't figure out how everything goes together. So, my questions are.

  1. How do you go about learning a new technology?
  2. What approach is best for learning multiple technologies at the same time?
like image 631
Ryan H Avatar asked May 14 '09 13:05

Ryan H


4 Answers

Start with the basics.

By this I mean just servlets and a Web container, probably Tomcat. You should understand the servlet lifecycle no matter what frameworks you happen to throw on it afterwards.

Next, if you wish, throw JSPs into the mix. JSPs are just glorified servlets anyway (they're compiled into servlet code and then into bytecode).

After that add an MVC framework. Years ago that used to be Struts (1). Nowadays it's a little more difficult. I like Spring MVC but that is somewhat predicated on Spring too. And I think you'd be better off (for now) bypassing more Ajaxy type frameworks (like Tapestry or Wicket) or the more end to end solutions (like Seam) as overcmpolicating the issue. The point you're trying to comprehend here is just what the MVC concept is, how it works and why you're doing it.

After that add Spring. The point here is to learn the principle of Dependency Injection / Inversion of Control (IoC). This is an extremely important concept in modern Java development and software development in general.

The above actually follows how these technologies evolved, in the order they evolved. They did so for a reason and following that path will help you understand that.

Don't listen to anyone who tells you that you don't need to understand low level concepts and technologies like the pure servlet API. It's nonsense.

like image 81
cletus Avatar answered Oct 14 '22 10:10

cletus


I think Mike Gunderloy's book Coder to Developer may be worth a look.

Regarding learning a new technology, there really is no better way than to just use it and practice with it as much as you can.

like image 25
Galwegian Avatar answered Oct 14 '22 09:10

Galwegian


My way of learning is to build something on my own. I usually pick something trivial that can be implemented quickly and then using the enterprise technology XYZ of the moment so that I can poke around and learn the particulars. In fact, I'm doing this very thing as I'm trying to learn ASP.NET MVC.

like image 44
t3rse Avatar answered Oct 14 '22 08:10

t3rse


By the time you are an expert at your tools and the languages/tech that you are using, a new crop of kids will be using newer better tools and the languages/tech. You will then have to learn those to get a job. So get used to this process

like image 26
KM. Avatar answered Oct 14 '22 09:10

KM.