English 中文(简体)
How do I transition from mainframe programmer to client server programmer?
原标题:

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!

问题回答

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.

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.

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

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.

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.

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.

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.





相关问题
Manually implementing high performance algorithms in .NET

As a learning experience I recently tried implementing Quicksort with 3 way partitioning in C#. Apart from needing to add an extra range check on the left/right variables before the recursive call, ...

Anyone feel like passing it forward?

I m the only developer in my company, and am getting along well as an autodidact, but I know I m missing out on the education one gets from working with and having code reviewed by more senior devs. ...

How do I compare two decimals to 10 decimal places?

I m using decimal type (.net), and I want to see if two numbers are equal. But I only want to be accurate to 10 decimal places. For example take these three numbers. I want them all to be equal. 0....

Exception practices when creating a SynchronizationContext?

I m creating an STA version of the SynchronizationContext for use in Windows Workflow 4.0. I m wondering what to do about exceptions when Post-ing callbacks. The SynchronizationContext can be used ...

Show running instance in single instance application

I am building an application with C#. I managed to turn this into a single instance application by checking if the same process is already running. Process[] pname = Process.GetProcessesByName("...

How to combine DataTrigger and EventTrigger?

NOTE I have asked the related question (with an accepted answer): How to combine DataTrigger and Trigger? I think I need to combine an EventTrigger and a DataTrigger to achieve what I m after: when ...

热门标签