tags:

views:

143

answers:

7

I was a Adabas/Natural and Cobol mainframe programmer for 16 years ending in 2002. I have a vast amount of experience in the analysis, design, development, testing, implementation and documentation of online and batch applications. I would like to get back into software development after a 7 year hiatis raising my children.

I have been told that the .NET languages are much in demand these days. Can someone give me advice on which classes I should take to get a solid knowledge of the .NET languages? Should I start with ASP.NET or VB.NET, and which versions? Or, any other advice you may have for someone having to upgrade their programming skills from a mainframe environment to a client-server environment?

Thanks in advance for any and all input!

+1  A: 

Maybe your could to take some classes for Microsoft Official Curriculum; that isn't advanced, but cover basic concepts very well.

I suggest to take a look into Microsoft Learning and to look for some classroom training.

Rubens Farias
+1  A: 

I cannot give suggestions, but there are at least 3 main types of programmers out there:

  • the "get it done guys", which will code in Rails, Grails or php
  • the "framework guys", which will code in Java and create design patterns around everything (with pros and cons). There are several UI frameworks out there; I prefer wicket. The most people use hibernate here as persistence technic.
  • and yes, the "Microsoft guys" which will code in ASP.NET. I would choose C# then. The demand is high, but I prefer OS independence and Java tooling

There are other directions with other languages, but for a starting point ... maybe take a look at the cloud computing and mobile hype, if you are interested.

Karussell
+1  A: 

Not sure how much exposure you've had to object-orientation, but I would start by learning these fundamentals first.

I would steer clear of VB.NET and aim for C# instead, it's a more valuable skill to acquire.

I would also look at any modern development practices you are missing in your skill set such as:

  • Source control like subversion or git
  • Unit testing and Test-driven development
  • Agile development practices
Paolo
+1  A: 

Using "client/server" dates you as much as anything ;) These days everything is all about the web (that is, n-tier architecture). Of course this is a sort of client/server architecture, it's just hardly anybody ever uses the term any more.

APC
+1  A: 

Hi. Sounds like a great thing to do. Good luck.

I think C# is much more popular than VB.NET, so I think that might be the place to start. ASP.NET is also more popular than desktop development, so that might be better, too. If you go for ASP.NET, learn the latest released versions; .Net 3.5, C#3.0, ASP.NET 3.5. The next version is just around the corner, but none of the training material out there references it, so go with the 3.5 version.

Off the top of my head, I'd suggest something like this. Other people will chime in, too;

  1. Get yourself some development software; Microsoft have a range of free tools you can use to learn at http://www.microsoft.com/express/Windows so as long as you have a Windows PC you don't have to spend anything.
  2. Microsoft also offer a lot of documentation -- and I mean a lot. If you prefer video, there's video. If you prefer written, there's written. It's overwhelming, even for me, and I've been at it years ;). Head here first: http://www.asp.net/ and there's a step-by-step video course to putting together web sites using ASP.NET. There's also lots at msdn.microsoft.com.
  3. Don't be afraid to post back here with obvious questions.
Steve Cooper
A: 

The other path entirely is to head into UNIX land. Get a Mac or put Linux on a PC, and start learning how to do some things with some of the common web application frameworks; Django, Tomcat, Rails, and friends. That means learning one or more of Python, Ruby, Java or Scala.

In either case, learn about the whole NOSQL concept. Learn what REST means and how to apply it.

Andrew McGregor
There is no need to get a Mac or Linux to use those languages and tools - they all run on Windows just fine. But the technologies you mention are all from the Web 1.0 era and will not translate to RIA or cloud computing very well, if at all. If Angela is trying to move forward from mainframe technology, why go only half way?
Ray Burns
I want to clarify my comment above: I was focusing on the fact that the Django/Tomcat/Rails way of doing things is outdated, not that the languages themselves can't be used with new RIA technologies. Actually three of the languages listed (Scala, Ruby and Python) have advanced features such as currying that might make them sensible candidates for second or third languages. However user community support for advanced UI and RIA development (eg WPF, Silverlight) on these languages is nearly nonexistent, so for a beginner this year C# is definitely better.
Ray Burns
Well, maybe so. But then, plugin-based RIA is doomed, and I think skipping those techniques entirely is a good idea. And I think I was meaning to say that perhaps looking more at a systems programming angle rather than flavour of the month web technology could be a good plan... that was probably the wrong way to say it.
Andrew McGregor
Also, of course, Web 2.0 is an attitude, not a technology.
Andrew McGregor
A: 

Nowadays C# is unquestionably the place to start.

  • VB.NET is not that bad of a language, but the syntax is so different from all other popular languages that skill don't transfer very well.
  • Java is incredibly limited, both in its capabilities and in its ability to talk to other languages. It also requires you to use many "anti-patterns" when programming because it is missing fundamental features such as properties, delegates and true generics.
  • Dynamic languages like Ruby, Python, or PHP are not as bad as Java, but will not help you learn many fundamental programming concepts as with C#, plus they are harder for a beginner to use because they don't have Intellisense, etc.
  • Functional languages like ML, F# and Haskell are real mind-benders. They are good languages to learn to be well-rounded but are not for the faint of heart.

I would start by taking a C# class at your local community college, then picking up some books on it and reading for a while. This will give you familiarity with both the language and the NET Framework.

Once you have mastered the language itself and understand how to use some portions of the NET Framework, I would download the source code for some simple WPF (or Silverlight) applications and explore them to see how they work. WPF would be a better choice to start with than ASP.NET because ASP.NET introduces a ton of extra complexity in dealing with postbacks, HTML and JavaScript that don't exist at all in WPF. Also, it appears that the browser-base applications of the future will be Rich Internet Applications (RIAs), all of which use a mechanism much closer to WPF/Silverlight than ASP.NET. I would start with WPF before Silverlight simply because when you're unsandboxed you can learn the user interface technology by itself without having to learn all the complexities introduced by the sandbox and the need to access databases on the server.

Only after doing all of this would I dive into architecting an n-tiered application. Again I would look at many examples before doing one yourself. Pick simple ones and emulate those. Many you will find are far over-engineered.

Ray Burns