Web Development

Programming news: Alleged salary fixing, developers' unethical behavior, open source un-contest

Read about the Ajax Control Toolkit update, Mule Studio, iBuildApp, Entity Framework code first and data scaffolding, ZendCon 2011 call for papers, and more.

Editorial and commentary

Apple, Google, and other companies conspired to "fix" salaries
This is one of the biggest tech news stories I've heard about in a long time. Apple, Google, and a number of other companies have been working together to keep developer salaries fair. Do these folks look like a "great employer" still?

Are developers really unethical?
A recent article on Dr. Dobbs suggests that development teams do some really unethical things. However, many of the things dubbed as unethical in the article sound like the standard ploys dev teams use to manage down expectations because management does not allow them legitimate forms of pushing back.

Dilbert goes "above and beyond expectations"
The May 8th Dilbert was quite good.

Language/library updates

Typesafe offers Scala support
A new company called Typesafe just launched. Typesafe is founded by the creators of Scala and Akka, and offers a full Scala stack with commercial support.

ASP.NET MVC 3 Tools update brings better HTML5
The new ASP.NET MVC 3 Tools update brings a number of improvements to HTML5. Scott Guthrie has the details.

Easier Azure mobile
Microsoft has created Azure SDKs for iOS and Windows Phone 7.

May 2011 update for Ajax Control Toolkit
I thought that the Ajax Control Toolkit (ACT) was going to whither away, but I am proved wrong by a small update to ACT.

Tools and products

ActiveState Stackato delivers enterprise Python, Perl, and Tcl in the cloud
ActiveState released a preview of Stackato, its new enterprise cloud offering that supports a variety of dynamic languages.

MuleSoft's Mule Studio for visual design of ESB
MuleSoft released a beta of Mule Studio, which allows developers to work with their enterprise service bus (ESB) through a GUI design interface.

iBuildApp creates HTML5 applications for mobile platforms
iBuildApp announced a new, Web-based environment for creating HTML5 applications specifically for mobile platforms.

SnapReduce delivers cloud-based Hadoop processing
SnapLogic unveiled its new SnapReduce product, which offers easy-to-use, cloud-based Hadoop processing.

Sauce Scout simplifies manual testing
Sauce Labs introduced a new product called Sauce Scout, which allows testers to run Web-based browser sessions and record them to make it easier to provide feedback to development teams.

Tips and tricks

Introduction to Entity Framework "code first" and "data scaffolding"
Scott Guthrie wrote a basic tutorial on how to use the new "code first" functionality of Entity Framework 4.1 and the data scaffolding features in Visual Studio.

Java Web services with NetBeans
Cameron McKenzie has written a good article about how to get started with Java Web services in NetBeans 7.

Pre-compiling ASP.NET MVC views
Phil Haack wrote a short post worth checking out on how to pre-compile your ASP.NET MVC views.

Events

ZendCon 2011 call for papers is open
The ZendCon 2011 call for papers is accepting submissions until May 20.

BlackBerry DevCon registration open
The BlackBerry DevCon registration is now open. The event will be held October 18 - 20 in San Francisco.

Open source "un-contest"
Joe Stagner is having an "un-contest" for folks to contribute to open source projects in the .NET ecosystem. It looks like O'Reilly is giving free eBooks to participants.

J.Ja

About

Justin James is the Lead Architect for Conigent.

4 comments
Mark Miller
Mark Miller

I didn't read the whole article, but when I worked in IT services I saw what I think the article talks about, and I found it rather justifiable. I noticed the article didn't say a thing about what customers did, and I think this biases it, because the practices it describes are responses to what customers do. The customers we worked with wanted fixed bid contracts. They wanted to use the Waterfall model. I don't know why we didn't push harder for something more reasonable (perhaps we were in a weak negotiating position), because I found that they didn't work to our favor. They wanted requirements and design documents which always went out of date very quickly, because they were delivered up front, before we started programming. Inevitably the customer always wanted to change things after we got started. They would add new requirements during the project, and we couldn't go back to them and say, "Well, that wasn't in the requirements." To boot they expected us to make the additions within the previously agreed deadline, and the originally agreed budget. It was a "heads I win, tails you lose," situation. I think in a few cases we were able to negotiate a new contract to extend the development period. In other cases we ended up not delivering some features that were originally promised in the original schedule, though we'd get to them at a later date, because there was just no way we could get them done, even though we'd work weekends, and 70-80 hours a week for a month. I mean, the initial deadline was based on the requirements we knew at the time! Padding the schedule (and budget) is unethical?? Please! We were trying to be realistic when we added padding! When we didn't, we ended up spending more time than we estimated developing what they wanted (after requirements, design, and estimate had been delivered), and so it cut into our profit margin, or forced us to take a loss. There was also something mentioned about managing expectations. The reason I found this was necessary was that in my experience management, and customers, didn't really understand what the engineering team was doing, and they weren't interested in understanding it, either. There was no way to communicate legitimate issues that came up in the development process in a clear way. So the only way to deal with them was to give them "good feelings" about what was being accomplished, or "scary feelings" about what needed to be addressed. If that's lying, so be it. In my experience it was extremely difficult to accurately describe to them what was going on. There wasn't an interest, or capability for them to understand. So how else do you work in harmony with them? Something I remember talking with a co-worker about shortly before I left a place I used to work was "selecting your customers." The company seemed to have an "anyone will do" attitude. If a company wanted the kind of product we offered, at a price that was in our range, our management was willing to do a deal with them, no matter how incompetent they were at understanding how to be a part of building a custom software product. I thought that if we had more experienced customers that we'd be able to serve them better, it would be less stress on us, and the company would make more money (rather than losing it), because they would have more realistic expectations, and they would probably understand some of the engineering issues involved. An analogy I think is apt is I've seen shows that talk about people building custom homes. Inevitably what always happens is the homeowner ends up spending at least twice what the initial estimate was on the project, and it ends up taking longer to complete than was originally estimated. I may not be accurate in saying this, but it seemed to me the reason was there are always unexpected issues that come up during the project. That's how these things go. I would say it's not that different with custom software, but the deals that we worked under didn't allow the same kind of pricing flexibility. At another employer I worked for, I encouraged them to press for "time and materials" bidding, rather than fixed bids. I know that there are legitimate concerns about overbilling the customer with time and materials billing, but I found fixed bid contracts on custom software to be unrealistic.

Justin James
Justin James

Most of the Dr. Dobbs article... well, it read like the typical laundry list of things that happen when the client/customer/management/salespeople/whoever demand a spec or timeline that is impossible, and insist that it must be met even though it's clearly impossible. J.Ja

seanferd
seanferd

yeah, there is always another game behind his game.

Editor's Picks