When Should We Ditch Our Platform? 622
odoketa writes "My organization recently had to replace our Web developer. It took us an extremely long time to find someone with the necessary skill set. I don't know if this is because of the platform we are running (which I will leave nameless), or simply because the fates conspiring against us. It's easy to assume that languages or platforms are popular based on buzz, but the rubber hits the road when you have to hire someone to maintain that code. How are folks out there determining when you've backed the wrong horse, and getting back on track?"
Exact same problem with Flash (Score:4, Interesting)
This same thing happened to us with Flash.
Flash was all powerful and pretty. Putting aside the serious deficiencies with flash, hiring quality people to work with it was nearly impossible. The people that where good with flash where graphics designers, they like to do pretty animations and colorful graphics, but they where terrible programmers, and knew nothing about usability and user interfaces. The people that where good programmers avoided flash like the plague ( myself included :), why did I ever go work for them? ). Usability people's first recommendation: dump flash.
So if you are a big enough shop, and you decide to do your web application in flash, you need a minimum of 4 people: A graphics designer to do flash, a user interface guy to design your interface and a programmer to do your code, and a project manager that can make them work together. If you are a small shop, and can not afford 4 people, you should really reconsider your choice of platform.
At the end, we ended up switching to good old HTML, the transition was very painful, but now there are lot more options when hiring, the product improved dramatically, and there is less worry about someone being hit by a bus.
Re:Which platform? (Score:5, Interesting)
Re:Which platform? (Score:4, Interesting)
My unreasoning hatred for Java blinds me to any semblance of logic. I would suggest Ada before I'd suggest Java.
Do you hate the guy? (Score:3, Interesting)
1) Get 3 vendors to bid on replacing it on your platform of choice, without any functionality changes. Triple the price of the lowest bidder, double the price of the highest, and toss the middle guy out. Then ask: Would you rather pay those prices, or live with what you've got?
2) Answer these questions: Is it a mission critical app? Do you have support for all the hardware and software components - or are some so old that you're on your own?
3) Is the existing code really really a mess, or just the usual well-commented mess most programmers like me leave around?
4) What features do you need to add to it in the next year or two? Can they be added reasonably to the existing code base? Will the hardware, OS, etc support the new functionality, or cave under the weight?
5) Do you hate the guy who wrote the original?
Ok, maybe you should weight that last question a little lightly. But at least there's some things to think about before pulling your own plug, or someone else's chain.
Job Trends (Score:3, Interesting)
Re:Which platform? (Score:4, Interesting)
I'm attempting to manage someone else's PHP code, and I can tell you it can be every bit as awful as maintaining alien Perl code. Throw in a spattering of CSS and DHTML, and man-o-man, but trying to read some absent developer's mind can be a nightmare.
So here I am, thinking about redoing the whole thing, just so it makes sense. This is the real problem with a guy sitting in his basement writing your platform for you. Unlike a team where there is proper documentation, notes and usually decently documented source code, you have a collection of half-baked half-used ideas tossed together until they work, but in a fashion so maniacally complicated that you end up spending more time (and thus money) trying to sort it out than if you just simply rolled your own again.
Of course, the guy that follows you has the same problem, because the need to get it into production fast means you don't properly follow conventions either. It's an endless vicious cycle, and PHP is every bit as bad as Javascript, Visual BASIC, VBA and so forth for producing this shitty code.
Re:Which platform? (Score:5, Interesting)
My hatred of Java has nothing to do with speed. The platform has become a giant morass of 'enterprisey' 'solutions' that create more need for more 'solutions'. And all Java 'solutions' must somehow involve XML, because it's standard, and enterprisey.
Re:Which platform? (Score:2, Interesting)
I would highly recommend either Python or Ruby, though my general preference is for Python. TCL is an awful tar pit put there to make it easy to spot academic things that aren't actually useful in reality. They all seem to get trapped in TCL. It's eerie.
Re:seen this before (Score:1, Interesting)
Now here I am. Everything has been set up in such a way that there are days when I automate myself out of stuff to do. Most things are done to established and documented standards. Those things that could not be or were not are documented in case I get hit by a bus. If I had smart, adaptable, quick-thinking replacement(s) that I chose and trained it would probably take a week or two for up to two people to get the swing of things. But if I left without training a replacement or died, I can't imagine the nightmare they'd be living.
Re:Solution (Score:5, Interesting)
I also did one site in Fortran just to see how it would work. Fortran write statements using formats, is a lot better than using C, I'll tell you that much.
Re:Which platform? (Score:3, Interesting)
Answered! (Score:4, Interesting)
He gave the answer to this question in the summary.
"It took us an extremely long time to find someone with the necessary skill set."
This can be unacceptable in just about any organization. Depending upon the definition of "extremely long time", which can vary from organization to organization, this is unacceptable. Most places want easily pluggable modules for positions, so that retirement, death, transfer or quitting doesn't break the organization.
This is the equivelent of "vendor lock in" that
There is an unacceptability in being held hostage to a singular developer. At this point, I usually recommend switching to one of the various CMS setups available. It is much easier to find people able to tweak and update using one of the available CMSes, than some proprietary hack that has less features and no other developers.
While this advice is not universal, it most likely would fit the kind of shop that has a single Web Developer on staff (or contract).
This is based upon the general problem presented, the general details, and my understaning of what is available in the market.
JDK 1.1 (Score:3, Interesting)
Re:Holy negativity pal (Score:5, Interesting)
They develop web applications but only ever test them on windows. These are apps for the government that are for general consumption. Not having a single OS X or Linux testing station is plain wrong. But hay, at least the corporate types got the contract right? Never mind doing the job properly, or even learning what that means.
Also, testing things on Linux, Windows and OS X is a great way to make sure that what you're doing doesn't have hidden quirks. That goes for designing webpages as well as network shares and other network services.
I find Outlook a terribly annoying email client to use, and would prefer to use my own.
When writing documentation, I find it *much* easier to use OS X's screenshot technology and inter-app tools to bring the pieces together. This saves enough time that I frequently go home to write significant amounts of documentation, and it looks great when it is done, and it's done *fast*.
OS X and linux have a superior command line with a complement of tools that is esp. useful when you're batch processing vast volumes amounts of files. I used to write ruby scripts and run them on windows because of a lack of a command line. That is not the most efficient way of doing things. My co-workers were wowed at the things I could do that they just didn't think were feasible because they have no real experience with getting the command line to sing. Large numbers of files is typical when working on software projects.
I like using multiple desktops, I find that much faster and easier to do than work with the almost crippling windows taskbar.
And there's tones of fanboy stuff too.
What I don't get is how anybody thinks that standardizing everything on windows is somehow going to just make everything cheaper and hunky dory. People use other platforms for a reason, and using a bit of intelligence there is no reason why sysadmins can't figure it out. And you get the benefit of not grid-locking yourself into a single vendor.
To me it seems like common sense is being replaced by a rule book. That's why I left for a smaller company, and they let you run what you want - but only support you with stuff they know. It works out great.
Re:But that would obsolete our hardware! (Score:3, Interesting)
Quick answer (Score:3, Interesting)
Is this some scientific/complex application that is written in a language that just isn't popular today, but isn't too large? Well then you "might" consider migrating it over time.
Obviously this isn't something to be taken lightly, because the expense of migration/bug testing and possible validation can be HUGE for large systems.
I only have a small amount of data that you provided, so I can say that I "might" look at trying to expose as much of the legacy system as possible via a web service or some other "normal" RPC call and then look at having another system start to use the business logic in the core system, but have in written in a more modern and common language (Java). You "might" be able to start and pull off parts of the system over time that way.
Re:Which platform? (Score:5, Interesting)
You, Sir, are talking Bullshit. Plain and simple. (Score:4, Interesting)
Since you're not saying which plattform I suspect you rode with some standard fare OSS plattform (which are all very good for 99.9% of all web solutions) for free and expected to get the programmer along with it for $4 per hour or something like it.
You said you had to look hard to replace you guy ("It took us an extremely long time to find someone with the necessary skill set."). You, Sir, are a liar. Here's what really happend: You chose a plattform (... jadajada, Django, Rails, Zope, EZ Publish or even
I tell you what: Stuff this bullsh*t about 'lack of skillset'. I've heard it all many times over and I'm sick of it!
Pay and treat the people the fair and you'll have so many well-versed devs at you doorstep you'll have to shoo them away. And once you've got your favorite, show him/her your web-setup. If he's an OSS guy and you happend to jump on
Oh, and to drive the point home:
If you're really lacking skillset and have a tough time finding it, I've got customers in the US too. I'm a freelance webdeveloper from Europe who also does consulting. Especially for the very sort of situations you claim to be in. Give me a neutral contact email-address here (post it in a child) and you'll get my contact data. Get back to me over your official channel and if we strike a deal and you afterwards can plausibly refer to this slashdot question as being your's I will apologize, stand corrected and you get 200 Euros off the bill. That's fair, isn't it?
And now I ask you, my fellow slashdotters:
What's the bets we'll never hear from this guy again?
Re:Which platform? (Score:4, Interesting)
Depends how you measure efficiency, but yes. (Also depends how you define "framework".)
I'm sure someone could write a book -- I haven't got the experience, but someone -- which covered all the possibilities here. Fact is, this is actually something you want to do your best to translate into numbers, and then have a manager look it over and make the call.
The kinds of questions you want to ask are:
You could fill a book with questions like this, analysis, etc -- it's really a bunch of boring business stuff. And it's going to be very different based on what the framework is, what your project is, the lifespan of your project, etc.
For example: I just finished porting a simple corporate website (and a blog) from an old, contractor-hacked version of a blogging engine to a shiny new one. In the process, I tried to avoid touching the actual engine itself, rather adding our skin as a theme, and adapting the site to the features the engine had, rather than the other way around.
Say what you will, but it took the contractors months to make those modifications, and it took me about a week to port what I saved of their stuff over to the new engine. The old site was buggy as hell, probably because of the contractor modifications. The new one actually works.
Now, a few jobs ago, I was working at a company which had a fairly large .NET app, which had SQL injection vulnerabilities all over the place, and was not fun to maintain. But we did anyway, because it was a big app, and we'd lose money anytime it went down, and so on. Maintenance may have been a pain, but a ground-up rewrite was just not feasible, as much as it was needed.
And then there was the odd job I did -- a single server (an old, retired computer) which sits in a corner, whose sole purpose is to run a single app once every three months. I hacked it together as an AJAX app before I really knew JavaScript, with an ugly, hackish backend, horrible limitations, etc. But it allows one person to do in 20 minutes to an hour what used to take two people more like five hours or more, and allows reports to be sent via email, rather than printed out. And it's only run once every three months, so as much as I would like to patch it up now that I know better, it's not worth it -- it's good enough, and no new features are really needed.
System/36? Newbie! I used a System/34 (Score:5, Interesting)
The thing that was cool about the
One thing that wasn't cool about the
Re:All depends on what you write (Score:3, Interesting)
Re:Which platform? (Score:3, Interesting)
1) Some of the magical pre-processing that occurs prior to PHP script execution prevents you from doing certain things such as doing the work for uploading files through a browser to the server; with PHP alone, you cannot intercept a file upload without PHP first spooling the file off to disk. I use Perl for this instead which allows me to abort uploads in progress as well as provide an upload progress measurement system.
2) Fatal errors cannot be redirected through a graceful handler and shutdown process. This, to me, is retarded, and has recently bitten me on an application that tests and loads third party modules which may have fatal errors even though they pass syntax checking.
3) OOP is still pretty weak. There have been improvements, but it's still incomplete. I don't like, for example, not being able to navigate a pointer tree through parent identifiers which is something that can be done in just about any other high level language. I can fake it in my own app by deriving all my objects from a base class that gets a pointer to its parent in the constructor, but it's not a capability that's intrinsic to the language.
Those are just a few samples, but I'm sure I could come up with more if pressed. If it weren't for the widespread availability of PHP-capable programmers and open source code development in PHP today and I were tempted to choose an alternative, I'd probably fall back to Perl - an oldie, but goody that never let me down.
theres a simple solution (Score:3, Interesting)
Go to the nearest job-search web site and search for your platform. then search for the current modern platforms (dot net and j2ee or whatever) and see what the results are like, if your job advert was the only result for your platform, you should be probably looking to switch platforms.
Thats a very broad brush approach, but at least it gives some idea of the general popularity.
Re:Which platform? (Score:3, Interesting)
I learnt to code in the late 80s and early 90s, when RAD was king. I went to uni and then got a job where J2EE wasn't used. I felt that J2EE had passed me by and my employability was in question.
I transitioned to being a J2EE programmer because I felt I was losing touch with the industry. I was writing front end code using Java 1.0 just 3 years ago and using old unsupported Smalltalk for the server side. I'd been with the company for 5 years starting with the boom. Their pay and conditions went down hill but we didn't lose our jobs and the company was self funded so I didn't regret my time there, but knew it was time to move on. They started to take on J2EE work but were hiring new programmers to do that work.
When I moved to my current job, knowing there was a learning curve, I thought it was just a matter of riding it out. What a rude awakening. No RAD tools. XML hell. Development with layer upon layer of crud that got in the way of doing the job and did little more than require huge amounts of boiler-plate and cookie-cutter wiring code. Even when I'd joined there had been a shift away from EJBs. Now the big thing is wow we have frameworks like Spring to remove the error prone code. Yippee? We're still hand writing visual code using JSP. We're still building monolithic files (jar,ears,wars) with lenghty build processes. What use to take a day to do client/server style takes a week to do in J2EE. Everyone's focused on the cosmetics of web pages instead of functionality.
Some days I think the world's coming off the rails and society's in rapid decline. When I have to code like this to make a living it doesn't help.
Re:Which platform? (Score:3, Interesting)