Dougal Campbell's geek ramblings

WordPress, web development, and world domination.

Enterpriseyness

As the end of my current contract job comes near, I’ve begun putting out feelers for a new job. Looking over some of the descriptions and skill requirements for job openings, I see a pretty common thread: big companies are (still) asking for Java and .NET programmers, while smaller firms tend to look for developers using PHP, Python, Ruby on Rails, etc. This got me thinking about “Enterprise” platforms, and so I posed a question on Twitter:


Q: What makes a development platform “enterprisey”, and why should anyone consider that a good thing?
@dougal
Dougal Campbell

This sparked some pretty good conversation, so I thought I’d share some of it here.

https://twitter.com/boone/status/277081980397572097


@ Maybe that’s not what you mean by “development platform” though
@boone
Boone B. Gorges



This one made me think a little:


@ imo – secure, deployable, extensible, well-documented, strong community support are all key parts to “enterprisey”
@gamengineer
Robert Persaud


@ Strong community support? Really? That’s (generally) the opposite of what I think of when I hear “enterprise software”.
@dougal
Dougal Campbell


@ Some communities are head-strong, but generally, I’ve yet to find enterprise solutions w/o a large, if not strong, community
@gamengineer
Robert Persaud


@ I suppose that those communities might just be more insular; less apt to participate in communities outside their sphere.
@dougal
Dougal Campbell

Then things really took off:


@ managers have heard of it – which means you can actually implement it *sigh* /cc @
@auroraeosrose
auroraeosrose


@ @ Yeah, to me it mostly seems to be that attitude of “it’s expensive, it *must* be good!” is still pervasive.
@dougal
Dougal Campbell


@ The non-cynic in me says that Enterprise is expensive because it carries with it some kind of SLA or guarantee. :) @
@CalEvans
Cal Evans


@ @ There’s certainly some truth in that. But the attitude seems to extend beyond where it should…
@dougal
Dougal Campbell


@ @ i.e., “Java” and “.NET” in and of themselves are considered Enterprise, but they are just languages…
@dougal
Dougal Campbell


@ @ True, but they are perceived as having companies behind them to support them and sell you SLAs.
@CalEvans
Cal Evans


@ @ Sun and Microsoft aren’t going to come fix your programmer’s bad code. “Support” vs “Consulting”?
@dougal
Dougal Campbell

(I said Sun there, but should have said Oracle. I still can’t get it though my brain that Oracle bought Sun a few years ago)



@ @ SLAs are for services. But the attitude of a *perceived* SLA seems to extend into products, sometimes? Agree? No?
@dougal
Dougal Campbell


@ Agree. The idea that there is someone big standing behind the product is why people are willing to pay. @
@CalEvans
Cal Evans

This pretty much sums up what I already thought on the subject. Big companies buy in to “enterprise” platforms because they are backed by other big companies. I’ll grant that there are some areas where a corporate product makes sense. For example, (don’t hate me for saying this) standardizing on a software suite like Microsoft Office. It’s a commodity product, widely used (so many employees will already be familiar with it), and being able to get support from the creator of the product makes sense.

But coming at it from the perspective of a web developer, I start to question the inherent value of enterprise platforms. Unlike word processors, spreadsheets, and presentations, web development remains a rapidly evolving field. And while there is value to having commercial support available for products, it starts to make less sense for some levels of the application development stack, like the actual programming languages used. I get the impression that some companies have chosen Java or .NET as their underlying web technology simply because there are big companies (Oracle and Microsoft, respectively) behind them. Then, having chosen their technology, they hire programmers to build a web platform/product.

But it seems like in many cases, the technology is chosen in isolation of studying whether it is the best tool for the job. Instead, it becomes the proverbial hammer, and by golly, our problem must be a nail, not a bolt! In other words, I wonder how often an alternative technology is passed over, even though it might be suited to a particular task, simply because it doesn’t fit in with a decision that was already made?

I don’t mean it to sound like “big companies bad, small companies good!” There are plenty of examples of big companies being more nimble and open to new ideas than you might expect. And maybe that happens more than I think. Anyways, this is just my brain-dump. I’d welcome any other thoughts on the subject.

About Dougal Campbell

Dougal is a web developer, and a "Developer Emeritus" for the WordPress platform. When he's not coding PHP, Perl, CSS, JavaScript, or whatnot, he spends time with his wife, three children, a dog, and a cat in their Atlanta area home.
This entry was posted in Tech and tagged , , , , , , , , , , . Bookmark the permalink.

