views:

394

answers:

6

I have been a SW developer for some 10 years, and then I was promoted to a Management position for the last 3 years. Not quite happy with my Management role, I looked for job alternatives, and accepted a software development position in a small company.

In short, in my new role I will be responsible for SW architecture decisions, lead other developers, and do SW development myself. The new product in which I will be working will be hosted in one of the "cloud" businesses.

Being out of the picture for the last 3 years, I wanted to get some practical advice on how to get up to speed again. I missed most of the RoR, Django, JEE 5 and Google apps. I want to know which sites to follow, which frameworks to learn, etc. The information available in the Internet is just overwhelming (and some times I read a lot of material just to find out there's nothing of interest to me).

In the past - if that matters - I have been involved in 100% Java SE apps.

Thanks

+5  A: 

Well, it sounds like you know a bit about what the various trends. Honestly, if you are a good programmer, not reading TechCrunch and taking, by the spoonful, every new methodology or framework that comes out does not mean you are that behind the times. Dynamic languages are very popular now, for better or worse, but the idea of dynamic languages is very, very old.

It depends on what you are interested in doing. I recommend checking out podcasts like Software Engineering Radio se-radio.net or perhaps Java Possee, etc. You haven't really missed Ruby on Rails, I mean it is still going strong in those communities. Perhaps it would be good to just go find some tutorials and get the gist of what the technology is about.

Obviously Unit Testing and Agile methodologies are all the rage now. It would probably be wise to get up to speed on this technologies and techniques.

A couple sites I like to check are:

http://www.theserverside.com/ for Java

http://www.theserverside.net/ for .NET stuff

And this place I think is just great, InfoQ. Lots of good articles, interviews, videos, and some tutorials on what's happening int he industry.

http://www.infoq.com/

Hope this gives you a couple places to start.

BobbyShaftoe
+8  A: 

Well, I don't know about any particular central information repository for new technologies, but here's my list of interesting, emerging technolgoies:

  • .NET - It's been out there for a while but it really matured during the recent years. NET 3.5 and C# 3 are really great technologies.You definitely don't want to miss out on these.
  • Javascript also became really useful lately. Check out jQuery, perhaps one of the best general-purpose Javascript library out there. It totally changes the way the web is programmed.
  • Functional programming is still not mainstream, but it's really getting there. Languages like Haskell, F# etc. provide a very interesting and different approach to programming. If you care about the future, check them out.
  • You mentioned that you are in the Cloud business so I guess I don't have to tell you how interesting it is. Also related areas are S3 and friends.
  • Based on what I've seen, Object databases will provide a viable alternative to relational databases in the near future.
  • Just browse through the stackoverflow question archives for other interesting emerging technologies.
DrJokepu
I totally agree with your opinion about Object Databases. +1 to you. Its high time getting rid of the ORM layer. Products like Versant, db40 need to pick up the pace though to compete with giants like Oracle and SQL server
Perpetualcoder
I've been hearing about how object databases are going to obsolete relational databases for the last 20 years. Wish it was true, but it probably isn't ;-)
Steven A. Lowe
The reason object databases are not taking off isn't because of the technology, it's because of the [lack of] tools. SQL is a standard - there's no standard for Object database access that a tools vendor can leverage. Show me how I can take an OODB and give a nudj in Accounting Crystal reports and let them data-mine it. You can't. And that is why they continue to get destroyed in the marketplace by Oracle, SQL Server and mysql. It was a problem with ObjectStore in 1999, it's a problem with ObjectStore in 2009. ObjectStore's XQuery perhaps, offers hope for change though.
Chris Kaminski
+2  A: 

Spend some time looking at TDD and unit testing, especially mocking frameworks that apply to your application platform. Look at JUnit for Java if you're more comfortable with that as a learning platform.

Do some woodshedding to get your programming chops back. Pick off some small projects in your new company and try to implement them on your own, maybe in parallel with another team member initially, just to get back up to speed. As you come across problems ask your team members for suggestions on how they would handle it. Google for answers related to specific problems. I find that looking for specific answers is a better way to learn than just trying to absorb a lot of new material without an intended purpose. Applying what you learn will help cement it in your memory.

As for specific recommendations, I'd look at jQuery for a client-side javascript framework. Codeplex, ASP.NET, and MSDN have a lot of information on ASP.NET platforms.

tvanfosson
+2  A: 

in the last three years, everything has changed, and yet nothing has changed.

read as suggested above, then ask your development team to suggest things and seriously sell you on their benefits without glossing over their cons

the decision is still yours, and you will have to vet what they tell you, but your team will likely have a better grasp of the options than you could get in a few days of "catch-up" reading

Steven A. Lowe
+1  A: 

I would start with Appfuse. This is a ready build java web project using many of the latest Java frameworks. Then I would learn Spring Frameworks and Hibernate. This will give you a good foundation in which to build any Java project. Find a good IDE like Intellij, Eclipse or Netbeans and learn how to use it. Lots have changed with the new IDEs. The one I use is Intellij 8. And never stop reading about software development.

jmclurkin
+2  A: 

I would say that you should go a completely different direction from some of the other answers and focus on making your team productive. You're a team lead. Make them glad that you're there!

You talk about your history but not much about your current position, so please mentally translate the examples I'm about to give from Java SE into your new space:

  1. If your team doesn't already have it, introduce source code control (should be rule zero, of course).
  2. If your team doesn't already have it, introduce continuous integration. Show them how the "check-in, hey you broke the build, sorry-fixed-it" loop saves many a weekend of frustration.
  3. If your team doesn't already have it, introduce automatic code inspection tools. FindBugs and PMD are compelling tools in the Java space.
  4. If there isn't already a process, create one that your teammates will live with. I'm a big fan of 3-weeks development, 1-week test-etc. with the end result of a tested quality milestone deliverable.

While all of the above is going on, read the code that's getting written. Talk to people on the team about what's really bugging them today. Ask them where they're stuck making a decision and try to provide feedback.

While all of that touchy-feely people stuff is going on, you'll find that you accidentally picked up quite a lot of technical relevance without even realizing it.

Bob Cross