The Inquisitive Coder – Davy Brion’s Blog

Trying to walk that thin line between intelligence and ignorance

At This Point, I’d Prefer Java Developers Over .NET Developers

Posted by Davy Brion on April 27th, 2009

I had to do 5 technical screenings today. 4 of these guys where Java developers, one of them a .NET developer. A couple of weeks ago, i also had to screen a Java developer. I’m gonna be blunt about this: at this point, i would much rather hire a Java developer than a .NET developer.

Let me just summarize these screenings to illustrate my point. Out of the 5 java developers i had to screen recently, 4 of them were very familiar with topics such as Inversion Of Control, Dependency Injection, Object Relational Mapping, and Aspect Oriented Programming. One of them was a ‘junior’ developer with about 2 years of experience, and we actually talked about the differences between compile time AOP weaving vs runtime weaving, even going into the differences between dynamic proxies and more traditional proxies to achieve AOP and how that would work and how it can be tied into your IOC container. This wasn’t just me talking about this stuff… i was leading into certain things and he was filling in the blanks. During a technical screening. With a guy who only has 2 years of experience on his resume.

The other 3 java developers i screened where pretty impressive as well. These guys truly realized the benefits of using an Inversion Of Control container, of using Dependency Injection and felt it was only natural to use an ORM when working on typical business applications. And you know what the really cool part about all this was? All 4 of those java developers that impressed me wanted to learn more about TDD, and writing automated tests in general. They hadn’t really experienced Continuous Integration yet. They wanted to improve their TDD skills. They genuinely seemed to care about the fact that their TDD skills weren’t as well-rounded yet as they could be. In case you haven’t noticed, these people truly believe in DI and IOC without even getting into the testability aspect.

In the .NET world however, most people who get into DI and IOC usually do it for testing purposes, only to move on to the other benefits of it later on. And that is if you’re lucky enough to find a .NET developer who even cares about these things. Generally speaking, you should consider yourself lucky if you get to screen a .NET developer who’s interested in these ‘alternative’ practices (in the .NET universe anyway), let alone one who actually has experience with them. The odds of finding .NET developers like this in interviews are so incredibly low it’s not even funny anymore. It’s downright pathetic actually. And then you get 3 of these guys in one day, though they are java developers. 4 of them if you count the one from a few weeks ago. These numbers don’t truly mean anything, but still… i think it’s worth thinking about.

Now, i’m not going to say that Java developers are by definition better than .NET developers. But i really do think that, generally speaking, they know a lot more about proper design principles and coding practices than your average .NET developer.

