Microsoft has suggested that companies who can’t find programmers skilled in .Net should consider retraining their Java experts. Mark Quirk, Microsoft UK’s head of technology for development and platforms, admitted on Monday that there aren’t enough developers in the market who can help companies migrate to .Net.
Is it a real skills shortage or are they mad that they cant stack the deck against the competition by saying the is available skillsets for .Net. Maybe if they stopped moving the target on the .NET api more people would settle on it.
Seems to me that the lack of skills shows a lack of interest in moving to .Net.
MS can sell .net to the customers, but it looks like they are having a hard time selling to the developers.
I absolutely agree here. I’ve long been suspicious when companies want to hire you for a full time job and honestly ask if you have experience with the platform:
If you’re going to spend your whole life programming on the platform why do you need some mediocre experience you’re half lying about to start? Are companies so cheap that they can’t afford the 6 months it’ll take you to learn it as you go and work on the project? I can understand being in a hurry sometimes, and I can understand wanting people with experience in something related: But saying “if you don’t know c#, we don’t want you” is just management ignorance.
Some of their best candidates will be lost because they just hadn’t used that language before. Others may know it and walk because they know they can find a place with smarter management.
But yea, I like to see Microsoft slapping them upside the head and saying: “Use the devs you’ve got, they can learn stupid.” Not in so many words, but still. They even suggest using your VB6 developers, who have two things going against them in this situation:
1.) They’re VB6 programmers.
2.) They’re mad at Microsoft so they may not be happy to jump on .net; if they’re smart they’ll learn from their deprecated code and ask the company to move to something that can be supported after it’s end-of-lifed too early.
Besides all that: .Net is extremely new. Java has been around for over a decade now and it’s just starting to pick up steam in academia. It took c++ something like 10 years to do it as well. Sheesh Microsoft, wait your turn, you get to be the introductory programming course fad in 2010 ok?
“Are companies so cheap that they can’t afford the 6 months it’ll take you to learn it as you go and work on the project? I can understand being in a hurry sometimes, and I can understand wanting people with experience in something related: But saying “if you don’t know c#, we don’t want you” is just management ignorance.”
“Sonoma Jet Center at the Sonoma County Airport in Santa Rosa, CA is looking for an energetic Airframe and Powerplant licensed mechanic with a strong background in electronics and avionics. Job description includes, but is not limited to working on warbirds, warbird restoration, avionics installations, general aviation and some corporate aviation.”
“Sonoma Jet Center at the Sonoma County Airport in Santa Rosa, CA is looking for an energetic Airframe and Powerplant licensed mechanic with a strong background in electronics and avionics. Job description includes, but is not limited to working on warbirds, warbird restoration, avionics installations, general aviation and some corporate aviation.”
…and your point is?
Perhaps that sometimes when someone asks for fifteen years of experience at something, it’s not because they don’t realize the language in question hasn’t had commercial adoption for fifteen years. Sometimes people really are looking to hire people that know what they’re doing already, instead of paying them to fake it until they have a feel for what they’re doing.
Companies will not hire entry level; that is why there is a skill shortage. .NET isn’t even that hard to learn. What companies want is senior developers who will work at low low wages/salary’s.
I agree with the first part because of my experience on the hunt for jobs. I’ll also add another point.
The fact is that the move from ASP/VB6 to .net is a painful one (again from experience). I can see why many MS developers would be hesitant to switch. Factor in all the FUD about this platform being spread by the anti-MS crowd and you can really see the holdup. Also add that it is difficult to learn without Visual Studio’s code completion and the insane cost of VS, MS may be able to remidy this with the express suite though.
Java coders are not likely to switch, if they have used the language and available DEs more than a few months and stuck with it then that will be thier comfortable fit, you can’t expect people to like something that has that much difference from what they are comfortable with. What agrivates me is when a Java coder plays with .net for three days, never learns the framework (which is far more important the language syntax), and then declares the language to be inferior. I have the same problem with VB6 coders who can’t make .net do something the way they used to do it so they whine about it instead of learning the proper use of OOP. It takes time to fully grasp the scope of .net and learn to make use of its features. [/rant]
>>”lso add that it is difficult to learn without Visual Studio’s code completion and the insane cost of VS”
for 1 year, there is no excuse..
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=126606&SiteID…
http://msdn.microsoft.com/vstudio/express/support/install/
I was asked if I wanted to cross train in to C# from Java and a flatly refused. I simply wasn’t interested. Despite what the Mono team wish C# is really designed to run on Windows and I didn’t want to work in an environment where my code wasn’t run in a Unix like system.
More recently I have looked in to the C# language and I simply find it a complete mess. There are pointless keywords such as virtual and override, confusing keywords such as sealed and, the ultimate poor feature, “properties”.
An article I read suggested that these “properties” make C# more readable due to not need to explicitly call the get() and set() methods of an object. However to me it simply looked like the program was accessing a public member variable within the object. More readable? Absolutely not.
C# copies Java syntax and approach but then also introduces a load of pitfalls from C++. And WHY ON EARTH would you want to make use of “unsafe” code within a managed code language? It’s like fitting an extremely expensive burgler alarm on your house and then leaving all the doors open.
You’re comments about C# seems over-picky. Perhaps if you looked a bit closer you’d understand why there is functionality like virtual and override and then realize that it’s actually a bonus, not a problem.
I’m surprised that you consifer properties to be a poor feature. They make code much more readable. Let’s face it, it’s a feature that Java should have had years ago. If you find that they’re not very readable then perhaps you should take a look at your reading level….!!!
The unsafe aspect is also very useful if you need get down to the metal. You can’t run unsafe code in an untrusted environment, so there is protection there if you need it.
Properties aren’t worth arguing over. I don’t really see any conclusive reason to go with properties or set/get and I see no reason to love or hate them.
My preference has been set/get because it’s hiding less functionality in the compiler and showing more of how something is actually working (ie, instead of having the compiler somehow magically know what function to call in an assign and what to call otherwise the programmer explicitly calls the logical one).
“You can’t run unsafe code in an untrusted environment, so there is protection there if you need it.”
That’s the sort of talk that scares me. I’d actually rather see Microsoft do something like psyco, where you jit compile to native code for functions that need to be quick. You won’t quite get all you could from c; but at least you won’t have to switch languages.
Maybe I should read up on this trusted environment stuff… Maybe it all makes sense, but the terminology reminds me of sitting up for 12 hours debugging something only to find it wasn’t running cause the system decided I wasn’t in a “trusted environment.” Or, the same thing with a customer.
“I’m surprised that you consifer properties to be a poor feature. They make code much more readable. Let’s face it, it’s a feature that Java should have had years ago. If you find that they’re not very readable then perhaps you should take a look at your reading level….!!!”
Of the following two code lines tell me which is a public member varaible and which is a set method that could also contain intricate business logic,
counterparty.usdAmount = 5;
counterparty.usdAmount = 5;
That’s right. You can’t. How about now,
counterparty.usdAmount = 5;
counterparty.setUsdAmount(5);
>counterparty.usdAmount = 5;
vs.
>counterparty.setUsdAmount(5);
Hey, but you saved typing TWO WHOLE CHARACTERS and only shackled yourself to the Windows platform in the process.
Sounds like a good tradeoff. 😉
Congratulations, you missed the entire point of my post.
>Congratulations, you missed the entire point of my post.
In what way? That MS made a mistake by using the same syntax for property access as for member access? Thats obvious.
I was making a joke
Of the following two code lines tell me which is a public member varaible and which is a set method that could also contain intricate business logic,
counterparty.usdAmount = 5;
counterparty.usdAmount = 5;
That’s right. You can’t. How about now,
counterparty.usdAmount = 5;
counterparty.setUsdAmount(5);
<shake-head-in-disbelief>
Do you have a lot of public member variables in your classes? If so then perhaps you should learn to stop doing so as it’s not good practise… 😉
</shake-head-in-disbelief>
The nice thing about properties is that is convenient to access information as if it’s a member variable even when it isn’t. Sure, they’re a syntactical convenice, but there’s nothing wrong with that. I can’t help feeling you’re being a bit pedantic and just having a bashat C# for the hell of it. All the signs of a classic Microsoft basher..!
> Of the following two code lines tell me which is a
> public member varaible and which is a set method that
> could also contain intricate business logic,
> counterparty.usdAmount = 5;
> counterparty.usdAmount = 5;
In my code it will always be a property. It will never be a public variable. My objects don’t expose public member variables (Yours does!!!???). If you actually work with other people and not by yourself, or if you work with OOP techniques you would know why.
If you are really an OO Programmer you would program objects. Your object would probably may be used by another person. So you can never assume that you are assigning to a variable. You must always assume there’s logic, even if all the logic is to assign to an internal variable.
Delphi does a mix of these two ways (haven’t programmed in Delphi in 4,5 years, must admit).
Internally you have both functions. GetPropertyX and SetPropertyX. But in the interface you define the public property PropertyX and define that it should use GetPropertyX for get and SetPropertyX for set. This is the best of both worlds. For the internals of your object is very clear, and wont confuse with any internal variable. For the interface of your object, and for the programmers using your code it´s a single property. Very practical. The downside is that you have more things to type.
Personaly I like in order:
1-The delphi way
2-C# way
3-Java way.
Edited 2005-11-09 20:59
Please discontinue this C# Drools / Java Rules thread and get back to the shortage of .NET developers.
That’s sort of the point of the property syntax. counterparty.setUsdAmount(5) doesn’t tell me anything about what’s being performed, either. I don’t know the implementation, its space or runtime complexity, or what exceptions it might throw simply from looking at that. Is it just some function that sets a private field to 5? After all you probably don’t want to expose the internal implementation of your class as its interface, so you’re creating these methods to encapsulate an implementation that might change at some point, right? Even though in most cases it probably never does, how many codebases have rows and rows of accessor/mutator method pairs to provide encapsulation for private fields? A whole lot, right? So then when you have lots of setFoo methods because assigning to public fields in a class is teh evilz what does setFoo tell you, really? Not a lot.
The property syntax is overrated syntactic sugar for invoking methods that are created anyway, but they’re hardly all that dangerous.
If you write a really well-designed application the user of the object who is manipulate the value of the property or public field doesn’t know about the implementation of the object. The object is a black box, if I want I can change the object implemetation and change the public field to property without any changes in the other sources. And IMHO it is a very good thing. This dispute like when the old DOS programmers complained because they can’t manipulate the hardware directly under windows NT and linux. IMHO the objects are black boxes and the properties are helps hide the implementation and makes your coder simplier and easier to read.
Changing a public field to a public property is not binary compatible. Don’t use public fields.
> I’m surprised that you consifer properties to be a
> poor feature. They make code much more readable.
How is this (Java):
. . int size ;
. . public int getSize() { return size; }
. . public void setSize(int value) { size = value; }
much less readable than this (C#):
. . int size ;
. . public int Size {
. . . . get {return size; }
. . . . set {size = value; }
. . }
This first is readable by anyone who knows any C++-like object oriented language (C++, Java, PHP, C#, Perl, …). The latter is only readable by C# users.
One of the key principles of Java comes from C, which states simply that if it can be implemented in the library or by simple convention, do so. Each feature carries a cost in language complexity and in future compatibility. In the future, the demand for the feature may disappear or it may be implemented in a far better way. When that happens, libraries are easy to obsolete but language features are not, so you’re stuck with dead wood. C++ isn’t exactly the model for this principle, but even Bjarne Stroustrup agrees (http://www.research.att.com/~bs/devXinterview.html):
“C++ is much better than the caricatures of it offered by some overenthusiastic proponents of competing languages. In particular, I think that many “other features” are oversold. Often, they are easy to emulate in C++. Conversely, new languages have a tendency to stress new specific features at the expense of generality. This is one of the reasons that the size and complexity of a new language tend to triple in size between its initial launch and its acceptance as a useful tool for general computing.”
properties – it’s readable when you use it not on definition/decalaration. I personally don’t think you are a programmer.
and last but not least, as far as language goes C# beats Java all the way down. And when we speak about API, comparing complexity of J2EE with .NET 2.0 eh, only insane ppl would chose Java.
gentle
“properties – it’s readable when you use it not on definition/decalaration. I personally don’t think you are a programmer.”
Spoken like a true non-programmer.
If by “beats all the way down” you mean “has lots of fancy syntactical sugar which makes my code more obscure” , well I guess your right.
Wait till you see .NET 3.0!
If by “beats all the way down” you mean “has lots of fancy syntactical sugar which makes my code more obscure” , well I guess your right.
It’s interesting that you mention about making your code “more obscure”. Just how bad is your (Java?) code right now..? Perhaps you should consider a career change 🙂
Seriously though, I’m really starting to worry about this guy. Perhaps someone should start a petition to not let him anywhere near a compiler/interpreter…
>It’s interesting that you mention about making your code
>more obscure”. Just how bad is your (Java?) code right
>now..? Perhaps you should consider a career change 🙂
When I wrote “my code”, I was commenting as the original poster who seems to think that fancy syntactic sugar make one language “beat all the way down” another language.
And my code is exceptional. I focus on readability and simplicity. I’d prefer the language stay out of the way. Thanks for asking.
And my code is exceptional
And so modest about it as well! We’re lucky you’re here to blow your own trumpet 🙂
For someone with such exceptional talents I’m surprised you find something as simple as properties so confusing…
And now the thread goes on…
For someone with such exceptional talents I’m surprised you find something as simple as properties so confusing…
Here’s a shocker. Don’t like properties, don’t use them! Just use setXXX() and getXXX() function. Wow!
>Here’s a shocker. Don’t like properties, don’t use
>them! Just use setXXX() and getXXX() function. Wow!
I guess some of you guys only work on single person projects and have never been asked to take over maintenance of someone else’s codebase.
I guess some of you guys only work on single person projects and have never been asked to take over maintenance of someone else’s codebase.
I have definitely taken over some of that crappy code you talk about. Certainly in the VB world it seems to absolutely abound! However, I don’t think Properties will wind up being part of your maintenance nightmare (though I agree they are awfully klduged). There’s far worse things in them there code hills!
>I don’t think Properties will wind up being part of
>your maintenance nightmare
Sure but combine Properties with operator overloading, generics, nullable types, anonymous methods, lambda expressions, *EEK* implicitely typed local variables, and anonymous types and Chef Boyardee is going to have plenty of ingredients to make you a big ol’ batch of spagetti.
Of course unchecked exceptions help as well to ramp up the overall unpredictability of the system.
And with all this I’m stuck on Windows.
Oh, I don’t like embedded SQL either.
Oh, I don’t like embedded SQL either.
I have to agree with you there! VB guys (and to be honest, many other language devs) tend to have AD-Hoc queries everywhere!
>So modest about it as well! We’re lucky you’re here to
>blow your own trumpet 🙂
Hey… you asked the question.
>For someone with such exceptional talents I’m
>surprised you find something as simple as properties
>so confusing…
No I don’t find them confusing, I just put them in the “not worth it” category as in “its not worth it to shackle myself to Microsoft for a language feature that is little more than a compiler macro sitting a top of generated getter and setter methods”.
What I do find confusing (or more accurately annoying) is some of the crap, unreadable, undocumented codebases I’ve been asked to take over and support at various points in my career. I’d prefer not to give incompetent developer’s more “neato” language features with which they can generate even more obtuse code.
> properties – it’s readable when you use it not on
> definition/decalaration.
I didn’t state that properties were not readable. I was refuting the argument that the Java/C++/PHP/etc approach was “much less readable”.
BTW, using C# properties *are* less readable for programmers than the function call. Lay people prefer that all the complexity be hidden because 90% of the time, you don’t have to worry about it. Programmers prefer that things are made explicit because that missing 10% is the source of most frustrations.
When you’re looking at someone else’s code that has setters and getters, you know that variables are variables and functions are functions. Variables are generally problem free (or at least fail predictably), whereas functions may have latency issues (if they get their values across the network) or they may generate exceptions or have other issues. Properties confuse this fundamental 80/20 rule issue and aren’t any more readable than getters/setters. Personally, I see C# is the new PL/1. PL/1 tried to be “a better FORTRAN” than FORTRAN and “a better COBOL” than COBOL. It succeeded in this, but the resulting complexity drowned the language. Programmers generally prefer KISS.
> I personally don’t think you are a programmer.
Really? I started coding back in the mid 80s and got my first professional programmering job in 1993 and have gone through most popular languages from assembler to the web programming. I think you might be a bit mistaken.
> And when we speak about API, comparing complexity of
> J2EE with .NET 2.0 eh, only insane ppl would chose Java.
When .NET has all the features of J2EE, we’ll talk. As a side not, *nobody* uses all of J2EE in the same way that *nobody* uses all of the Internet Protocol standard. It’s just a set of standards that may be independently implemented by various companies and opens source projects. Competition and choice is one of the reasons why Java’s ecosystem is so vibrant.
> Programmers prefer that things are made explicit
> because that missing 10% is the source of most
> frustrations.
Hah. that explains the much larger adoption of Ada than any artificial language previously constructed by man!
I find that most programmers prefer things to be as general and automatic as possible. When they choose statically-typed languages they’re usually the weak ones (though to your credit they’re usually the ones that require type annotations everywhere), or they eschew functionality that is explicit (and complex) like the “C++ programmer” that hates him some template error messages something fierce and them thar templates that make ’em! Or the Java programmer that prefers him some of that thar automagic overriding of inherited methods, or implicitly constant instances (rather than explicit constant references). Then there are GUI builders that generate forms or code that the person has no idea what is explicitly created or how, and doesn’t care. Or the overloading of arithmetic operators in the context of mixed numeric types. Not many folks look at O’Caml and say, I sure wish Java made me use different operators to add pairs of floats and pairs of integers along with explicit casts. Then of course there’s finally the adoption of automatic memory management (and when people have to explicitly use a limited resource like a graphics context or file descriptor which requires manual release that’s just damn annoyin’!) in the mainstream (though not so much on the client-side of things).
Then of course there’s just polymorphism in general. Nothing says explicit like, “I don’t care what this object is as long as it implements this interface.”
Or since Java and C# lack meaningful type-safe variants, there’s the wonder that is the superfluous runtime-checked type contract, because I’ll settle for IComparable if you don’t have you no IComparable<T>, but my type system has no way of expressing that without forcing you to create boilerplate classes and creating them by hand! I guess we’ll just throw an exception at runtime if you don’t happen to guess which interfaces you’re supposed to implement.
Now that’s explicit for you.
All of this talk about what programmers find easy to understand is a crock. People understand what they understand. I have no difficulty processing the concept of properties. They aren’t less readable to me, and I don’t even like C#.
“Despite what the Mono team wish C# is really designed to run on Windows and I didn’t want to work in an environment where my code wasn’t run in a Unix like system. ”
That’s just BS, sorry. The Mono team doesn’t “wish” something, they’re doing it, and quite well I might add. I had no problems with Mono, using exclusively “Unix” systems (GNU/Linux).
Most devs I know only do .net because they sometimes have to, many Java devs would not switch over in their dreams, unless forced by management because they know that they would lose a lot of things (real cross platform portability being among the most important aspects)
well, seems like Microsoft got the clue, and now tries to convince the management to force devs into .Net!
Java Swing is the most popular toolkit in North America.
http://www.javalobby.org/java/forums/t52622.html
“Java Swing with 47% use, has surpassed WinForms as the dominant GUI development toolkit, an increase of 27% since fall 2004.”
Microsofties feeling the pain because there are not enough developers around for their hot new .Net technology? Oh dear dear me, couldn’t have happened to a nicer bunch of guys.
“Microsoft has suggested that companies who can’t find programmers skilled in .Net should consider retraining their Java experts.”*
How about getting all those VB programmers to switch?
*I suppose we shouldn’t be surprised that that would be the first idea out of their mouth. MS doing anything to knife the Java baby.
How about getting all those VB programmers to switch?
That is exactly the problem and why there is a shortage in the first place. I am a windows developer who had done VB6, .NET (C# and VB.NEt) and had no problem switching from VB6 to .NET. However, this is because I am also a Visual C++ and Java developer. VB6 was just one of the tools I used. Many VB6 developers (and there are/were a ton of them) only know classic VB. The jump from VB6 to VB.Net would be similar to jumping from classic Dos programming in C to Windows programming with Visual C++ (I had a boss hire someone for this exact situiation. Needless to say, the transition didn’t happen!). In a way, Microsoft really threw a curveball at its classic VB people. These developers had been basically coding the same manner of application since early VB days (at least since VB4). If you code for .NET, you are no longer doing Window’s programming, you are coding for a virtual machine using an entirely different API. This is why the transition from Java to .NET would be easier for most people than the transition from VB6. Few people, especially managers are aware of this difficulty. I have seen people try to jump from Access programming (with Access Forms) to VB.Net. They were truly over-whelmed, but their managers couldn’t figure out why. To a manager, VB is VB even if it ends with .NET!
A properly educated developer should be able to switch programming paradigms given some time.
Was he a bum, or was management too cheap to give him time to adjust?
I see no reason why a VB6 developer couldn’t learn .net. Yes, it’d be 10 times harder than it would be for a Java developer; but we’re still only talking about lost weeks/months instead of days/weeks.
I went from VB6/PHP (non OO) to using c++/Java in a matter of months just on my personal time.
C++ also doesn’t necessarily force you to use OO constructs. I know Java does, does c# force you to?
A properly educated developer should be able to switch programming paradigms given some time.
Was he a bum, or was management too cheap to give him time to adjust?
I don’t think bum is the right word! I think it has to do with the VB _management_ mindset. It might sound goofy, but I think the word Basic in VB throws a lot of people off. They were under the impression that VB was “Basic” and thus all kinds of people can do it. A lot of VB people are not formally trained programmers (I’m not talking degrees, just classes and training). In places I have worked. a lot of the VB people came from other departments, where they were techincally minded. They were basically told “you’re now a programmer, learn!” I think this why some of the most amazing spaghetti code on earth is written by this group. In short, I believe all programmer should start with something more structured, and _then_ move to a RAD environment like VB. You can write really good programs in VB, but only if you approach it in a structured manner. I believe this is also true in some web developer realms. Many people work as web developers because of there innate curiousity for all things web, yet they have little programmer training. Thus, things like indenting your code, variable naming conventions, etc. are foreign in some circles. I’ve had to work on large ASP projects where all the HTML, Javascript and VBScript were all lumped togther in a big unindented, poorly-named pile. Thus, I think you could look at the transition to .NET as a kind of filter. For those ASP and VB6 folks who were developers first, it is not a big deal. For all of those who sold into the lure of “Working the Gui” to get things done, they are really hurting now.
“We recognise that this is becoming very popular, even faster than even we would have dreamed.”
…and yet there is a shortage of skilled developers. Assuming the statement is true in any sense, it suggests that .NET is very popular with PHB’s, not coders.
I tried .NET and didn’t like it anyway ( and I’m not a big Java fan either), but if I wanted a “modern” language, there are a lot of others I’d far rather be using.
I think Microsoft has give .Net a very childish approach and one who works on Java will not wish to work on .net simply because that will affect the way they approach to their problems.
As a long time Java developer, I was hesitant about .NET at first as well. Just like ‘Refused to cross train’ I thought that C#’s ‘improvements’ were not very impressive after skimming through code examples.
I held out until I got involved in some open source development that actually used C# (Mono). After getting past some initial confusion (despite what anyone tells you–C# *is* different than Java and employs some very different design patterns and ideas) I found a very well thought-out and exciting development platform. All of the unimpressive ‘improvements’ made a lot more sense, and in fact–today I find myself choosing C# over Java almost every time I start a new project.
I’m not sure what is causing the lack of interest form Java-based shops, but I suspect it has something to do with the ‘bubble’ of overpaid Java developers that’s out there right now.
>I’m not sure what is causing the lack of interest form
>Java-based shops, but I suspect it has something to do
>with the ‘bubble’ of overpaid Java developers that’s
>out there right now.
I suspect that the lack of interest from Java-based shops has alot more to do with the desire to avoid lock-in to a single vendor’s platform.
I suspect that the lack of interest from Java develpers comes from:
1) the fact that their are a lot more Java jobs out there (see above)
2) the fact that people want to have broad development experience which is applicable to many platforms
3) the fact that many developers have been burned by Microsoft’s crappy APIs and environments before and have no interest in volunteering for more punishment (see Win16, Win32, COM, MFC).
A platform-dependent non-portable proprietary Java clone just isn’t very compelling unless you’ve already drunk the MS kool-aid
>I’m not sure what is causing the lack of interest form Java-based shops, but I suspect it has something to do with the ‘bubble’ of overpaid Java developers that’s out there right now.
Correct. The moment they switch to .NET, or anything else for that matter, they won’t be able to BS their way around anymore and create a consultation dependency lock-in.
is mostly caused by pushing aside a really cross platform development environment in favor of a Microsoft dominated development environment which lacks certain cross platform capabilities and the ones in existence are in a legal limbo. So C# is mostly uninteresting unless you are a Microsoft shop anyway or you tie yourself to Gnome and whatever APIs are there which are not Microsoft or ECMA based.
Also have in mind that many who switched to java years ago, are Microsoft development fugitives (I used to program Win32 stuff and basically have fled from them sort of, reason, awful apis, specifications which were closer to fairy tales, often hyped technologies which did not even work but were sold, you constantly ran into closed APIs which you had to reverse engineer to get expected results or to find out how they differed from the specs the list is even longer)
And the incentive to Switch to C# due to language perspectives is not too high, the syntax is too similar to gain a lot the few advantages are too few to justify the platform lockin you run into.
Before I would swith unless I have to, to C# I´d rather move to Ruby or Smalltalk where you can gain much more on a language perspective, than moving over from Java to its sibling C#, which was just invented because Microft could not take over java in the first place.
I’m really annoyed that I can’t find a related news piece I read somewhere else not a week ago.
According to that, .Net skills demand was still quite low, which kind of puts a certain perspective on this. Because, if there’s not much demand, there’s not much point in having that knowledge (except for the knowledge in itself, of course).
With Java & LAMP who would want to learn .NET?
Train our Java developers to use C# should we?
How ’bouts we stop using .NET and hire more Java programmers? 😉
*ducks*
As a 3rd yr student in a coop program, I have had nothing but .NET, C#, and MS(related technologies) offers. Its shocking how many shops go with .NET. I absolutely refused to do any sort of MS dev, but I just can’t escape it?!? I would love to program in Java, but it seems like a lot of major corps out there aren’t looking for Java developers. I too find this odd, seems like .NET is an obvious attraction to PHB’s then it is to developers. Hmmm… when will they ever clue in?
After doing java for 4 years, and now C# for 3 years I know what part of the problem is..
C#/.Net just is not fun to progrmam. Yes, it looks elegant, but that doesn’t matter because for 99% of the coding jobs its simply connecting one component to another component. There isn’t a lot of brainwork, and there’s definitely no sense of accomplishment.
With .Net development you are the guy in the doll factory who attaches the prefabricated doll heads to the prefabricated doll torso. With other languages, you get to develop a completely different doll, or at a mimimum a different doll head.
What am I trying to say? .Net programming is
1. Not challenging
2. Not satisfying
3. Not fun, nor entertaining
Why would I want to code with that?
“What am I trying to say? .Net programming is
1. Not challenging
2. Not satisfying
3. Not fun, nor entertaining”
I suppose, somewere in there is: solve the paying customer’s ‘boring’ problems.
Since Bill says Windows TCO is lower than Linux because you don’t have to “retrain anybody”, I guess this sorta screws up that concept a bit.
In fact, everybody has to be “retrained” (or more likely, trained from scatch) for something in this business just about every day,I find it hard to give credence to the notion that “retraining” is that big of an issue.
Even for secretaries using Word who have to learn OpenOffice. Most companies that have actually DONE that switch have found it wasn’t that big a deal – except for Excel power users who love their macros – which is bad news for a company anyway, since mission-critical code is tied up in undocumented, uncontrolled spreadsheets.
I saw this sort of thing while supporting BofA’s Microstar cash management package back in the 80’s – numerous companies running fifty linked spreadsheets with no documentation – spreadsheets that controlled the perception of a huge corporation’s cash balance in the hundreds of millions of dollars! Bad news – especially when they called us and said their hard disk crashed and they haven’t done a backup in a month! I spent seven and a half hours on the phone with one customer recovering their data…
Office suite lock-in is deadly. Using office suites to handle critical business data that should belong in a database with a query/reporting tool is also deadly.
I must admit, I’ve not seen quite as much migration to .NET compared to other technologies. An awful lot of companies I’ve dealt with are sticking with their existing tech for a while now until .NET matures.
When job-hunting recently, I found Java jobs far outnumbered .NET or even, say, classic ASP jobs.
No matter how good .NET is or isn’t, the underlying platform is simply not up to snuff against Linux and Unix. Windows still scales poorly across multiple processors and does not utilize large amounts of ram very well. Add in Microsoft lock-in and alot of large corporations just aren’t interested.
Microsoft has suggested that companies who can’t find programmers skilled in .Net should consider retraining their Java experts.
I find it refreshing that they would say something like that. Their tech can’t meet the needs of some of their customers due to lack of developers, so they say it’s better to keep those developers they already have despite the fact that said developers are trained to work with MS’s competitor’s product.
Im using Java over C# because Java works in Linux too. And all code i have produced, all skills i have got, all i can reuse in Linux.
In work i use Windows, in home i have used Linux already 5 years. Of course i have heard about Mono, it is half ready and lacks tools.
All java stuff that works in Windows i can use in Linux, i have run Intellij IDEA, Eclipse, Netbeans, jboss, tomcat, junit, ant, cruise control, findugs, …, name it! Everything works in Linux! You cant see this compatibility between .Net and Mono. How do you develop for Mono at all? Using Visual Studio in Windows and then Monodevelop in Linux? Not good solution for me, i want exactly same tools for Linux and Windows!
At this moment I develop a multiplatform application with Kylix and Delphi7. But the 90% of users are uses windows, only ~10% uses linux. And there are far more support problems with linux, many distributions with many different libraries, many different and always altering file/directory permissions different desktops, etc.
In this case the platform-independence is not too important to me.
>What am I trying to say? .Net programming is
>1. Not challenging
>2. Not satisfying
>3. Not fun, nor entertaining
>Why would I want to code with that?
Becuase YOU’RE not pushing the evelope? Just because you can’t think more deeply doesn’t mean the rest of the can’t.
Most business-related software doesn’t exactly consist of interesting problems.
The original drawcard of .NET compared to Java was the usability edge of the VS IDE. Over the last few years Java IDEs have improved dramatically, so much so that they are better than VS in a number of areas e.g. Refactoring. The best part is that the most popular Java tools (Netbeans and Eclipse) are free. No need to download a crippled free version of VS.NET. Just look at some of the latest Java tools:
Netbeans 5.0 beta (free):
http://www.netbeans.info/downloads/download.php?type=5.0b
Studio Creator 2 early access (commercial):
http://developers.sun.com/prodtech/javatools/jscreator/ea/jsc2/inde…
Eclipse 3.1 (free):
http://www.eclipse.org
IDEA (commercial):
http://www.jetbrains.com/idea/
This tools are very impressive, but I don’t want to use different tool for every application. Netbeans is very nice if you want to create desktop applications, but there is no any visual web form editor. Studio creator is very nice, but only if you want to create web application. The Eclipse is a very good IDE if you want to create a server without any interaction with the word, but the Visual Editor plugin is a joke, the web development support is similar to the Netbeans but with more complex setup. IDEA is seems similar to Eclipse but for money. And the free tools doesn’t give me data-bound controls. The commercials, like Studio Creator, JBuilder, Oracle Studio give me this features but all of this systems are use different, incompatible data controls. At this moment the Oracle seems better with ADF, but the ADF seems to too cheap. On the other hand the Visual Studio seems a relative good deal, not too expensive and give me enought service for it’s price. Not 100% perfect, the unit test support and many good thing is available only the Team Suite, the generated code only useable under windows, but it is not a perfect world.
Retrain their Java experts for which reason?