IT Infrastructure As a House of Cards
snydeq writes "Deep End's Paul Venezia takes up a topic many IT pros face: 'When you've attached enough Band-Aids to the corpus that it's more bandage than not, isn't it time to start over?' The constant need to apply temporary fixes that end up becoming permanent are fast pushing many IT infrastructures beyond repair. Much of the blame falls on the products IT has to deal with. 'As processors have become faster and RAM cheaper, the software vendors have opted to dress up new versions in eye candy and limited-use features rather than concentrate on the foundation of the application. To their credit, code that was written to run on a Pentium-II 300MHz CPU will fly on modern hardware, but that code was also written to interact with a completely different set of OS dependencies, problems, and libraries. Yes, it might function on modern hardware, but not without more than a few Band-Aids to attach it to modern operating systems,' Venezia writes. And yet breaking this 'vicious cycle of bad ideas and worse implementations' by wiping the slate clean is no easy task. Especially when the need for kludges isn't apparent until the software is in the process of being implemented. 'Generally it's too late to change course at that point.'"
In most organizations, the IT department is treated as pure cost instead of something that provides strategic value. These IT departments have no chance of getting a budget approved that will allow them to "start over" on any part of their implementation; hence the constant onslaught of temporary fixes and patches.
"It's a reverse vampire...they....they crave the sun!"
If you don't invest the time to do something properly the first time*, you've increased the cost several times over since the wrong decisions will progress & amplify into even worse decisions & implementations meaning the cost to get back to a correct solution will only increase. And since you'll accrue dependencies on your wrong decisions, the costs will just amplify more.
* Doesn't mean you solve the problem the right way the first time. But it does mean that you are able to identify when things go beyond implementation problems into architectural & process problems & solve those before they become even bigger problems.
...but I believe in Duct Tape.
As long as your backup and tertiary machines have different kludges keeping them running, there's no problem...
Maintaining code is boring.
Everyone wants to work on the latest and greatest stuff, no one wants to maintain or even release patches.
It sucks, especially since it isn't limited to just software development.
I've seen companies where their "core switch" was a Cisco 2548. This wasn't 10 years ago, this was last year! Unreal.
Sent from your iPad.
Paul was mostly talking about the software vendors peddling completely outdated designs, where presumably the product is something they that are selling (i.e. s/b a profit center). The problem (in this case) does not reside with the users (customers) of such products, who are probably blissfully unaware of the sort of c**p that they are dealing with.
There are a lot of people writing shitty software. Film at 11.
... and then they built the supercollider.
Well, sure, IT departments place the blame there. The problem, though, is not so much with the products that IT "has to deal with" as with the fact that IT departments either actively choose the penny-wise-but-pount-foolish course of action of applying band-aids rather than dealing with problems properly in the first place, or because -- when the decision is not theirs -- they simply fail to properly advise the units that are making decisions of the cost and consequence of such a short-sighted approach.
When IT units don't take responsibility for assuring the quality of the IT infrastructure, surprisingly enough, the IT infrastructure, over time, becomes an unstable house of cards, with the IT unit pointing fingers everywhere else.
If your process -- whether its for development or procurement -- doesn't discover holes before it is too late to do anything but apply "temporary" workarounds, then your process is broken, and you need to fix it so you catch problems when you can more effectively address them.
If your process leaves those interim workarounds fixes in place once they are established without initiating and following through on a permanent resolution, then, again, your process is broken and needs fixed.
You don't fix the problems with your infrastructure that have resulted from your broken processes by "wiping the slate clean" on your infrastructure and starting over. You fix the problems by, first, improving your processes so your attempts to address the holes you've built into your infrastructure don't create two more holes for every one you fix, then by attacking the holes themselves.
If you try to through the whole thing out because its junk -- blaming the situation on the environment and the infrastructure without addressing your process -- then:
(a) you'll waste time redoing work that has already been done, and
(b) you'll probably make just as many mistakes rebuilding the infrastructure from scratch as you made building it the first time, whether they are the same or different mistakes.
Magical thinking like "wipe the slate clean" doesn't fix problems. Problems are fixed by identifying them and attacking them directly.
Kernighan & Plauger
The Elements of Programming Style
2nd edition, 1974 (exemplified in FORTRAN and PL/1!)
i guess its ok that the sysadminds coopted the work 'implemented' where one would normally
say 'installed'
but that kind of leaves the actual implementors without a word now
and in this particular usage, its kind of odd, because usually the best time to
find and fix these problems is exactly when its being implemented, rather than
when its being installed
The whole system is held together by superglue and duct tape because no one wants to pay for a replacement part. This goes for both physical and software analogies.
Job? I don't have time to get a job! Who will sit around and bitch about being broke and unemployed then?
Wait, you mean there have been newer and faster processors released since then? So Mordac really has been hiding something from me...
Damn_registrars has no butt-hole. Damn_registrars has no use for a butt-hole.
Adventures in Mommyville
It a similar effect as when management brings in a new product or consulting group that is the "silver bullet" that will solve all the problems.
In the defense of IT, those people they're trying to advise aren't always the best at taking advice. (But then again, neither are IT admins always the best at giving it.)
The World Wide Web is dying. Soon, we shall have only the Internet.
This the essence of technical debt. Whether you're programming or deploying IT infrastructure, it's inescapable that sometimes you're going to have to include kludges to work around edge conditions, a vocal 1% of your users, or whatever. These kludges are eyesores, and fragile, but they're also as far as you could go with the time and budget you had.
Sometimes, accruing debt like this enhances your liquidity and ability to respond to change, so avoiding all kludges introduces other more obvious costs that slow you down and make you seem unresponsive to users or customers. But you can't just go on letting your debt grow all the time and not eventually come up technically bankrupt. Let it grow when you have to, but just as importantly make time to pay it down. A lot of this stuff can be paid down a little at a time, as you come across it a few months later. The pay-off if you're vigilant is that the next ridiculously urgent fix to that system can often be handled much more easily, without dipping down further... with patience and attention to maintaining this balance, you can reduce your technical debt and make the whole system hum.
The downside is that there isn't a quick fix when you find yourself deep in technical debt. You can't just spend all your time reducing it; your highest aspiration at that point should be maintaining the level of technical debt, rather than letting it grow, but it's generally been my experience that altering the curve of debt growth even a little can set you on the right path.
--Matthew
There's nothing more permanent than a temporary fix.
the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff
Long ago, at one customer, the desktops grew weak. So they hit upon the idea of using a Windows terminal server to prop up their aging desktops. By gum, that worked so well that they replaced their desktops with thin clients throughout over the next year. Now, a few years after that, their terminal server handles everything from Solidworks viewers to web browsers and it's sagging under the load... and out of warranty to boot. Time to get a new server... only the economy has hurt their business terribly and they currently can't afford one.
In short, they're screwed. Too tied to Windows to easily jump platforms, too tied to thinstations to easily return to the desktop environment, and too broke to maintain it.
With reasonable men I will reason; with humane men I will plead; but to tyrants I will give no quarter. -- William Lloyd
It's the products that are still based on the old, supposedly 'crusty' C/native instruction code that I look for. Obviously, some products are dependent on libraries that have changed and are thus no longer compatible, but those that do still work tend to work VERY WELL on modern hw.
The modern stuff that's supposedly superior is slow and bloated as hell.
From the original message we read that the "code was also written to interact with a completely different set of OS dependencies, problems, and libraries." This seems to imply that the IT organizations are allowing outside interests to dictate the rules of the game. If there were a stable set of operating system calls and libraries to rely on, then the software vendors would have an easier time maintaining software. I recognize that Linux changes, but the operating system calls work well and API is quite stable. I have used UNIX for a long time and I have compiled programs from 25 years ago under Linux. There have been some additions since then, but the basics of Linux work like the basics of UNIX from 25 years ago.
At present there are some applications available only on Windows and some only on Windows/Mac OSX. This might be difficult to change, but going along with someone's plan for computing which is based on continued obsolescence seems inappropriate. At least those who are more or less forced by software availability to use Windows should investigate Linux and negotiate with their vendors to supply Linux solutions.
Computers are hard to manage and hard to program. It is not helpful to undergo regular major overhauls in operating systems.
Ray Seyfarth, ray.seyfarth@gmail.com, http://rayseyfarth.blogspot.com
Terry Childs rebuild the network and look at him now!
If you start over you may be the only one how know how it's works and then some day the PHB will want to mess with it / replace you with a min wage guy who may not know much about how things are setup and can make it to a big mess.
This happens in commercial software development, too. There's this belief (often held all the way up the management chain to the top) that software, even bad software, represents some kind of massive, utterly permanent investment that must never be thrown away and re-written.
I've worked with managers who would think nothing of throwing away a million dollar manufacturing machine to replace it because it's old, yet cling with all their might to ancient software code that represents a similar level of investment.
It's good that windows 64 kills the old 16 bit apps off.
But it will be a long time before the old windows 32 bit windows 9x code base it gone in many apps.
How is it good? It leaves the entire internet vulnerable. It pushes people not towards Linux but towards outdated versions of Windows and more or less guarantees the future has 32 bit OSes.
Look at what is keeping people from adopting Linux: Small, niche programs.
With outdated versions of Windows already online, can we afford to push even more people to old, closed, OSes with no future of getting patches?
Taxation is legalized theft, no more, no less.
It doesn't look like "doing it right the first time" is an option here. RTFA. They're talking about vendor applications being crappy and crufty, and IT departments being required to support them. The IT department didn't pick the app, and isn't allowed to not support it. They can't switch to another app (usually apps like this have little or no competition, and they're probably locked-in anyway).
So there's really nothing they can do but complain as long as they're required to support some shitty application on the latest version of Windows, as these are the requirements set down by upper management.
I'd mod you to 11 if only I had the points.
He put his boots up on the table and made a face. "The sig," he smirked. "You can waste your life in search of the sig."
I'm a consultant that gets to see into the IT world of over a hundred organisations, and I see one major failing that companies make that cost them later:
They fail to keep up with the times.
Nowhere is this more evident than the leviathan government organisations still running Novell and Lotus Notes, on barely patched versions of Windows, with the browser restricted to IE6. Every time I see that combination, the word "expensive" comes to mind.
Solutions that used to be the best are now simply redundant, outdated, incompatible, and expensive to maintain. Inevitably, the whole thing becomes so flaky that it will crash if you apply even security hotfixes, let alone major OS upgrades. This then makes everyone nervous about making any changes at all, which just exacerbates the problem, because by moving more slowly, the organisation falls even further behind the latest generation.
If you're a developer, than the analogy would be a software development organisation that doesn't keep up with the bug fixes until the code becomes so unstable that making any change to it is a gamble. This then means that even applying bug fixes is likely to just break more things, and then the whole thing snowballs until it's best to cleanse the source server with purifying fire. Or better yet, it's like a development company that never bothers to switch to newer versions of the Java SDK, eventually falling so far behind that it's too hard to make the huge leap required to catch up, instead of the many small steps that could have been taken.
The source of the mistake is short-sighted managers always choosing the easy thing instead of the correct thing. Taking small upgrade steps to keep up is critical, because large steps are very hard. A system that doesn't change for years is a temptation for lazy developers and administrators to bake in the peculiarities of the environment, instead of being forced to develop generic and supportable solutions that won't break after an upgrade of a related component.
companies that over-promise and assume linear growth, observe startup companies with great features and expect retooling their product to compete is a 20 minute job, and have a culture of worthless slags content to wallow in old code as a means to avoid having to learn anything new. reacting in IT to parabolic growth is difficult and patches are cheaper than extended downtime or the methodology to prevent it being instituted in a live system.
Good people go to bed earlier.
I'm going to tackle some of the conceptual problems that are hinted at above, which is usually where the difficulties lie, usually in trying to use the wrong software and expecting to somehow "make everything better" if you just make it work "my way" - the true "Magical Thinking".
I tend to agree with your conclusions, "wipe the slate clean" is a drastic action. I disagree with some of the approach you use to arrive at them:
a.) Problems are solved by people being invested in solving them, not process. This requires the antithesis of "Units" - Ownership; Ownership in the company, Ownership of the mission, and a direct heart felt connection to the success of the company. Until you have staff, from the CEO down, that own problems, from the mess in the coffee room to server down time, you will have a "business house of cards" no matter how good the process. In fact, most of the time, fixing things involves re-writing and/or reconsidering process - usually starting with asking the question - "Do we really need that?"
b.) Sometimes you really do have a train wreck on your hands. If you have mastered a.) b follows almost effortlessly, because now, you can *talk* about this behemoth that is eating your company and everybody sees the discussion for what it is, not empire building or managerial fingerprinting.
when you run into a train wreck - assess your tech problem - is the fix easily found? Are your processes using the software at cross purposes? if so, which is cheaper to fix? No amount of bug fixing will repair using the wrong software. It won't even fix using the right software in the wrong way.
In the end, re-asses often, be frugal, not cheap, if it truly is a requirement to run your business, buy the most appropriate. If you've made the mistake of buying a Kenworth long hauler when you needed 3 old UPS trucks - admit it, sell it back, take your loss and get what you really need.
Thats not "magical thinking" it's just common sense.
More than any other type, businesses are run by salesmen. These are people whose strongest attributes are the ability to build relationships, to communicate value, and a strong inclination to increase their personal wealth.
Increasingly, the stuff salesmen sell is based on complex technologies that, really, are beyond the reach of their comprehension. They kind of understand the products they sell, but really, they don't. If the world only had salesmen, there wouldn't be any sophisticated products.
Say hello to the engineer...a person who builds products. His strongest attributes are a desire to solve problems, a willingness to absorb the tedious but essential details needed to build a complex system, and a personality that derives gratification from doing so.
We now begin the business cycle. The salesman says, "Build me something I can sell."
The engineers says, "I will build you something that works well."
And therein begins a lifetime of the two, symbiotically, talking past each other. The engineer serves the salesman, and the salesman serves himself. But make no mistake about it: the salesman is in control.
For a salesman, QUALITY means it works well enough for him to sell more, and most importantly, to make more money for himself. For an engineer, QUALITY means it works reliably and efficiently. To be sure, QUALITY is an abstract and moving target that varies according to the eyes of the beholder. But to understand why we have the predicament described in this article, we need only understand the SIGNIFICANCE OF QUALITY TO A SALESMAN.
I would continue to expound, but then, most readers here need only reflect on their already frustrated pasts to understand the mechanics of this convenient but often vacuous relationship.
I thought IT guys broke shit unnecessarily to maintain job security.
Both are, IMO, essential, which is while while I pointed at particular areas of process, my big picture message was about IT shops taking "responsibility for assuring the quality of the IT infrastructure."
Neglect of process is a symptom of people not being invested in solving problems that leads to bad results on its own, but even a good (nominal) process isn't going to work well if people aren't invested.
I prefer "responsibility"; "ownership" is, IMO, misapplied here. (Though, arguably, one of the reasons people do not take responsibility is because they don't, in fact, have ownership -- but ownership is a material relationship, and responsibility is the relevant attitude.)
But I think in substance we generally agree.
You kind of contradict yourself there: if fixing things usually requires changing the process, then "how good the process" is obviously has fairly direct bearing on success. The key thing is that processes aren't good (or bad) in a vacuum, they are good or bad based on the effects they have in your organization, in acheiving your mission; the same nominal process that is good for a group of people when considered against one mission is going to be bad for the same group of people when considered against different goals, and the same process that is good for one group of people with a given mission will suck for another group of people with the same mission, because people matter.
I was torn between modding this up and commenting.
I picked commenting.
This statement:
Everyone wants to work on the latest and greatest stuff, no one wants to maintain or even release patches.
is very, very true. We (Apple) have a hard time getting applicants who want to do anything other than work on the next iPhone/iPad/whatever. Mainline kernel people are difficult to hire, even though the same kernel is being used on the iDevices as is being used on the regular Macs. Everyone wants to work on the new sexy. For some positions, that works, but for most of them, you have to prove yourself elsewhere before you get your shot.
I think that, for the most part, we see the same thing in marketing for higher education (with the exception of one track, one of the universities I went to has become a diploma mill for Flash game programmers; sadly, I would not hire recent graduates from there unless they have an experience track record). There are video game classes at most universities, but while it might be sexy, you are most likely not going to be getting a job doing video games, 3D modeling for video games, or anything video game related, really, unless you get together with some friends and start your own company, and even then it's a 1 out of 100 chance of staying in business.
I don't really know how to address this, except by the people who think they are going to be the next great video game designer remaining unemployed.
-- Terry
... The IT department didn't pick the app, and isn't allowed to not support it....
And they expect you to integrate it with all the other apps that other departments/teams picked without consulting IT for the past 10 years
Fear, Uncertainty and Doubt = [citation required]
There is constant pressure to re-implement existing architecture. Most of the time, the people who want to do this do not have a clear understanding of the business process involved, don't realize that the existing frameworks represent years of bug fixes and are at least stable for that reason. They only think "Wow this sucks, a new one would HAVE to be better."
I'm not saying that you should never rebuild something from the ground up, but the scope of the project should be limited and the entire endeavor should be well documented and well understood from the beginning. And if the guy who's pushing for a rewrite can't demonstrate a deep and fundamental understanding of the business flows being automated, he should be taken out and shot (Or at least pummeled soundly.)
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
We do, I think the difference is that my experience has been fixing projects starting from a technical complaint to an outside organization and helping those in an IT/Technology organization drive changes up thru their organization, often into the CEO space when needed. From your choice of wording, I suspect, your experience in this might start higher up the product chain.
I probably expressed that poorly. To put it another, hopefully more correct way - For organizations you can help (there are plenty that are unreceptive to this kind of help) you have to have to start with the culture. Identify those who have true involvement, are willing to risk take, have decision power... and get all of them committed before you can fix the process, which then finally lets you help fix the bugs/tech. Lather, rinse, repeat till organization functions.
In particularly ill organizations, there is no way to separate these items (or the combatant parties :-)) long enough to obtain a fix. You have to wait till the financial realities drive some common sense into the organization. Sadly, for many businesses, this is too late
DosBox? VMWare?
Peter predicted that you would "deliberately forget" creation 2000 years ago...
Been there, done that.
If you've got even a small or medium sized enterprise application (whatever that buzz word means) at a larger company (Boeing, for example), it might have its hooks into a dozen or more peer systems/hosts/databases/whatever. They are all 'owned' by different depatments, installed and upgraded over many years. Each on their own schedule and budget. When one group gets the funds together to address their legacy ball of duct tape and rubber bands, they roll the shiney new hardware in and install the spiffy new app. But everyone else is a few years away from affording new systems. And so the inter-system duct tape is simply re-wrapped.
The IT department tried selling everyone on architecture standardization. But due to the gradual pace of system upgrading, the plan was out of date before everyone got caught up to the old one. And today's 'standard' architecture wouldn't play nicely with what was state of the art a few years ago (thanks Microsoft). The whole architecture standard ploy is a salesman's pitch to get management locked into their system. Unless you've got a small enough shop that you can change out everyone's desktop and the entire contents of the server room over a holiday weekend (another salesman's wet dream), it ain't gonna work.
The solution is to bite the bullet and admit that your systems are always going to be duct-taped together. And then make a plan for maintaining the bits of duct tape. There's nothing wrong with some inter-system glue as long as you treat it with the same sort of respect and attention to detail that one would use for the individual applications.
Have gnu, will travel.
DragonWriter sort of hit on this - and I'll leave the whole 'start over' concept to Joel and that older thread that seems to surface every few years. I don't develop software, I run an IT shop. And this issue bites me all the time - band-aiding apps and communications together until you don't know what is driving what.
You see, I'm constantly battling application creep - sometimes it's unavoidable because there really are not many options for some specialized needs. Sometimes I don't get to choose - it was purchased and the first I hear of it is to install. Although I'm morally in the clear to say 'go screw' - it's wasting money in the truest sense and I can limit that by 'getting it to work'. Now we hit on Weigel's post on technical dept. In an application - this might be easier to measure. With infrastructure, it's harder to document these future issues or temporary workarounds in some meaningful manner (open to suggestions). You of course are reminded when they bite you, but faced with time pressures of broken processes, wailing users, and the scramble to fix - the fix doesn't always get the proper attention it really needs. Again, we'll do the 'real' fix next week. (lather, rinse, repeat).
On the hardware front, sure I often get to choose the vendor and product - but it's still gotta perform some needed function - and at times I get to choose from bad, or really bad, or just won't work. I also have both inherited and purchased various servers that were available cheap or free (you keep on using that word - I don't think it means what you think it does), and then deal with odd ways of dealing with things like authentication, unique settings and variables (example = unique ways to identify 'today' or count time), and the growing skill set to maintain them. Again, not by choice or design, but by the reality of larger institutions.
I'd love to see or hear about ways to minimize this - or at least fend it off fairly well. I'm certain I'm not alone - but keep in mind the politics and realities of being in a larger institution.
Comment removed based on user account deletion
The problem with the whole idea of "if we only had enough documentation and change control" is that it becomes a non-trivial event to actually read through the documentation. Let's take an imaginary system that's been in production for 5 years...assume every last drib and drab of change has been documented...now you've got a 2000 page document and several hundred change records that tell you *everything*. Except, when it comes right down to it, mastering that 2000 pages of documentation and all the changes made afterwards is a months if not years long project - hardly effective for dealing with production problems that need to be solved in minutes or hours.
The illusion being perpetrated here is that people are interchangeable, and if you just have enough documentation, you can replace Mr. Jones with 20 years of hands on experience with the system with Mr. Vishnu living in Bangalore (or even Mr. Smith in the next cube, for that matter), with a net cost savings.
Now, I'm not saying documentation is a bad thing -> lord knows, it helps to have a knowledge base you can search...but knowing what to search for is knowledge you only get by real world experience with maintaining a production system. This is not digging ditches, boys and girls, this is skilled, if not essentially artistic labor.
Simply put, people matter more than process.
We (Apple)...
...
...has become a diploma mill for Flash game programmers; sadly, I would not hire recent graduates from there...
Sounds about right to me!
Odds of +1 funny over flamebait/troll/offtopic: slim to none. I just hope your 2548 dies before you can mod me down!
The problem, though, is not so much with the products that IT "has to deal with" as with the fact that IT departments either actively choose the penny-wise-but-pount-foolish course of action of applying band-aids rather than dealing with problems properly in the first place, or because -- when the decision is not theirs -- they simply fail to properly advise the units that are making decisions of the cost and consequence of such a short-sighted approach.
I've found the problem to almost always be the last thing listed. It's the contractor syndrome. "If you give me $1,000,000 now, I'll save your $500,000 a year for the rest of the time you'd have used that." Well, they think you are lying. They think that you wouldn't actually save the $500,000 a year, but would take the $1,000,000 this year and add it to your budget as a permanent line item, costing them $1,500,000 a year, rather than saving $500,000.
You can blame the IT director/manager/CIO/whatever for not being convincing enough, but there seems to be a pattern where people bid low then have massive overruns where the highest bidder would have been cheaper. As such, the people the IT person is talking to are often so jaded they don't trust anyone with price estimates.
When IT units don't take responsibility for assuring the quality of the IT infrastructure, surprisingly enough, the IT infrastructure, over time, becomes an unstable house of cards, with the IT unit pointing fingers everywhere else.
And when the IT units have the responsibility, but not the authority to fix things, what then? Most all places tie the hands of IT then complain when the solution isn't perfect.
Learn to love Alaska
You have a mummy. And they have amazing powers. This is also why all software hates Abbot & Costello.
Design your user interface as a standards complient web interface. Why is there any need to code a native client to a system at all? A web interface can easily and rapidly be tweaked as browsers evolve, tweaking or rewriting binary applications is much more involved.
After logging in slashdot still does not take you back to the page you were on. It's been that way for 20 years.
n/t
While the technology environment can degrade over time due to poor processes, just as important is getting it right in the first place. In my experience, the IT team often lacks any architectural capability when the department is set up, typically because it's "too small" or their needs are "simple". As a result, nobody with the necessary qualifications/experience/mindset really thinks about the business' strategic requirements, they just go for "best practice". Unsurprisingly, "best practice" by itself simply means whatever fad the technology industry is pushing at the time.
Many of the posters above are right in saying that simply throwing it all out isn't the solution, however, throwing away all the assumptions, determining the strategic requirements and then reconciling those with the existing landscape is the way to do this. Sometimes that then results in things being replaced, but sometimes it does not.
Every other business unit does (or should be doing) this during the corporate strategic planning cycle, why does IT not? Sadly, the reason is normally the organisation only really has one "primary" business unit and it excludes IT from the strategic planning altogether. It's IT's job to convince the decision makers that they ought to be partners in strategy, but IT's normal lack of rigour in processes and particularly in financial management that prevents them from having the ammunition to fight for a place at the table.
Seems to be the syndrome. Everybody used Intel, MS and other devices to save cash and swap out over the next few years.
Why buy a huge expensive box that would rot in place when you could buy a cheap unit and swap it out later.
Nobody understood really where tech was going.
They went cheap so when they had better cash flow and market direction they could slot the future in at a fair price.
The good news is someone made the right calls or got consultants who did. They might have got big boxes and it scales or a smaller setup up that was designed right and it can scale too.
If your mission critical the feds or states will bail you out, for the rest, learn, share, name brands that worked or failed and move on.
Domestic spying is now "Benign Information Gathering"
For what it's worth, Microsoft outsourced their IT to India. You're asking a question of fountains, and your bosses see extraneous plumbing...
This reads like those "articles on investing" written by mutual fund companies. After all, isn't the publisher in the business of selling software and services? If your stuff works, it will continue to work for the same requirements if you don't mess with it. Sometimes there's more risk in starting over: "Hey (insert-born-in-1990's-name here) let's rewrite the airliner's flight control software as a facebook app, it's out-of-date."
Where does one start?
1. Management is old. They grew up with horses, not computers.The times were booming, they were arrogant, and never really learnt what computers were. These old fucks think saying "I don't know" brings about immediate death and dishonor by Klingons. Never back down. Never let them see you sweat. Never say I'm sorry. WEAKNESS!! Bluff and Bluster and Bullshit. Testosterone, Balls not Brains. Well, it has caught up to them. And their portfolios are down 50%
2. Computers should have changed every profession. But the established professions won, and IT pros were never given the status of doctors and lawyers. IT are glorified houseboys that fix the gizmos.
3. Management cannot tell a good programmer from a bad programmer from a superstar.
4. We needed Leonardo Da Vinci, or Newton to be the super programmer, the man who mastered many fields to head up the premier vanguard computer company, to blaze new trails, to go where no one has gone before, to rewrite the book. Instead we got the man child Bill Gates (spraying the ocean into the clouds), The Control/Acid Freak Jobs, and the 'I am CEO, bitch' Zuckerberg. Not good role models.
5. Sales, of course, saw the stupidity of upper management, and has sold them a never ending supply of silver bullets. Go Sales! Good Work. At least part of the world still works.
6. Here we sit, a bunch of old obsolete programmers, generations of wasted Cobol, Fortran, Visual Basic programmers, GENERATIONS wasted so that BIGCOMPUTER could sell another round of snake oil languages. No upgrades, no transitions. Willful, purposeful obsolescence of GENERATIONS of the best talent computing will ever seen, purposely obsoleting the founders.
7. Here we sit, Obama pumping out new regs and laws, that need to be complied with, 1099 form for every purchase over $600. LOL!
8. Here we sit, with piles of obsolete XP gear, OFFICES FULL of obsolete computers so that BIGCOMPUTER can sell another round of upgrades.
9. Here we sit, the WITH NO CAPITAL to upgrade with, and no where to borrow it from.
10. Here we sit, no fresh round of cheaper and cheaper and cheaper programmers anywhere on the planet
11. Here we sit, with the economy in the crapper, the very currency we get paid with threatening to disappear faster than privacy on Facebook
12. Management wants disposable, interchangable cogs. Management HATES craftsmen. How long have we been called RESOURCES?
13. The disposable people religion and outsourcing has all organizations gutted of institutional knowledge and continuity.
14. The emerging world and upstarts like google are inside the OODA loop of the establishment. Fear. There is nothing deadly than an old man, losing his grip.
15. No succession planning. No new blood. No grooming. The oldest of the boomers and the silent generations still run things. Their cold dead hands will need to be broken from the wheel. Where is Bill Gates stable of new hot shot new superstars? No where. Because these old fucks can not and will not share the stage.
16. Corruption. The last 15 years have been built on corruption, gambling and Ponzi schemes. If you are under 30, all you have every known is the bubble world. Why produce value, when you can leverage and gamble? Rape and Pillage?
17. IP laws. Lack of R and D. Nobody wants to spend money on innovation. And who let the lawyers in? You know, lawyers. The guys that still keep ALL THEIR FILES ON PAPER? Which profession speaks gobbley gook and hides behind confusing langauge again?
18. Time has sped up. Shit is changing outside the walled garden and the barbarians don't care about your delusions or your status quo.
19. External Threats. The developing nations buy more oil and cars than the G17 countries. Yep.
20. Documentation. There is none. And the primaries and principals and the founders are gone.
What are we going to get? Some dufus with a cool handle, a diamond encrusted ipod and blog with groovy graphics, born with a silver s
The summary thinks code for PIIs is old. HA! My employer is still running programs where the base was written in the late 1960s. IBM mainframe assembler code. It has had dozens of developers with differing styles (and skill levels) working on it over the decades. It's still being patched when there's no way around it, but it's no surprise that result of all those years is unmaintainable. IS management is afraid of replacing it due to how fragile it is and they think it works although I find issues with the results it generates on a fairly regular basis. How much sense does that make?
Interesting. My career goal is to do quality work maintaining and improving existing product lines. It's hard to find these jobs!
-josh
It seems to me like the people that are interested in the new sexy, are not going to have the experience to work on something like the mainline kernel anyways. Need someone to work on the Safari app on the iPhone? I imagine a new CS grad that's slightly above average could fit the bill. But hardcore kernel work? It's not like you're going to take on all willing applicants for something like that.
To me, the barrier to entry seems much higher for at least your kernel example. Is that the case?
"Upon attaching the waterblock to my penis, I began to notice that I know nothing about computers." -- JRockway
I am shocked! Shocked I tell you. Apple applicants are only attracted to shiny new things? And all along I thought it was just the customers.
Everyone wants to work on the latest and greatest stuff, no one wants to maintain or even release patches.
I don't really know how to address this, except by the people who think they are going to be the next great video game designer remaining unemployed.
Here's how you address it: you hire one of those 9 out of 10 CS graduates who "Just got in it for the money". Had you offices in the Midwest, you'd have no problem finding programmers whose only ambition is to crunch out brain-dead code until they can move into management. Trust me, I work with these people and they're even worse than the primadonnas interested only in the "cool" things. Naturally, not everyone can be the next game programmer, or work on cool things, but you probably don't want to hire those whose only ambition is to do the grunt work.
Typically, the primadonna has to have his ego coaxed into doing the grunt work. But you can usually count on him to do it fast, and not to make a total mess of things. Granted, some people have a higher estimation of their abilities than their peers. But at least someone passionate about coding can be inspired to improve their code; they'll actually accept coding standards once reasonably explained. But here's a short list of problems with the typical "career type":
It's easier to convince a rock-star programmer that documentation is necessary than it is to convince the career-track political programmer that a race condition is a problem, that architecture matters, that maintainability and scalability are important. Just the other day, I had a department manager question the value of writing reusable code - in fact, he was so hostile as to suggest that it wasn't worth our time to make code reusable... (And not only that, but reported to my boss that my suggestion otherwise was "distracting to what we're trying to accomplish here"...)
I know the starry-eyed programmers can be a handful at times, but those indifferent to technical issues will lay a minefield in your company. Suddenly, years after they've moved on, you'll find your new hires telling you the projects they built aren't worth salvaging, that you'll have to start over, etc... I've seen these types move into management and turn an otherwise fun profession into a death march. You don't want the stupid, or the political, types of people writing code. They'll set your company up for failure every time.
The society for a thought-free internet welcomes you.
Funny thing, I'm graduating next year and *like* doing kernel work... My actual track at school is Programming Languages & Compilers, but I've known how to do low-level stuff since high school. Would you happen to have a contract email address you can send me?
Comment removed based on user account deletion
Comment removed based on user account deletion
Comment removed based on user account deletion
There is non-trivial value in IT systems and supporting hardware and frameworks that can be expected to continue to operate for many many years perhaps as much as several decades without significant change.
This concept is contrary to the views of many "modern" software and hardware manufacturers who have a vested interest in continuing maintenance and support and therefore have no reason to invest heavily in testing as whatever bugs their customers report will be fixed next week by the next compile'n ship patch.
By letting the inmates run the asylum -- failing to insist on systems designed from the core to be maintainable, expandable and operate in a sane and correct manner you as an IT manager are only encouraging crappy products and outcomes from your vendors.
Call me a heretic but I don't see software technology improving much over the past two decades. There are a lot more choices and more opportunties to aggregate the works of others to your advantage saving you time and money but very little has changed in terms of underlying core design principals and fundemental understanding of the nature of the space. There are no meaningful design automation systems for general purpose applications.
Mainline kernel people are difficult to hire...
Well, what do you expect? Apple's kernel is a warmed over Next kernel, which is a warmed over Mach kernel, which is a warmed over BSD kernel. There's probably legacy code in there from the 1980s.
You need to find locate people from other vendors that work on the parts of their UNIX operating system that you want resources in. I do support for commands and libraries (libc and most non-networking commands) identifying problems to line of source.
Your problem is that most people who are happy doing that sort of thing usually don't go out actively searching for jobs since they're happy doing it where they currently work.
The IT department didn't pick the app, and isn't allowed to not support it. They can't switch to another app (usually apps like this have little or no competition, and they're probably locked-in anyway).
Which is, in and of itself, not a problem. IT should not be selecting the software used, because IT doesn't understand what the business needs. IT should give feedback on the technical details in a business-understandable fashion (i.e., the risk of data loss with this product is high, because the producer has a history of not releasing updates when problems are discovered), but it's the business' decision.
However, a strong procurement department also needs to come into play here. When software is purchased, a contract should be drawn up with the producer, safeguarding the rights of the purchasing organization and - if necessary - providing legal venues to enforce them. In this way, you can minimize the impact of hurry-to-release applications by forcing the producer to fix them when you discover problems.
Unfortunately, that's a much easier task for multinationals than it is for SMEs.
With virtualization, the 16 bit applications may end up remaining with us indefinitely. I have a relative who is still using an insanely backlevel version of WordPerfect, and most likely when she gets a new computer, I will end up putting that version of WordPerfect in an XP Compatibility Mode, or a VMWare Workstation Unity session for her, so even though the program still can only understand 8.3 filenames, it still will interoperate with a 64 bit OS.
Another business I have consulted for has an old program that they used to use that would dial their bank via a modem, get changes, then put them in some sort of spreadsheet. This is now still living in a Windows 3.1 virtual machine so they have access to the old records at anytime.
It is interesting that many decision makers choose solutions that become obsolescent by design. By this, I mean that some products are deliberately deprecated and made incompatible with later versions by their developer in order to force the purchaser is made to re-buy what is essentially the same functionality over and over again. This behavior makes less sense when there are often usable alternatives that don't suffer the same vendor deprecation. This applies to software/development stacks, operating systems, document formats etc.
We're all familiar with a particular philosophy of IT management: "Just fix it!". We do, after perhaps noting that this may cause difficulties later on. The answer we get depends on the amount of politeness and insistence we exercise in delivering that message. To cut a long story short: if we're very polite we'll get a pat on the head and a managerial comment along the lines of: "We'll deal with it later on then."; if we're neutral we'll get a comment like: "Just do it, Ok?"; if we're less than polite we get fired (probably after we apply the fix).
In the mean time our manager (no slouch himself) has figured out the optimum time he wants to remain in his particular job. That typically means: he want to get out before the effects of decisions *he* made will become apparent. He isn't worried about correcting poor judgments from his predecessors (as long as it can be done without a fuss: those predecessors just might have moved higher up the ladder and might make things difficult for *him*), the only thing he's worried about is his own record. And that will be closed the instant he leaves.
The typical mistake made by IT personnel is to stay too long in the same job. Don't make the mistake of believing this helps your manager. Sure, it's often a god-sent for a manager to have someone who actually knows what's going on. The downside however is that it plays hob with his possibility to request more staff to do the work and a larger budget for expensive boondoggles because there's always Joe Smith who knows the system so well he can fix it. It makes him look good for keeping things under control, but it restricts his scope for self-aggrandizement. It's also de-motivating for IT personnel to have to clean up the mess you were forced to create (under the firm and slightly condescending guidance of a new manager who has deal with the problems his predecessors caused) all the while being prevented from spending 50% more time and effort "doing it right" than "just fixing it". It's also damaging to your career prospects: you're supposed to *know* the systems you built (even if you never were allotted the time to document them, let alone to update that documentation), and because you do (and because those systems are of course critical) there is no incentive for promoting you or allowing you to move on to a different area.
In buoyant economic times the answer is simple: switch employer every 3-5 years or so. You will face new challenges (read clean up the mess left by others and their managers), but at least you're cleaning up a mess you didn't make (you get to see fresh goofiness and you can learn new things from that), and you can't be held responsible for the way it is. Take a queue from your manager and try to stick to about the same time in your job as he did (plus maybe 1-2 years but not so long as to have to fix the next big crash). In the current economic climate that strategy is of course in jeopardy. Nothing for it then: simply install as much Open Source software as will escape the eye of your manager (because it will usually work better, it's often better documented, it offers more scope to fix things, you can take that particular skill with you, and it's usually a lot more fun).
Need someone to work on the Safari app on the iPhone? I imagine a new CS grad that's slightly above average could fit the bill.
Not really. Safari on the iPhone is memory constrained, and can't tolerate memory leaks or other issues; there's very little headroom there. It's also really performance sensitive, since the code efficiency is directly proportional to battery life. If you are working on something that's baseline software on the iPhone, it has tighter requirements than third party applications.
That said, there are a number of universities that we've loaned employees as faculty to teach iPhone/iPad development; those people might be more likely to get a job working on something like that, but it's generally not an entry level position (all of the position postings, with the exception of the Pittsburgh office, that I've seen require 2+ years of experience, but admittedly, I didn't look at all 368 of the open req's for the iPhone).
There's a kernel position that doesn't require experience, if you have a masters: position #4636787.
We also have internships in various areas, which would give you a foot in the door: position #4727175 (covers a wide range of internships, including iPhone and other CoreOS positions).
-- Terry
My boss recently told me to "stop playing with that Linux thing and do some real work" - oblivious to the fact that it's been running on our production servers for more than five years.... So what I told my boss -- get this --- "tell this to Google too" -- didn't still get it!
I'm easily findable, but I'd suggest doing an internship this year. We generally make offers to interns who impress us. NB: Apple internships are paid, and there's a living stipend on top of that.
http://www.apple.com/jobs/us/students.html
(This also shows the currently open new grad jobs).
-- Terry
Those big shops that get talked about here are not what you describe them as. I spent seven years at one of the biggest and - well, I wish I had those years back. The first thing you need to keep in mind is that the budget doesn't include new code or new hardware and actually it's going to require a headcount reduction and the rest of you guys can just pick up the slack.
Maybe you'll get to spend some time fixing things - but you're more likely to be sucked into some deathmarch project where you don't have enough time to complete it much less debug or document it. Those that come after point at these things and call them sloppy work and say how it could be better if we'd just documented what we'd done. Those fools will have their eyes opened very soon.
Let me explain some basic facts to you: IT is a cost center; it adds nothing to the bottom line. When management is looking to cut costs, it's always among the first targets. And if you do the job well and things work reliably - they won't have any reason to believe you're necessary. First rule of working in large IT shops: keep your resume updated. After enough lay-offs, most of the remaining staff will quit. Then the company coasts along for a while until things start falling apart then hires a bunch more IT people at a higher rate to make things work again. And the cycle repeats, over and over.
Those who blame management for their woes are unaware of how much BS their manager puts up with and how much he tries to keep the executives from tearing the department apart. And after so many years I can only come up with one solution for the whole mess: make IT a chargeable service and charge the various departments / desks for the IT services they request. Try suggesting this at your company and see what they say - they'll say that nobody would request IT services under these conditions. OK, so now we know what the rest of the company feels that IT is worth. I'm sure glad to be far away from that dysfunctional clusterfuk.
To me, kernel and other generally-invisible platform internals *are* the sexy parts, because they require serious geek skill, and often a combination of both software AND hardware know-how to code around hardware bugs, meet perf targets, etc. If these parts don't work, that Flash game is going to have a hell of a time impressing anyone.
A house of cards has to be carefully thought out and assembled. Your comparison is invalid.
Please, have you seen the Walt Disney movie "Never Cry Wolf?" If your IT integration skills lead to a mountain of we'll say junk for the sake of politeness, then maybe its your own skills. I worked at a place where a group of programmers constantly complained that they weren't given the resources to do good work. I was working on firmware and their group was responsible for the Windows software part of the project. Finally our boss came to me and asked me to take over their project. So they were let go and I took over their responsibilities. Good grief, they were coding in C++ and I had given them some simple C code to integrate. I had expected them to take my small c file and create an object out of it. Instead they had cut and pasted the guts of my small code into methods in C++ objects that had grown to thousands of lines. It took me a couple of years, but I managed to refactor all their code and port the system to Java and I added automated testing. I was able to improve the reliability from about a six percent failure rate to less than a one percent failure rate. (Our customers told us that our competitors products ran at about an eight percent failure rate.) If you find yourself with kludge after kludge and go and see the movie "Never Cry Wolf" and then spend less money on Moose Head beer and more on software training.
There is - some of it's very crufty. Some of the newer parts are quite well designed though. The scheduler is quite well designed. The newer VM stuff has a nice design but is in a serious need of tuning. Some of the concurrency stuff needs a complete rewrite - acquiring synchronisation primitives is painful, the new 'amazingly fast' locking that they use for GCD is marginally better than a FreeBSD mutex, and between one and three orders of magnitude (depending on load) faster than a Darwin mutex. Part of this is a userspace problem (not optimising for the uncontended case, which is the most common in good code), but a lot of it comes from the route down through the myriad kernel layers when sleeping a thread.
I am TheRaven on Soylent News
We literally bought a piece of hardware that by the time it left the shelf, the project implemented, and everything was brought up online we had a brand new piece of hardware that the vendor had EOL'd. It's not just a software problem. As long as hardware changes are ever accelerating, the tendency to "make software fit" is going to be a problem. Everyone wants to make "new" instead of "work."
When it is all bandages and no meat left inside - the mummy is like over corrected software.
Dear Apple Insider:
I am a slogger, I am a fixer of bugs, an exterminator of dastardly demons. I don't have the attention span for a 3 month feature development project, or new shiny sexy. I don't care. But I'll spend 6 months tracking down an esoteric timing bug in a application, and slaughter it.
My 5 year plan is, and always has been, to be a fixer of problems, not a creator of new ones, and I have a 15 year track record of proving it.
Some of the concurrency stuff needs a complete rewrite - acquiring synchronization primitives is painful, the new 'amazingly fast' locking that they use for GCD is marginally better than a FreeBSD mutex, and between one and three orders of magnitude (depending on load) faster than a Darwin mutex. Part of this is a userspace problem (not optimising for the uncontended case, which is the most common in good code), but a lot of it comes from the route down through the myriad kernel layers when sleeping a thread.
That problem in Mach is part of what gave microkernels a bad name. QNX, which is a real microkernel (about 65K of code) does thread dispatching, locking, and message passing very fast, in constant time, and without long interrupt lockouts. Those are the functions which must go fast in a microkernel, because they're used so much. In QNX, locking a mutex in the uncontested case is about three instructions in-line, with no system call. Those three functions are most of what the QNX kernel really does. In Mach, they were an afterthought, written on top of BSD.
This really belongs in the "when is it time to rewrite" thread.
[PHB] Do all your projects overrun by 300%? [/PHB]
Confucius say, "Find worm in apple - bad. Find half a worm - worse."
I think I answered this in another comment, but the short answer is, we need google inside the corporate firewall. If you have a viable search engine, then it doesn't matter how knowledge is captured and maintained -> lord knows google hasn't forced anyone to adopt certain documentation best practices, they just slurp everything in and spit out relevant results. Having a good search engine can help mitigate the whole "knowledge base du jour" syndrome (although possibly replace it with a "search engine du jour" syndrome).
Anyway, I do understand that an internal search engine is not a trivial task, but I'd rather let each project team have their own little wikis, as long as I can go to one page, put in a search term, and get results from all of them.
There's a lot to that. No matter how many rules and procedures are in place, it can't replace a bunch of people doing "the right thing" at any given point. If managers could REALLY write procedures with enough detail to get the job done, they would be programmers and if people could actually follow procedures to the degree necessary (and not resign out of unbearable tedium) they would be computers. If you want to see the truth of that, give a manager a book on C and tell them to write a CRM system. You'll notice how the "code" they write will have too many built-in assumptions to even be pseudocode. It certainly won't compile and run.
Try to break things down too much into a bureaucracy and the people can no longer know what "the right thing" might be and even if they can see far enough to get an idea they won't have enough autonomy to actually implement "the right thing".
Oh, I'm getting it Microsoft apps (sarcasm)....hahaha
Designing a simple game for a cell phone that might sell for a couple bucks being a winner may also be 1000 to 1 but at least it doesn't take an army to do.
"Which is, in and of itself, not a problem. IT should not be selecting the software used, because IT doesn't understand what the business needs."
Neither should the bussiness units because bussiness units don't understand the grand IT scheme where everything should fit.
But that's no news... OK, I'll rewrite: that *shouldn't* be news since that's "team playing 101".
"Unfortunately, that's a much easier task for multinationals than it is for SMEs."
Not because SMEs 'per se' since on small companies is *way* easier for everybody to know everybody and for informal comunication channels to stablish worthy thourough information nets. The problem is that on SMEs the "cult to the personality" and the "you won't tell me how to drive my bussiness" is even stronger than in big corps.
When all else fails use a hammer.
--And when the IT units have the responsibility, but not the authority to fix things, what then? Most all places tie the hands of IT then complain when the solution isn't perfect.--
Apparently, this is the norm. Get ready to be self sufficient because this will not last long.
To be blunt, most IT departments act like cost centers and don't provide any strategic value.
IT is treated as a cost in the accounts, they are cost centers. The drive is always to reduce costs, so IT services are centralised, standardised, outsourced and the interfaces between IT professionals and the business, reduced to the "help desk". There is simply no way that the IT dept can effectively know what "value" is with respect to the business units.
It's just the way accounting practice is set up. Accounts are grouped and centralised to make costs visible => IT becomes an industry standard cliche. It might make a difference if the IT funding was centrally calculated, then simply added to the business unit budgets in an appropriate proportion to do with as they pleased.
Deleted
http://www.google.com/enterprise/search/gsa.html
Or the 'mini' (Up to 300,000 documents)
http://www.google.com/enterprise/search/mini.html
Here's the relevant wiki page:
http://en.wikipedia.org/wiki/Google_Search_Appliance
I just linked another person to this in this thread:
http://it.slashdot.org/comments.pl?sid=1663346&cid=32362936