97 Responses to “At This Point, I’d Prefer Java Developers Over .NET Developers”

  1. Michel Grootjans Says:

    Same experience here. As a community, the .net world has a lot of catching up to do.

  2. virtualstaticvoid Says:

    Same here too… although I think MS is partly to blame as the general attitude towards developers is to protect them.
    Your post Educate Developers Instead Of Protecting Them sums this up nicely!

  3. Jack Says:

    I partly agree with you, but partly not. 1).NET is still grow up quickly, 4.0 is coming, and many bugs will be fixed, new feature will come. This means it still young, not powerful than Java now. This is why i agree with you. 2) Many be the java developer is more experienced then the .net one, this is why I don’t agree with you.

  4. Prajwal Tuladhar Says:

    I also do agree with your point if JAVA and .NET developers are compared rationally. I especially think most .NET developers really do not care about good design and best practices because they are highly influenced by Microsoft’s visual paradigm of developing. Normally, when someone wants to learn .NET, he starts with Visual Studio and start to do drag and drop programming which at first sounds so cool but later it becomes way to fundamental design flaw and perception of designing any application. I don’t know if it’s wrong or not but .NET developers are highly coupled with IDE based programming which you won’t find in other languages like JAVA, Ruby and PHP.

  5. Bart Says:

    When I am on the other side of interviews – that means being interviewed – I did not once get a question about IOC / DI / AOP and only very rarely I get questions about ORM.

    That’s also striking.

  6. Azagappan PS Says:

    You are 100% right. I am a Microsoft guy and I hate to hear this. But the fact remains the fact.

    For some reasons, Microsoft dosent want to use the terminology used in Industry. They would call an apple an orange,though they mean to say is Apple. I feel this as one of the main reasons for Microsoft guys staying away from good OO habits.

    Wakeup guys, its hard fact to digest

  7. Peter Morris Says:

    Hardly conclusive research, was it? :-)

  8. den Ben Says:

    @Peter Morris

    I’d call this a minor form of empirical research. Although it was not Davy’s intention to perform any kind of research at all he based his statement purely on observations he made while taking job interviews.

  9. CraigCav Says:

    In addition to this observation, but from the other side of the interview table, I am one of the more ‘junior’ developers in the (.NET based) company I work for, as I have only 3 years post-university experience, however I am perhaps the only developer in my team who is familiar with topics such as Inversion Of Control, Dependency Injection, Object Relational Mapping, and Aspect Oriented Programming. I am trying to encourage others I work with to take an interest in SOLID principles as a first step, but it’s difficult at times.

    I would suggest it’s almost as hard finding .NET software houses where these techniques are nurtured, as it is to find .NET developers that are well versed in these patterns and practices.

  10. Davy Brion Says:

    “I would suggest it’s almost as hard finding .NET software houses where these techniques are nurtured, as it is to find .NET developers that are well versed in these patterns and practices.”

    i completely agree… the standards in the .NET world in general are just embarrassingly low IMO

    @Peter

    you’re right, it’s hardly conclusive and i’m sure you noticed that i never claimed it was :) . It’s just an opinion, based these interviews, and interviews i’ve done in the past with .NET developers. There’s just a huge difference, usually.

  11. Jonathan Kaufman Says:

    One thing to consider. Most seasoned “Microsoft” guys are C Developers. .NET encourages good OO design but C++ does not. I have met and worked with over 30 people who claimed to be C++ programmers. I have actually only met 2 C++ developers, the rest were C developers using a C++ compiler.

    Why is this relevant because OO is new. I know in super fast computer land it’s 5 billion years old but there are plenty of people out there that see OO as a new technology, not something they learned in school and aren’t fully subscribed to it’s benefits. There are plenty of people who don’t like OO and have good arguments for them. Nothing is black and white.

    I leave this post with no opinions just some thoughts to chew on.

  12. Davy Brion Says:

    @Jonathan

    I wasn’t really talking about seasoned “Microsoft” guys. My statements on that are based on all kinds of .NET developers… there is a very large majority of them that never ventures outside of the “get it working quickly, move on to the next thing” realm. Proper software development practices are just rare in the .NET world…

    Oh and there are very few cases where .NET (and dare i even say Microsoft) encourage good OO design IMO. Drag-n-drop development very rarely leads to good OO design ;)

  13. Terry Says:

    Oh and there are very few cases where .NET (and dare i even say Microsoft) encourage good OO design IMO.

    What about ASP MVC? Plus, what’s so evil about saving time with Drag and Drop? The code can be cleaned up for testability later especially since all the generated code ends up in partial class files. Drag and drop doesn’t have to be automatically evil if its managed correctly.

  14. Davy Brion Says:

    ASP.NET MVC is a huge step up, but it’s not quite perfect either and it took, what, 6 years of WebForms before alternatives were even considered. And the sample apps that have been released so far (Oxite and Kobe) by Microsoft are a long way from encouraging good design. They’re quite horrible in that regard actually.

    Drag-n-drop of pure visual components is usually not a big deal… drag-n-drop of data sources on pages or forms or whatever is a different matter entirely ;)

  15. Eric Anderson Says:

    @Terry Says
    The code can be cleaned up for testability later especially since all the generated code ends up in partial class files

    This never happens. Why not generate the code in a testable fashion first and then call it from the partial class files?

    As to those .Net developers that actual know IoC, DI, and SOLID in general. If you are looking for a job, feel free to email me at IDev.Net ~at~ gmail. I can almost guarantee you some interviews in Austin. I am a developer, not a recruiter. But, I know my company is always looking for these types of developers and I know plenty of others in Austin that are looking for these skills — even in this economy.

  16. Jayme Davis Says:

    While I don’t necessarily argue with your ‘knowledge’ statement, I do argue with your ‘prefer’ statement. We made the same mistake at a previous client – hiring only the top notch people who could screen out of these same type of questions. Turned out to be one of the shittiest non-practical group of people I’ve worked with. Sure – you read lots of blogs and understand terminologies, but can you write an app? Most of them could not.

  17. beefarino Says:

    Microsoft’s bag has always been to try and take the thinking out of programming. They’ve consistently played to the Bad Lazy in people – that given the choice between ( moderate effort and more maintainability ) and ( little effort and no maintainability ), most people will choose the latter combo because it’s less work on them right now.

    In that vein, I believe that MS has done a great job of making a framework where anyone who wants to can build a website or simple winforms app in visual studio. But that alone doesn’t make you a software developer, that makes you a hobbiest.

    You’re spot-on with the “get it working, move on” comment as well.

  18. Steven Livingstone Says:

    Can’t really agree with this – one person can’t represent an entire community.

    Java has more years in it and has had more of a run in the academic community so as a language it progressed differently from .Net which has a more enterprise level commercial focus.

    However, most of us have used many of these techniques for years. The language you use to code (and there really isn’t a huge variation in the languages) is but one part of a much larger picture (you mention patterns).

  19. J.P. Hamilton Says:

    @Peter Morris

    Not conclusive research by any means, but I can add my results. I interviewed 11 developers over a 2 year period and had worse experiences. None of the people I interviewed read any programming books or blogs or wrote any code for fun. They unanimously said “I go to MSDN when I have a problem”. None could answer the most basic OO questions. How far can I take an interview when someone can’t tell me what polymorphism is (or an abstract base class for that matter)? Not only that, every single one of them wanted a whole lot of money.

  20. Jonathan Kaufman Says:

    @Davy #12
    I guess I don’t agree on the singling .NET guys out. Microsoft has documentation on IoC and DI etc. I have seen failing java guys too.

    Now keep in mind I agree with most of your posts and many “developers” anger me. But when I work with .NET guys in a software company (one whose profit in generated by software), I work with some crazy OO fanatics.

    I blame this “get it working, move on” mind set on corporate culture. I am currently contracting in this enviornment and there is an over all disregard for quality in any work (not just coding).

    Maybe the majority of corporate development is in .NET and this ONE PERSON you interviewed was from that enviornment.

    To be honest the only reason I care enough to comment is because I want quality developers and I think you are missing the source. In order to fix the problem, the problem has to be correctly identified. I don’t blame some wierd belief that microsoft wants developers not to think but instead blame souless jobs that don’t care about quality and prioritize artificial deadlines over quality.

    I leave this post with opinions smeared all over the place.

  21. Steve Bohlen Says:

    One of the (possible) reasons for your experiences is that the internet-bubble crash of 1999-2001 flushed out of the industry the (at that time) extremely large numbers of extremely poor java developers. I was in tech at that time and the ratio of good to bad java coders at the time was about what it is now in .NET (IMHO). This shrinkage of the market for java devs flushed out a lot of the detritus that was floating around in the java ecosystem at the time as these people simply changed professions when work for them dried up and only capable java programmers could get (much) work.

    While I agree that at this point in history your allegorical data points aren’t really debatable, I think (and kind of hope, frankly) that the present economic downturn will perform the same flushing operation on the legions of completely unqualified .NET developers that aren’t capable of anything much more complex than drag-drop-F5 development.

    I think the ready-available visual tooling for .NET in the form of Visual Studio can be ‘blamed’ in some sense for lowing the barrier to entry to the point where anyone can call themselves a .NET developer after reading “mastering WPF in 21 days” or something similar, I think we have to also allow that the marketplace has sustained these large numbers of poorly-qualified developers for entirely too long and we may be seeing a ‘realignment’ that will result in many fewer .NET developers with the poor ones choosing to exit the market and the good ones being able to remain afloat/employed.

    At least that’s my fervent hope~!

  22. Michael Hoffman Says:

    Everyone’s experience is different. I have had a LOT of bad interviews with Java developers. A LOT. Nevermind good coding and design practices, some candidates couldn’t tell me how an array works. It is frustrating, no doubt. Anyways, my point is that there are a lot of bad apples out there on both sides. Unfortunately, I have noticed a trend that there are not many good apples. Perhaps I interview too hard, but there are certain expectations I have of the people I hire.

  23. Davy Brion Says:

    @Jonathan

    i’m not saying that java developers have no flaws. i’m also not saying that all .NET developers suck. It’s not based on _one_ person. I wrote this post after interviewing 5 people, but it’s not really about those 5 people either. It’s just an opinion that has been formed based on other interviews and general impressions that have been left by Java developers and .NET developers.

  24. Neil Mosafi Says:

    I think you need to use a better recruitment agent!

  25. Sam West Says:

    I’m not surprised. And as one of those .net developers who is passionate about IoC, patterns, mvc etc, I look at it from the other way around. When being interviewed, it’s 1 in 20 companies that show an interest in these design principles. That’s disheartening to say the least. I don’t want to have to fight those design principle/management battles anymore!

  26. K Says:

    I have not touched any Microsoft tools since the Visual Basic 4 days, so my comment is based on my impression.

    From my perspective it seems that .Net is largely based on a monoculture, mostly defined by Microsoft. It seems that if it isn’t found on MSDN or if Microsoft hasn’t hyped it (using their own terminology of course), then it isn’t worth going for.

    I’m not saying that Microsoft is slow. On the contrary, it seems that they do a lot of things and adapt existing ideas and remakes them in their own way. C# is evolving at a very high rate, and it is a lot of new things that are thrown at developers.

    Perhaps that’s the problem. Microsoft has generated their own ecosystem where the developers have more than enough to keep up to date with new terminology, ideas or technologies. This may result in a mind set where the developers are “fed” thoughts and ideas from a single source – Microsoft.

    Contrast this to the Java group, where most of the ideas come from the community. There’s a lot of things happening there too, but because it doesn’t come from a single source, they are used to filter out and control the flow of information. Often, they also program in Python/Ruby and other languages, and get input from completely different ecosystems.

    In short, it seems that you have two major ecosystems. One made by a single entity (Microsoft) and another more open ecosystem with multiple entities that influences each other.

    I have seen comments from .Net developers saying that they feel they have to absorb and learn “new” concepts from Microsoft because they fear beeing left behind.

    My impression is that Microsoft keeps making up new concepts so fast that developers don’t have time to look elsewhere.

  27. Anon Says:

    On a similar note, I recently read 5 blogs. Yours sucked. Therefore your blog sucks.

  28. sciske Says:

    ‘At this point I’d prefer to create flame bait’

    There fixed it for you.

  29. Jan Van Ryswyck Says:

    That’s interesting. I had a similar discussion today …

  30. Will Says:

    I am primarily a Java developer, but I dabble in a bit of .NET development. I think some o what you mentioned is true of .NET developers, but I believe the tide is turning. I attend a nearby .NET users group every so often and they frequently have presentations on the design principles you mention in the article. I think the lack of knowledge on or desire to learn those design principles can be found in many developers, regardless of their programming language technologies. There are just plenty of people in the software engineering/development field that don’t really care much about their craft and don’t put the time in to try to increase their knowledge in new and upcoming technology.

  31. JAlexoid Says:

    I think it’s the inherently libre Java environment that forces most Java developers to learn. Laziness is not an option for a lot of people in Java land. Look at most IDE for Java, you will see support for a myriad of frameworks and tools out of the box.

  32. Clay Says:

    Microsoft vets technologies and .Net developers like this. To them, they do not chase every fad. IoC and DI haven’t been vetted yet, so it is not surprising that these concepts are foreign to your interviewees.

    Things are changing. I get the feeling that technologies are getting vetted by MS at a faster pace. F#, jQuery, ASP.Net MVC, Silverlight (is this a copy of Flex?) are all very recent additions, and some in the .Net community are concerned that these are fads rather than properly vetted technologies.

  33. Arjan`s World » LINKBLOG for April 28, 2009 Says:

    [...] At This Point, I’d Prefer Java Developers Over .NET Developers – Davy Brion [...]

  34. meisinger Says:

    i think that it has more to do with “rapid application development” developers than the platform or framework

    how many RAD Java developers do you know?
    i know two, one is working in Java and the other is currently working on Flash projects

    how many RAD .Net developers do you know?
    i know five and they are all working on .Net projects

    neither the RAD Java developers or the RAD .Net developers could give a flip about any patterns, principles, or practices

    so it is my personal observation that:
    1) RAD developers don’t care and don’t want to care
    2) there are more RAD .Net developers than RAD Java developers

    just my two cents

  35. Code2Glory Says:

    I tend to agree with Clay. Microsoft does not hesitate to go back to the drawing board and rethink its designs. The best example is moving away from the illusion of drag and drop web forms towards ASP.NET MVC. They are catching up pretty fast with Unity Container, MVC and Silverlight. Those who are arguing about Visual paradigm created by Microsoft tools, would you disagree that Visual Studio is the best damn IDE out there?

    It is also harder to maintain Java architectures as sometimes they are unnecessarily over complicated.

  36. Java versus .Net programmers Says:

    [...] come across this post, that deals about java and .net programmers. I must admit that the situation is the one depicted by [...]

  37. gorlok Says:

    Very interesting. I just was talking about this a week ago, with a similar debate.
    I think that the java/python/ruby/etc community is mostly an open community, and it has become the seeder for test new ideas. Then, MS’s guys need some time to catch up.

  38. sohan Says:

    I agree with your decision. But at the same time I understand that .net itself presents like ioc/di/tdd are at best secondary concerns. So MS didnt include an aop or di library. Event the test library is new. But you also need to remember that a .net dev will not take all the time to catcth the cocepts if s/he is a good dev. I would suggest hire the ones who have the background and can pick up fast. For a ,net project a java dev may have longer learning curve. It should not take much time to catch up the ideas of tdd/di/aop.

  39. Kyle Says:

    How is this worth thinking about? Some completely nonsensical conclusion drawn from a statistically invalid sample.

  40. Sami Dalouche » Looks like .NET has a long way to go… Says:

    [...] best way to choose between the different languages is to consider their respective communities, and this article definitely confirms my [...]

  41. Eric Says:

    @Clay #32
    IoC and DI haven’t been vetted yet

    Nonsense. Vetted by whom? While the Java community has been using these practices for longer, there is nothing language-specific about IoC or DI. MS even made a (poor) attempt themselves with Entity Framework.

    @Code2Glory #35
    would you disagree that Visual Studio is the best damn IDE out there?

    Yes. See IntelliJ. I would also prefer Eclipse over a naked (without R#) VS any day. VS requires plug-ins to make it usable, Eclipse leverages plug-ins to make it better. And, IntelliJ is an even better experience. I’ve developed plenty in all of these environments.

  42. Stephen Smith Says:

    If I could jump out of the Microsoft space I would but I have to pay the rent.

    In the Microsoft space rather than respond to the increasing demands for greater productivity by always seeking more productive and powerful development practices, that is how can we use our tools more effectively, the general mindset seems to be that Microsoft is bringing out a new version of .NET or some new visual tooling, what we perceive to be a more powerful tool and will solve our problem. But a powerful tool misused can cause a great deal of damage. Developer’s continuing professional development seems to consist of learning new Microsoft or third party APIs or attending Tech Ed rather than learning development principles and practices that are language and provider independent.

    I am currently working for a very successful organisation but on a project that already has been in progress for more than 5 years and we are attempting to produce a beta in several months time. When I mention the length of the project people have to first pick their jaws up off the floor and then they say that it must be a successful organisation to support a project for so long without delivering. There is little or no consideration for learning to be more productive and seeking faster and more effective ways of developing. We are building a framework with the expectaction that it will eventually power a suite of applications and this application interacts very procedurally with the framework and is extremely cumbersome and tightly coupled. I am certainly not holding my breath as to its delivery, management is. There is an expectaction that software development is hard and often painful, that the last 10 percent is the most difficult. (The project has been in the last 10 percent for the best part of a year now)

    I hold Microsoft responsible for the number of Morts amongst their development ranks, Morts who are intelligent people who would derive so much more job satisfaction as well as positively representing Microsoft if they were aware of the developments in software development that many of us .NET developers are oblivious of. I would love to work with kindred spirits, people who consider their effectiveness as a developer is largely based on the power of the practices they employ and are always seeking more powerful practices that are being developed in the wider development community and apply them in their .NET teams.

    Would the best thing for us .NET developers be if Microsoft went belly up? There would be a lot of initial confusion but the economists have a term called “creative destruction” just as Steve Bohlen mentioned in his response of his experience of the Tech bubble crash clearing out a lot of excess Java developers.

  43. RCE Says:

    @Kyle: if it’s worth responding to, it’s almost certain to be worth thinking about :) .

  44. Jon Limjap Says:

    It’s a painful fact that apparently, anywhere you go in the world, there is a disproportionately large amount of Mort .NET devs compared to Elvis/Einsteins, as opposed to other technologies where because those concepts are necessary from the onset, you get a ratio nearer to 1:1:1.

  45. Arnis L. Says:

    Eric Anderson Says:
    April 28th, 2009 at 4:44 pm
    —-
    Damn… I knew that i`m going in right direction. Too bad that i`m not ready yet for such a crucial changes. :)

  46. Paul Cowan Says:

    Microsoft lowering the bar to entry with their visual tooling did just that, lower the bar for entry for lesser able or qualified programmers.

    I interviewed for places like DELL other places in Scotland was pretty much horrified by the picture that the lead developers where telling me.

    At best they used everything Microsoft and at worst, it was quite depressing.

    I eventually took a job where I was the only developer and could develop in a way I was used to.

    This was fine until we came to recruitment and I then started to realise that the stack I used pretty much ruled out any developer we needed getting up to speed in anyway soon.

    One of the “better” developers I interview had never heard of generics never mind an IOC container.

    I had contractors looking £350+ per day who were useless.

    We have to hire and just take it for granted that they will not be “useful” for a while.

    I started to doubt my stack because nobody had used anything in any way comparable.

    It is all very depressing.

  47. Michael Says:

    If we want to draw conclusions based on such a small experience, I’ll pitch in. Sounds to me like there are four times as many Java developers looking for work.

  48. Davy Brion Says:

    I love how people seem to think it’s all based on these 5 developers. I guess there are too many words to read to figure it out.

  49. Justin Says:

    I am a Java developer and ocassionaly interact with .net and microsoft tech. The main problem with the microsoft environment is it doesn’t pay to learn anything really well because they drastically change around everything every couple of years anyway. Thus, building a rich architecture on top of microsoft technologies seems kind of worthless as everything you worked on will probably break in 2 or 3 years or at least not work with new development tools and require painful backward compatibility configurations. On the other hand I have almost 10 year old java code in production applications that just works better with each new release. Thus, in java it pays to build a sophisticated architecture because the investment becomes worthwhile as the codebase is much more likely to be long lived. While Microsoft systems discourage maintenance and seem to encourage rewriting everything every few years using the latest totally different microsoft development technology.

  50. Michael Says:

    To be fair, I meet more crappy .net developers than not.

  51. NoDoubt Says:

    I was working for an IT services company before that was specializing in .NET technologies. Most of the developers were really good. Then I joined another company. I found out that Java developers there were absolutely closed-minded plus… not that good neither (while spitting a lot on .NET, without knowing what it is). So I think it really depends on the company, and what kind of people you hire.
    Another fact is that many users use Visual Studio to make applications (C# or VB with WinForms is so easy to use!), and later on they pretend they’re developers…

  52. Shaun Says:

    Sciske & Michael Hoffman above nailed this.

    I for one wouldn’t prefer *either group*, but would instead rather get to know an individual developer. I’ve been both types myself, as well as a C++ guy. The point is there are good and bad talents in all developer camps. Instead I gather from this post that what you found was someone who would get off with you on a an intellectual masturbation ego trip. Get over it, and grow up!

    Oh, and AOP isn’t w/o its own very serious design and performance risks. Anyone who came to me preaching the glories of any of these practices w/o acknowledging the drawbacks would most certainly not get the job. I’d much rather hire a person who stays with tried-and-true and knows the benefits and shortcomings of tried-and-true than a person who blindly follows every trend out there, going in eyes-wide-shut then pushing it as some sort of cure-all.

  53. Davy Brion Says:

    @Shaun

    if you’d take some time going over some of the other posts in my archive, you’d realize i’m not the kind of guy you’re talking about ;)

  54. Olivier Says:

    Hi everybody,

    For my part I am really fond of software design techniques but nevertheless a C# guy. I agree when some say too much drag’n dropping (may) lead to bad OO design. But refactoring exists (from VS 2005)! It’s not Eclipse’s, but it is sufficient not to prevent me from reworking always and always my code. I can start “drawing” my form, then, because I want some reusability or more control, replace generated code with mine.

    I am, too, aware of DI, IoC, AOP, ORM, continuous integration, tdd, mocking, … I even begin getting intersted by dynamic constructs and functional languages because, a pinch of it was introduced into C#. Before .NET’s Linq and lamndas, I had never really understood contravariance, covariance and other barbarisms. Now, I can see the “context capture” works each day when I code in C#.

    About libraries, I would say, it’s lucky Java is older than .NET because when looking for a library or a tool you need and you know exists for Java, one just have to replace J by N or Sharp and there are many chances it exists (usually it is less features complete than the Java version, but still nuseful) NUnit, Log4Net, BouncyCastle, …

    I don’t want to say I’m the ultimate languages expert better than any Java developper. And maybe most .NET developpers are just good enough to copy down MSDN’s monkey code… but some .NET guys also love software design, OO, patterns, refactoring.

    None of the people I interviewed read any programming books or blogs or wrote any code for fun. They unanimously said “I go to MSDN when I have a problem”. None could answer the most basic OO questions.

    I do have programming books (in fact a whole library ranging from Tannenbaum’s OS design and implementation to Wrox sharpDevelop’s book) I do read blogs and write in mine once per two years… I do write code at home, and when I have a problem, I use 1. .NET Reflector 2. Google Code search, 3. Google search 4. MSDN. About OO principles, maybe you’re right: I am not a MS certified developper, but some years ago I tried a trial exam; though I consider myself as being quit a good C# programmer, I could barely reach a 30/100 score: of course I didn’t know by heart the name of the window you have to use in Visual Studio do achieve a specific debugging task, but I could have find this window if I was coding, and I knew tens of other ways to achieve the same result! The only OOP question was about a virtual method that was overriden in a child class, and depending on the object’s declaring type what version of the method would be called… Ah! What a trap! And it was the only OOP related question! So maybe you’re right in this respect: the Microsoftee avarage developper (not to say the MCP) knows all the tips of Visual Studio but does not really know why he has to write “override” in his code.

    He, that was quite long! But, Gosh I didn’t want the .NET programmers’ honor be defamed without reacting. ;-)

  55. Olivier Says:

    @previous

    I was quoting J.P. Hamilton’s comment. Sorry.

  56. The Good, The Bad And The Ugly In The .NET World | The Inquisitive Coder - Davy Brion’s Blog Says:

    [...] At This Point, I’d Prefer Java Developers Over .NET Developers [...]

  57. Z. Dharmawan / blog Says:

    [...] Why Java Developers are still preferred than .NET developers: http://davybrion.com/blog/2009/04/at-this-point-id-prefer-java-developers-over-net-developers/ [...]

  58. Who cares Says:

    Maybe .NET developers are too busy to bloviate on blogs about the wonders of and the shortcomings of those who aren’t True Believers in the latest save-the-universe ideology. Please, what a bunch of arrogant wanking.

  59. Christophe Says:

    Hi all,

    I agree with you, .NET developers know nothing about Inversion Of Control, Dependency Injection, Object Relational Mapping, and Aspect Oriented Programming. I fully agree.

    But they don’t have too! I’m at the head of a .NET developer team. We are working on websites, Windows applications, silverlight and so on. For our day to day work, we don’t have to use these technics (I’m not talking about ORM here, because we use it everyday). I agree with you, it would be interesting that developers know at least the name :) Of course, it would be great if they can have an overview about these technics. But we don’t need these technics for our work (also because the .NET framework offers many classes, high level enough so we don’t have to use them).

    Once again, you are right: .NET developers don’t even know these technical terms. But these technics, even if they are used in the 2 worlds JAVA and .NET, don’t have the same importance in these two worlds. I think you can’t really ask the same questions to JAVA and .NET developers.

    What do you think?

    Christophe

  60. Davy Brion Says:

    @Who Cares

    you may be on to something… i mean, maintaining the same shitty old code over and over again sure does take up a lot of time

    @Christophe

    Strictly speaking, you’re right… they don’t _have_ to know about it. Their code _would_ be better if they did know about it though.

  61. veggen Says:

    I am one of those junior Java developers that you’re describing, and my feelings are exactly the same as yours. I am talking to .Net colleagues often, and they usually don’t even care about principles of DI, AOP etc… That only further aggravates the wound of .Net developers finding jobs a lot easier than us (at least in my country).

  62. mikedopp Says:

    All I can say is wow. a bunch of java developers are now patting themselves on the back. Nice work. Great job. It is a great idea to keep your mind set that you are superior.

    Remember Assembly developers can write circles around any high level language. :)

  63. Who cares Says:

    @Davy

    Christophe is right. These things arise more naturally in the discussions of Java developers because they don’t have a such a unified framework. The fact that a tool is superior does mean that less skilled people can work with it more easily, but a highly skilled person can do even better with the better tool.

    Of course you interpret things according to your bias since yours is the arrogance to pontificate to the world in your little look-at-me endeavour here. But, this is typical of the narrow-minded zealotry of those who worship TDD, ORM, etc. as if these things had no shortcomings either. As Frank Zappa would say, shut up and code. :)

  64. Davy Brion Says:

    No practice or principle doesn’t have shortcomings, but that really doesn’t mean we shouldn’t at least try to improve the way we write software. Your “shut-up-and-code” mentality is the one that is often used to order codemonkeys around, or the mindset of people who simply don’t know any better that there often is a better way. In both cases, it doesn’t sound so good to me… but hey, if this works for you, then great ;)

  65. What is proper Says:

    I like the word “proper”. Because it points out the real underlying thing you are observing. There is simply a different definition of “proper” design principles in those two worlds.

    All I can say – in our company the direct comparison between the .NET and the Java teams have the Java team ahead on frameworks – and the .NET team on finished and active projects. Even I am a bit baffled about that, since I would have expected that the faster pace should create more maintenance overhead for the .NET teams and eventually slowing them down. We, in the Java Team, are currently investigating how we can adapt a leaner development. Who knows, maybe we are wrong about our definition of “proper”.

  66. HoangDunng, Le Says:

    I’m a .NET developer and also a Java Developer, because .NET is what i like, and programming Java is my job.

    I just want to say that, everything Java has, .NET will have, and every .NET has, Java will have.

    All that your CEO want to know that you will make his wallet full of.. He only cares of the three things: spending money, spending time and the earning money. That all!

    I like DI, ORM, AOP.. but sometime I choose the easy way to do, sometime I choose these things. .NET developers are not bad, because they can do everything their boss want, it’s why they are exist. Java developers are the same. I know that many .NET developers also program Java. Many Java developers use DI, ORM… but they do not have to know everything about them, just follow some steps and have what they want.

    Know deeper about something is good, but you do not have to know everything, you just have to know what you need to get things done!

    PM: sorry about my bad english :) !

  67. WhoCares Says:

    The reality is this: software development is a very tough career. With the amount of time we have to invest keeping up with the latest technologies we could have achieved greater mastery in a less rapidly changing field. For example I’ve always had a passion for computers while a good friend had a passion for medicine. He’s now a radiologist making $400,000 a year working less than I do. While money can buy nice things, more importantly it buys things like a solid future for your family. There are other important things though. He has more time to spend with his family, and he has the satisfaction of becoming more and more expert at his specialty over time because its rate of change is manageable. Meanwhile for us developers, no matter how we improve at the craft of writing software we still have a constant learning curve keeping up with new technologies. We will never achieve a high level of mastery at anything because we can’t afford to gamble that any given area won’t become obsolete by the time we do. With that and with constantly working to get better at creating correct, clear, maintainable code under constant time and business constraints, what we don’t have time for is getting distracted by bloviating evangelists for every new architecture/process concept that comes down the pike. The developers I respect are the ones who have weathered enough of this nonsense to know that there never has been and there never will be One Correct Development Religion. People with too much time on their hands come up with this endless bullshit and then the fanboys pull out their dicks and try to measure them by who gets more excited about the latest end-all-be-all concept(s). If you want to go by subjective personal samples, fine: every developer I’ve ever met who got overly excited about the dozens of acronyms/word salads-of-the-day that more often than not lead to greater complexity in a project has been something of an arrogant, narrow-minded dick. Like other engineers our job is to produce concrete results to move the business forward, and we have to deal with many variables and imperfections such that there can never be a single recipe for all projects. It’s necessary to be professional, flexible, adaptable, and get things done to meet the business objectives. Management doesn’t care about your quest for the ultimate coding religion and neither do your coworkers. All the endless narrow-minded debating about the merits of this or that approach just kills the joy of coding IMO, and I wouldn’t want to work with such people.

  68. Java vs .NET Developers « Entertainment Kings Says:

    [...] Brion has an interesting post discussing his recent interviews with .NET and Java developers. I have to say that I agree with some of his assessments. Much of what we discuss in .NET is far [...]

  69. Davy Brion Says:

    @WhoCares

    has the possibility ever occurred to you that knowledge of some fundamental concepts actually make it easier to transfer your skills from one technology to another? And thus, can greatly reduce the amount of time that you constantly need to invest in learning new technologies?

    Who’s really being narrow minded here?

  70. Dag Blakstad Says:

    My observation, having worked with both Java and .NET is that there is a fundamental difference when comparing development on Java .NET platforms.

    The Java platform (not just the JDK) is community driven, while the .NET platform is more of a shrinkwrapped product. The effect of this is that Java engages it’s users to think how things can be done. .NET users will more often wait for the next release from Microsoft, and see what are coming their way. Further Java is more dynamically influenced and influencing other programming languages and OSS projects adds APIs and features to platform. The engineers behind .NET has introduced a lot of good (and some not so good) ideas and technologies. The key difference is how things gets introduced.

    If you accept that Java developers is generally more involved and thinks more about how to do things, it follows that junior Java programmers also grows up faster. Maybe Java programmers blaims the platform and frameworks less the .NET folks when discussing what turns out to be suboptimal solutions to the problem they are working on. This provides faster and more accurate learning process about godd & bad design and programming techniques. In additions Java developers is eager to share their learnings, describing what they have done in terms of know idioms and patterns.

  71. WhoCares Says:

    @Davy

    Well obviously I think you’re the one being narrow-minded because you posted the equivalent of a “.NET developers suck” article, thereby painting everyone who uses .NET with the same brush. I think I know what you *mean* but it’s not what you said. In point of fact the same general concern can be raised for Java developers, as done here:

    http://www.stsc.hill.af.mil/CrossTalk/2008/01/0801DewarSchonberg.html

    The choice to be a good engineer or a “framework monkey” is an individual one. Like you just said, fundamental concepts cut across the choice of tool, yet your article is stated as “.NET developers suck.” If we accept your sample as statistically valid, what it really says is that it may be easier to be a framework monkey with .NET than it is with Java. However all that says is that it’s possible to be more productive with .NET, other factors being equal.

    But, it’s an attitude thing I’ve encountered many times. Open source work is a closely related form of dick measuring; really, it’s a complete waste of time. Imagine if Larry Page and Sergey Brin said “hey, let’s give this great new search technology to the world for free!” Sheer lunacy. Instead they now have billions with which to really impact the world if they really care. Like blogs, it’s a symptom of people who just have too much time on their hands and who think it will make other developers think they’re cool, for whatever that’s worth (hint: not as much as real money in the bank). For ORM, see http://www.codinghorror.com/blog/archives/000621.html and the verbose underlying article linked there. All of it true. So, feel free to continue to waste your time on such things without being paid for it. Zed Shaw’s immortal Rails is a Ghetto rant was worth reading simply for what it shows about the utter uselessness of that whole world and its pointless dick-measuring mentality. Real geniuses can turn a profit and don’t have time to set up http://www.gthrockmortonnumbnuts.com/blog/myopinion to impress the fanboys, and certainly aren’t silly enough to throw hundreds of hours of their life away on free projects that will ultimately be meaningless anyway. Seriously, whatever talent and knowledge you think you possess can be channeled more productively, and I promise you will live to regret every hour wasted. That’s all I have time for. Live and learn, and good luck to you.

  72. Liam McLennan Says:

    @WhoCares

    I don’t have the problem you described trying to keep up with change. I focus my learning on project management strategies, OO design principles and patterns. Most of the things I am learning have been around for more than thirty years. That is a rate of change that I can handle. Trying to learn what MS want us to (each of their new products) is a fool’s errand.

    Your link to the coding horror article is interesting because Jeff Atwood has clearly changed his mind since then. His current project uses objects AND a RDBMS.

    For what its worth, my anectodal evidence matches Davy’s. I think you are angry simply because you know that you are the sort of developer he was talking about.

  73. .Net vs Java Discussion « C# Hacker - The Rambling Coder Says:

    [...] originating link is: At This Point, I’d Prefer Java Developers Over .NET Developers and the follow up/update is: The Good, The Bad And The Ugly In The .NET [...]

  74. Common Sense Says:

    “Open source work is a closely related form of dick measuring; really, it’s a complete waste of time. Imagine if Larry Page and Sergey Brin said “hey, let’s give this great new search technology to the world for free!” Sheer lunacy. Instead they now have billions with which to really impact the world if they really care.”

    They wouldn’t have had those billions if they hadn’t leveraged open source to build their great new search technology. If you weren’t so bitter and angry at the world, you could have come to the same conclusions.

  75. Lixin Says:

    I personally agree that there are more Java programmers coding in good practice than those in .NET world. But it doesn’t neccessarily mean that those .NET developers will not have a better furture, considering the fierce competition, light-speed technology advancing and quicky varying business forms in the market.

    In the industry on which I am working, as Internet business was introduced into this industry pretty late, there is only one major company which has their system developed in Java, one developed in PHP plus old C++/VB and all the rest, about 5 to 6 major companies, have their system developed in .NET. Now a new trend in this industry is provide RIA to the clients, where Flex and Silverlight are actually only viable options, and I have seen no major players in this circuit will choose Java (including JavaFx).

    In conclusion, besides coding practice, tooling and some other factors are also very important. Let’s be pragmatic, developers.

  76. Mike Borozdin Says:

    First of all, developers don’t have to know everything, moreover developers don’t have to keep in memory all those bizarre acronyms and patterns names. Instead they should be smart. Many people can use design patterns even without knowing their fancy names and reading a number of blog posts about them.

    Remember, all those patterns and techniques are not a silver bullet.

    Even if a interviewed programmer doesn’t know what IoC and DI are, doesn’t he is a bad developer, he can easily pick up those techniques if he needs to, at the same time he can eventually implement the same technique without reading about it first.

  77. Lemonhead Says:

    @WhoCares – your posts are full of win :)

    At this point in time I would prefer C# programmers over Java programmers any day of the week – how could you hire someone who purposely picks an inferior language (Java)? Oh yes please, let me hire someone who would purposely pick a language that doesn’t even differentiate between signed and unsigned! Please! Oh please, take away my delegates, they hurt my brain!! No more LINQ please!! Hahahaha. Stupid java developers.

    The massive irony of this post is that the absolute best DI framework out there (Ninject) is for .NET ONLY.

    Have fun with your shitty xml-based DI frameworks java fanboys. Even Google Guice is a POS compared to the power of Ninject, due the the massive limitations in how Java (mis)handles generics.

    And also, Hibernate sucks. Utterly garbage framework. And again, what irony that the only fluent interface for hibernate is for .NET (Fluent nHibernate).

  78. Patrick Smacchia Says:

    A crystal clear simple question to ask during interview:
    What are the intentions behind value and reference types?
    Let the developer digress on this for 5 minutes and you’ll get surprises (good or bad).

  79. Stefano Martinz Says:

    I completely agree with Patrick Smacchia. There are other “hard-core” (…not really…) questions worth asking during an interview. If you don’t know the basic, it doesn’t matter how many “cool” principles/tools you have used.

  80. anis Says:

    I work as a senior DBA the thing is we have inhouse development relying totally on .NET, together with some older Oracle forms/reports projects why? because it gets us faster to results we want. The .NET developers are easier to find and in anyway our users all use MS-Windows as operating system. I myself use Red Hat Linux for my Oracle servers and most of our bought software run on Java WebLogic or OracleApp Server since most of companies we buy from are European and they tend to respect Java far more than .NET I hate to be biased but I think Java Programmers are better because they are not so GUI focused, and they were forced to think deeper. However as a whole platform maybe .NET is easier=faster to develop on so for smaller projects and interfaces we here depend on our .NET developers. I am lucky to be able to drill in Oracle technology without worrying it will change fundamentally and become obsolete. And another thing in enterprise that really counts is data intensive operations to be performed on database server itself (By plain old PL/SQL) making as little networking as possible between application servers and database servers.

    Now put yourself in management shoes. If some VIP from another department needs application to be delivered “yesterday”, their users to love easiness and clarity of interface, and your SysAdmins and DBAs say they do not care what it is written on. What would you choose, Java or .NET???

    On the other hand. If you want to develop cross platform large application (to leave the choice of infrastructure to your customers), to companies where users may use Ubuntu Linux as prefered desktop OS, application that would be maintenable and highly scalable (think like grid) and UI is not of primary concern but funcionality is everything. What would you choose, Java or .NET???

    People usually do judge the book by its covers and .NET is very appealing to new graduates because of its easiness so only the most confident programmers (or forced) dare to sail in Java waters this is why you have not so good .NET programmers.

  81. Pedro Reys» Blog Archive » .Net community focus and interests Says:

    [...] The blog post Jeremy refers to was written by Davy Biron and has this title: “At this Point, I’d Prefer Java Developers Over .NET Developers”. [...]

  82. John "Z-Bo" Zabroski Says:

    So… hire Java developers and make them .NET developers. C# and Java are similar enough, and, frankly, I moved from the JVM to the CLR 1 year 2 months ago and never looked back. Between MS .NET and Novell’s Mono, along with PowerShell and SQLServer CLR Integration Services, there is a wealth of quality libraries Java can’t compete with.

    Frankly, the only thing .NET is missing is a well-designed message bus that scales.

  83. Adam Kahtava Says:

    I’ve witnessed similar observations. A couple months ago I took a position at a Java shop (I was primarily a .NET developer). I was blown away when I discovered that this Java shop had been using IOC, ORMs, and TDD for the past 7 years. Needless to say their internal process was a higher caliber than those of most .NET shops and their developers were top notch as they had gained so much experience using these approaches over the years. I’d certainly hire Java developers or work at another Java shop.

  84. Stephen Anderson Says:

    Yup, there are a lot of not-so-good .NET developers. This is because there a lot of .NET developers. More, I’d say, than there are Java developers, because there were a gobsmackingly large number of Visual Basic “programmers”, who’ve since jumped ship to VB.NET.

    Once that anomaly is controlled for, I don’t think that there is anything inherent in .NET or Java that makes you a better or worse programmer :)

    However, what is different is the way the community is led, as other comments have pointed out. The leaders of the Java community are quick to adopt and promote new development ideas, and quick to take direction from members of the community. Microsoft has demonstrably not been, preferring to push its own ideas, no matter how demented (Software Factories, I’m looking at you). This is changing. Some very very smart people are working there on languages and frameworks, and the intelligence is bubbling to the top.

    Java’s readiness to adopt new ideas is a mixed blessing. IOC and AOP are wonderful new guns to shoot yourself in the foot with. They are the antithesis of KISS, and introduce new and exciting ways to make your program incomprehensible and buggy. Like all powerful tools, they must be used with forethought and moderation. Unfortunately, I have become convinced that there are a lot of developers (possibly even the majority) who are currently incapable of that.

    Yes, I currently primarily program for .NET. I would define myself as a software developer. I don’t let my tools dictate who I am ;)

  85. Shaw Says:

    If the 2 year experienced guy you talk about could discuss with you on AOP comfortably then I would guess he was a bright guy. Not all Java developers are that good by any measure.

    However, Java community is usually more open to ideas and are much more matured. I have found Sun blue print guidance to be far superior to what MS offers.

    There are issues in Java side too. Many in Java community think that the language is falling rapidly behind C# in terms of feature addition. I’m not sure if the fear is entirely relevant as the number of solutions in terms of frameworks make up for that loss.

    I think the biggest strength of Java is they think in terms of solutions, but in .NET I have often seen great amount of importance attached to going by MS.

  86. How Community Matters | The Inquisitive Coder – Davy Brion’s Blog Says:

    [...] link from someone who’s gotten some first-hand experience on a topic i talked about before: The incredible difference between what is considered normal in the Java community and the .NET [...]

  87. alwin Says:

    @Stefano Martinz and Patrick Smacchia,

    Well I can’t answer that question, I know some differences between the two but not sure about the intention. Could speculate about it though…

    I am however a big fan of using IoC, ORM and MVC, and know fairly well how to use them. I’m not an expert, but they give me big advantages.

    I’m a self-taught programmer.
    The reason I started using Monorail was that I couldn’t understand webforms.
    The reason I started using NHibernate was that I didn’t understand datasets or sql commands.
    (this was some years ago)

    I don’t use “cool” principles/tools because they’re cool, I use them because they help me solve my problems with software design.

  88. Chris Says:

    As someone who has left the .net world this seems obvious. MS developers tend to wait for technologies and practices to be pushed or dispensed from MS.

    I’d wager more than half the ones you interview wouldn’t be able to write hello world without an IDE if their life depended on it.

  89. Damien Morton Says:

    5 screening, 4 Java developers and 1 .NET developer. Now thats a representative sample, and surely a sample of such accuracy that one could generalise the results to cover all developers of the Java and .NET persuasions.

    When I was doing interviews a few years back, I used to ask interviewees to describe in broad strokes how a hashtable works. I only ever found one who could give a halfway decent answer, and it began with “hashtables are a magical thing”. The fact of the matter was that when I learned programming, you had to roll your own hashtables and has functions, whereas now, every programming language comes with hashtables built in. I still think programmers should know how they work, because if you dont, its real easy to make mistakes when rolling your own Equals/GetHashCode pairs. Ive even seen ‘experienced’ programmers doing such things as hashtable[a.GetHashCode()^b.GetHashCode()] = x for implementing a composite key on a and b.

    When I first started reading the GoF patterns book, I found myself pleasantly surprised that I had been using patterns much like the ones described by the GoF, but I just hadnt abstracted and named them.

    I think you will find the difference between .NET developers and Java developers is that Java developers spend a great deal of time picking and choosing between different implementations of GoF patterns, whereas .NET developers simply use the implementations given to them by the .NET framework, and it is the .NET framework developers who debate including different patterns in the framework.

    The upshot is that a knowledgeable Java developer will be able to argue the benefits of this or that IoC container, a .NET developer will use the IoC container provided by .NET without even being able to identify it.

    Another contrast is that while a Java developer is debating this or that implementation of IoC, a .NET developer is learning functional programming and LINQ, which has no real equivalent in the .NET world.

  90. Sarah Mei Says:

    It’s an interesting point, and I don’t think you’re talking about Java vs. .NET developers at all. I think you’re talking about the ability of a language, and in a larger sense, a framework, to shape the way people who use it think about development.

    There’s a lot of interesting linguistic research saying that your native natural language actually shapes and in some ways restricts the type of thought you are capable of. So I don’t think it’s a stretch to say that the formal language you use to program shapes the way you think about programming. If your language encourages or requires good practices, a good developer will be better and an bad developer might approach average.

    But every language has its restrictions, and what makes a great developer (IMO, and among other things) is the ability to be aware of those restrictions. Since Java encourages IoC, DI, AoP, ORM, etc., and has for years in some cases, I’d be more impressed by a Java dev who could talk about functional programming. And I’d be equally impressed by a .NET dev who could discuss AoP. Both are signs of someone interested in programming outside of their tech bubble.

    I’d still give them all the FizzBuzz test to make sure they could code. :)

  91. virt Says:

    All I hear is wah! wah! wah!. Just weepers.
    It doesn’t matter which language you code. Sometimes I write code in plain C, the apps run perfect and fast too. Do we really need OO and later tech?

    The real deal is Bill Gates and Steve Jobs are the ones making money not you and me. I still live in a rental apt after 18 yrs after graduating. You may think I am an old dog with no new tricks. But I see the same with young developers too, nothing promising in their life, they would probably end up in rental places after 15 to 20 yrs. We really need to think outside the bun in real life not just the work we do or the games we play. I have nothing against Bill Gates, he thought outside the bun.

    So stop whining and think where your life is leading.

    By the way I am not stuck at C, am working on asp.net 3.5 and Sharepoint.

  92. Jasper Says:

    So, you interviewed 4 Java developers and 1 .NET developer and that tiny sample makes you make a huge unwarranted generalization that Java developers know more about some specific techniques than .NET developers?

    And then a lot of commenters seriously start debating about why this is so?

    Ridiculous.

    (I’m a Java developer myself).

  93. Davy Brion Says:

    @Jasper

    you may have noticed that a lot of commenters also mention similar experiences

  94. Matt Says:

    I hate these discussions.

    Techniques like AoP, IOC, and DI get this free pass because they tend to decouple the code more. Nobody seems to care as much that now they need to dig through the code to find out what type of object is being made. They’re great ideas. But they’re not gospel, and they’re not suitable for use everywhere. However, because they attain buzzword status, they become important, and people think they’re more important than they actually are. Some people know these techniques but under different names.

    Another observation: the Java world (and .NET) seem perpetually caught up in this endless race to move more and more code away from where it is actually used *just in case* it has to be changed later. Rampant, speculative generality is as much a design sin as overlooking obvious generality in my book. I don’t want to have to put magic XML files in certain places to make an application work. I don’t want to specify subclasses to inject in.

    All your elegance dies if it impacts the user of the library, or (worse), the end user. Rails did an excellent job of showing up many systems that were mired in their own engineering ‘goodness.’

  95. VSP Says:

    So calling a basic concept with screwed up name as it was a new invention — is a typical job of a ‘Money wasting software engineer’ who just figures out what more 3-4 letter acronyms to ‘inject’ into his resume every 3 years.

    And then bragging about it as some type of ‘higher knowledge’ that makes you into a ’special priesthood’ of the “enterprise Java developer” — is indicative of an insecure, mediocre person trying to build a ‘cocoon’ of hyper inflated ‘value’ that he some how possesses compared to mere mortals.

  96. Kirby L. Wallace Says:

    This article sounds like the author is criticizing developers who do not agree with his personal preferences in design methodology. He assumes that if a developer is not using IoC/DI, that there is something fundamentally flawed about their methodology.

    I personally do not care for DI because I have a fundamentally different approach to design. When I’m working on a class or function, I prefer to see everything related to the task at hand….. well… at hand.

    I hate having to run off over here to see what that does, then run off over there to see what that’s gonna do, then attend a meeting with these guys to see what’s gonna happen if I mash the blue button, then come back over here; dodge right, spin left… look over my left shoulder while holding amirror just so….

    All that is the reason why so much softwre is CRAP, never gets implemented, or if it does, never gets used.

    I write code that reads, in as much as possible, straight from top to bottom with minimal detours. Everything it does is here. It reads almost like English. IoC and DI and such coding methodologies are practices that encourage all kinds of unnecessary stuff. When I write code, it’s more like I’m narrating the code than “coding” it. And I narrate it in pretty much the order that I see it flowing.

    That’s just my opinion, though.

  97. Goh Says:

    I am .Net developer and used to work in a java-based company. I heard a lot of complain about microsoft and .net everyday from java developers. I think sometime they just too bias. What we really need is an application which really work regardless of what design pattern we are using. I left the java based company after a year and developed my own application (similar solution) which is running fully in ASP.Net. Now I have more than thousands companies using my application in a single server. My ex-company? still struggling on how to process the transactions faster. The fact is, my application is developed by my friend (now my partner) and I, and my ex-company application is developed with more than 10 java developers and 1 of them already have 13 years experience in java. I had proven .net can be better than java and it really depends on how you design the system. Bear in mind, i am just a 2 years experience .net developer that time and i know very little about the design concept as mentioned by Brion.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Spam Protection by WP-SpamFree