4 Responses to Enterpriseyness

  1. Hi Dougal,

    Oh how I’d love to have an actual chat about this with you one day…

    The thing that I notice more an more is that the people making (negative?) comments about what Enterprisey is all enjoy working with smaller entities (software, organisations etc).

    What “enterprise” means to me, in software terms anyway, is that it’s able to scale from a non-technical perspective.

    That’s the bit that we open-source and tech lovers get wrong alot. The fact that something works for 10 people does not mean it works for 1000, or 10000, or 100000.

    Very happy to have a WP in enterprise chat off line (Skype?) some time if you’d like to hear some of my OSS horror stories.

    The other thing to note is that major enterprise systems usually have very thriving communities behind them. But the reason OSS or smaller communities don’t interact with them much is that there is a very US v THEM attitude in the OSS/smaller community against enterprise systems (both software and organisations).

    More importantly though, in terms of software, enterprise systems offer stability. I can’t think of 1 enterprise software that would ever consider changing its admin UI 3 times in 18 months.

    Can you imagine the training cost to cover 150,000 users across 140 languages?? You’d only finish rolling it out when you’d have to do it again (cough – WP – cough).

    Enterprise systems have a lot going for them, that’s sadly been masked by a perception that they must be old, decrepit or not-fit-for-purpose because they’ve been slow to move into the evolving space taken by smaller/more-agile systems. Sometimes it’s true, sometimes it’s not.

  2. Kevinjohn, thanks for sharing your thoughts. I realize I’m showing some bias here. That’s probably mainly due to observing a couple of examples in the past where “Enterprise” projects were over-engineered to a point that it practically stopped all progress. And I also don’t mean to suggest it’s an Enterprise versus Open Source thing, either. There are open source projects that are designed for enterprise-scale.

    And again, my main questions are at the level of programming-language choice. Why are Java and .NET favored in Enterprise? Because there are Enterprises backing the actual platforms? Because there are libraries geared towards Enterprise types of problems (large-scale, multi-lingual, etc). Is it a chicken-and-egg thing — enterprise programmers use Java because there are Java programmers in the enterprise?

    That’s the main thing I’m wondering: What is it about Java and .NET that make them so attractive to large companies?

    I’m not saying that they don’t deserve to be there, or that I know of a “better” alternative. It’s mostly curiosity about what qualities are involved. Part of my question stems from my relative ignorance of those platforms.

  3. Always happy to reply to such a well written piece Dougal. Just glad it made some sense (writing on my mobile is always touch and go).

    I think the big thing to realise if you’ve been away from Enterprise software for a while is that it’s finally moved with the times, and the old over engineered, completely painful to use, horribly un-usable systems of years gone by are no longer (as?) prevalent. In part, accessibility laws have done a huge amount to move this on; even if that wasn’t their key driver. From a CMS perspective, I strongly suggest you look at Adobe CQ to see where the Enterprise market is at:
    http://www.day.com/day/en/resources/video/webcontent-incontext-editing.html

    On to programming-language choice there’s a couple of reasons, and the main one is the one people rarely talk about: The tail wags the dog.

    In university Computer Science students study languages that compile AND can be deployed as stand alone pieces of software. They study what can most get them a job, and also therefore what most jobs continue to be in. The reality is that doing a 4 year degree that is C++, Java or .Net based is probable given the breadth of physical and meta-physical things you program (web apps, traditional software, mobile apps, ePos systems, Tivos, microwaves, Airplanes, robots etc etc).

    To a large extent, caveat caveat caveat, the same can’t be said for PHP or it’s counterparts. They were effectively created or have been specialised for the web. I cannot imagine a 4 year pure-PHP course – what would you learn during years 3 and 4?

    Enterprise software houses, and their equivalent systems integrators (Accenture, ATOS, Deloitte, Wipro, Infosys, TCS etc), all then look at the current and emerging market to look at talent and the software to see how/if/when to pivot. The reality is that there needs to be a huge market shift before any of the 4 symbiotic components will change (enterprise organisation, systems integrator, software, fresh supply of talent). In my life time as a programmer almost 20 years, I’ve seen this happen 3 times: C/Cobol (etc) > C++ and C++ > Java and VB/C++ > .Net.

    Given that these are “effectively”, and at a very high level, replacements for each other, the RoI was quite large (given that the change was relatively small).

    Compare that with the move to WebBased “software”; and of course the constant having to keep up with browsers etc and you add in a layer of change that is more than a leap from the others, as well as the additional constant change forced upon it by “us web folks” and of course the browser market.

    Real World Example alert: We recently ran a selection process for a FTSE10 company, one of the 10 largest companies in the world, to replace or acquire 21 systems on a decoupled “web ecosystem”. Not one non-java/net piece of software or system made the Top 25 in any category, and plenty were included in the running.

    More than anything though, it always comes down to stability. If I build an app on Java now, I know it will run in 5 years, 10 years, or 15. Of course there may be some issues or maintenance, but by and large it’ll work. The same can’t be said for Python/PHP or even HTML/CSS. Heck I had a conversation with a head of It for a Global company and he asked me to send him a link to the finished HTML5 spec so her could review what it is and it’s impact etc. I had to tell him that I couldn’t as we’d only been writing it for 9 years, and we keep adding new things, so its not done and probably never will be. He was not happy (FYI: guess who’s not getting a responsive site?) Basically, Stability != moving targets; and right now the rate of change for all things web, which includes the languages on which it’s based, is growing at a crazy pace. As long as the rate of change is on the increase, the harder it is to convince risk-adverse stability-focussed organisations that web technologies will fulfil their current needs and their needs in the next 5 years.

    (Hope this helps brother. Lets speak soon)

    • I know this reply is coming long after-the-fact, but just pretend that I spent a lot of time mulling it over.

      So my take on your (excellent) notes is that one of the key aspects of Enterpriseyness seems to be risk management, in environments that tend to be risk-averse. Personally, I think that when it comes to web technology, companies go too far with this idea, perhaps because they carry the “change is bad” stigma over from more real-world processes, such as manufacturing physical products (where change is often very expensive). I’m not saying that change shouldn’t be approached with caution (especially where business is concerned), but with web deployment, it is often easier to manage that risk than it might be in other aspects of a business. In many cases, a problematic change can be reverted by simply rolling back to the old version!

      And yes, I think I’d have to agree with your tail-wagging-the-dog observation for what languages are espoused in colleges. I just remember about a decade ago, my wife was taking some graduate courses and had an entry-level programming course. It was taught using Java, and my first reaction was “Why? Java is a terrible language to teach programming to beginners.” I know that the reasoning behind it is that they’d be using Java in the more advanced coursework. But I had to wonder how many people they discouraged, because on top of the basics of variables, control flow, and algorithms, you add all the weight of strict datatype matching and object-oriented concepts. Teaching in Python, Ruby, or even Pascal (I’m showing muy age) would be better for beginners.

      Oh well, just my final few thoughts. For now. :)

Leave a Reply

%d bloggers like this: