Archive : December 2009

What does Google Chrome do for Mac based Flex Developers?

Do you know every detail in the Flex framework by heart? Do you also know all the other libraries that you use by heart? Well I don't and I often have to reference some online resource while developing.

For instance, I always have Action Script Language Reference, Wikipedia, some library API site(s), Gmail and a dozen other ones open + the debug version of the app at hand.

So what used to happen when you but a breakpoint in Flex Builder with all these tabs? They would be unavailable and any process happening inside of them could not be relied on. Since not all code runs well on first attempt, if the app crashed while testing ( think 3D, data intensive apps, etc.) the browser and all the tabs went down with it.

My solution so far was to use Firefox as a development browser and Safari ( since I'm Mac based ) as a browser for references and everything else. For crashing resolution, Firefox has a nice "Restore" option but it's not fun waiting for 15 tabs to reload.

So Google Chrome recently came out for Mac. It didn't impress me on Vista so I didn't care much. I guess I was in between of curious and bored so I decided to give it a spin.

What a pleasant surprise to see every tab running in a different process. My workflow feels so much better now that I'm not afraid that a bad line of code is going to take down my whole browser.

I've heard that IE8 also runs tabs as different processes but I'm not crazy about returning to development on Windows. I did try out Chrome on Windows 7 as a result of the Mac test and all the issues I've seen the first time around have been addressed. Kudos to Chrome development team.

Let's not forget to mention all the features that are missing on Google Chrome for Mac, primarily the lack of Bookmark Management, but Google Bookmarks or any online bookmarking service will do for now.

I can not wait to see more development being done on Google Chrome for Mac and it getting out of beta. I will not uninstall Firefox anytime soon but as a Flex developer I give Google Chrome for Mac high scores for beta.

Upgrading Rails Applications – Some things to keep in mind!

So we just went through this humongous (believe me!) effort of upgrading the technical platform for one of our existing Rails applications that was running Rails 2.1, Ruby 1.7 and Mongrel cluster. The goal was to upgrade to Rails 2.3, Enterprise Ruby 1.8.6 and Passenger. It all started out as well as you would think. Updating the Rails gem, Ruby version, installing/configuring Passenger and updating relevant gems was pretty quick and smooth. Some quick and dirty testing of the application did not reveal any major problems or issues. Great! You are thinking the upgrade is mostly done att this point before you move on to the tests in the application!

Tests

Tests can prove to be major hurdle in upgrading Rails applications.  In our specific case,  close to 70% of the tests were either broken or failing due to a number of reasons.  Actually, the number of broken tests was way way greater than failing tests which led us to think the changes in the Rails testing API caused most of these issues.  Some of the issues were also caused by a plugin or gem that was used to support the tests not being compatible with the new API. It took us quite a bit of effort to figure out the reasons for the issues and also find the fixes.
Continue reading »

Getting CloudTools to Work with Grails 1.1.1

Thunderhead
Creative Commons License photo credit: °Florian

Yes, Cloud Foundry has been acquired by Spring Source and seems to be morphing into a for-pay service, and there hasn't been a new build packaged on the Cloud Tools project page since January of 2009, but if you dig in the SVN repo, you see there's a bit of activity. Before I try building from source, I wanted to see how hard it would be to get 0.6 Grails plugin working with a Grails 1.1.1 app.

Well, harder than I thought. There's a real lack of documentation around cloudtools for one, and the radio silence on the project page over the last few months hasn't helped. Fortunately, Don over at AlterThought has put together a nice post that covers most of the pitfalls and problems with the CloudTools Grails Plugin. A few things they don't address and I thought I'd throw in here:

Continue reading »

Requirements Set in Stone and Software Made of Concrete

Twas the night before Christmas, and 500 pages of detailed requirements had been produced. No line of code had been written, not even by a mouse.

santa sleigh

It sounds great in theory: You produce requirements up front, getting them so detailed that they cannot be misunderstood, you vet them with a full committee of stakeholders who will be impacted (except your customers.) Then you give it to the developes. The result: you can get a really precise cost and timeline, you'll save on expensive development time, and your CFO will sleep soundly at night.

It's a nice fantasy, but it's wrong. It's a fundamental misinterpretation of how software development works. In fact, it's a guaranteed way of increasing your costs and producing bad software.

Here's why:
If you're developing software, you're coming up with a new solution to a problem, or solving a new problem all together. Otherwise, why are you building software, rather than buying it?

Traditional requirements definition processes are a spectacularly bad way of understanding stakeholder needs, and coming up with, conveying and vetting a solution for these types of problems. You will miss certain requirements, you will over specify others, and some of them will never get used. Your stakeholders will only be able to provide feedback of limited value until the working software is actually in their hands. At that point, you will finally start getting valuable feedback that you can push through as change orders.
Continue reading »

You Shall Know Our Velocity!

burndown

With apologies to Dave Eggers, this post is not about traveling around the world in a week to give away $32,000, but about measurement and agile development.

One objection to agile development we get sometimes from people who have never done agile is that it sounds too undisciplined, unstructured and risky.

Would they say the same thing about lean manufacturing or six sigma?

They're confusing agile with cowboy coding.

In fact, like six sigma, agile software development is explicitly about reducing risk, measuring efficiency and continuous improvement.

The old management adage of “You can’t manage what you don’t measure” holds true in software development as well. If you have no feedback loops, and you’re not measuring and improving, you’re not really doing agile development.

The core measurements we use are story points and velocity.

Continue reading »

Data Visualization is About More than Just Pretty Pictures

waalerToo often in software development projects, we're asked to provide what I would call thoughtless reports. By this I mean a collection of tables and charts that depict and enumerate standard relationships. There's nothing wrong with the reports themselves, mind you -- we know how to present relationships in graphical form. No, the problem is that no one has given much thought to the relationships that are being depicted.

You've probably heard about the finding that in children, shoe sizes and handwriting quality are highly correlated. It would be wrong to conclude, however, that one causes the other. In fact, as children mature, their shoe size increases, as does their cognitive ability and their motor skills. They are all dependent on age. Continue reading »

Innovation and Punctuated Equilibrium

In my last post about innovation I referred to Clayton Christensen and his concepts of sustaining versus disruptive innovation. It reminded me a little bit of the concept of punctuated equilibrium in evolution.

The idea is simple: suppose you have a bunch of monkeys working in an office. You have the executive monkeys who eat healthy meals and exercise at lunch time. Then you have the office drone monkeys who go outside into the rain and cold for smoke breaks and eat gyros and fries for breakfast. The executive monkeys have nice glossy coats, get the best mates and have nice condos in desirable parts of town. The drone monkeys...not so much.

Continue reading »

Nice List of Data Visualization Tools

Theresa Neil over at InsiderRIA has a nice post about 28 data visualization tools. You could google these yourself, but she's actually put together a bunch of screen shots and collected them all in one place.

If we're honest about it, these aren't really "data visualization" tools. They're some decent graphing and charting libraries. Data visualization is more than just pretty pictures. Providing the user with direct manipulations and other interactions is also a key ingredient to making the data understandable to system users. As such, these 28 tools only provide one piece of the puzzle.

Why Traditional “Fixed Bid” Software Projects Usually Fail

irontriangle

By now almost everyone has figured out that traditional fixed bid doesn’t work for software development projects, especially where effective, intuitive user interaction is a significant component of success.  Over time there has been a lot of effort devoted to finding the underlying reasons for project failure.  The Standish Group Chaos Report for 2002 found that 45% of features developed were never used, their 2008 Chaos Report found that typical software projects come in at 189% of original estimates (there is an obvious correlation there), and many studies over the years have concluded that an uncomfortably small percentage of development projects are viewed as meeting or exceeding expectations or providing competitive advantage.

Hidden implications of “fixed bid”

Although you need to provide a target budget to get projects approved, “fixed bid” for application development starts of with a faulty basic assumption – that user, functional and system requirements are fully known and documented in a way that enables efficient development. True fixed bid also implies “waterfall” development and two assumptions: 1.) you have completed a thorough, efficient design phase, and 2.) requirements won’t change during the development process. Neither of these assumptions are realistic.

Continue reading »

Why the Behemoths Can’t Innovate

Your move
Creative Commons License photo credit: sanchom

In some past posts I've looked at some of the cultural, organizational and process issues on why large companies find it hard to innovate with new, quality software. Today I want to take that process a step further and look at why established players have such a hard time innovating in general.

First two anecdotes, where I will combine the topics of Susan Boyle, chess and the Kindle. First, chess and the Kindle.

So I now am the proud owner of two Kindles, the small format Kindle 2 and the large format DX. It's great for reading novels, less so for reading reference books where you jump around a lot (even setting and using bookmarks in a small 30 page PDF is a pain). There are two areas where the Kindle falls short: there are very few chess books for it and there are even fever German language books. Hopefully that will change with the advent of the international Kindles and soon amazon.de will start selling ebooks.

Continue reading »

More Newspaper Industry Musings


Creative Commons License photo credit: dno1967

There's a good article over at the Guardian entitled Memories of a Paywall Pioneer by former Salon.com managing editor Scott Rosenberg. He reflects on Salon's experiences with various subscription and advertising strategies and muses on how Rupert Murdoch's move to charge for content is likely to play out. I especially like this succinct formulation of the bad business strategy being followed by "old media":

I start with the assumption that internet-based media will gradually come to dominate news distribution and consumption over the next, say, quarter-century. TV and print won't vanish but they will steadily lose readers, influence and revenue. They ought to be using their "legacy" revenue to fund the expansion of their online presence and experiments; instead, they seem today to be eager to squeeze their online operations for revenue to subsidize the old newsroom. It's the same kind of short-term thinking that has already allowed so many newcomers and interlopers to seize their readers and advertisers.

His point that once readers get it in their heads that your site is "closed" to them, they hardly ever come back, should give Rupert pause.

Topics:

Your SDLC or Your Product – You Decide

…or the telephone game

Crane Gears
Creative Commons License photo credit: tallkev

Last weekend I was watching a movie with my kids. In the movie there was a chain of monkeys that needed to pass on the message from one character to one on the other side of the chain. The message went something like, “Don’t throw us over the wall. There must be another way. We will all be killed.” As it went through the chain and the receiver heard, “Throw us over the wall. It’s the only way. Banana.” The scenario seems ridiculous, but its roughly equivalent to how many companies approach software product design. Often times companies don’t realize they are creating a product at all. They think they are just running a project and focus only on delivery of that project as if it is the only artifact of their work.

The problem stems from the fact that when organizations reach a sufficiently large size they must focus on consistency of delivery and efficiently using people’s time. For large organizations this is part of the mix that makes up their competitive advantage. However, the sheer size and number of moving parts required to enable clocklike consistent delivery leads to the most knowledgeable people about the customer never directly speak to the people responsible for building the product. Or translated into a traditional SDLC, the definition/high level design team isn’t communicating with the build team. In my experience they are usually two different groups of people. I’ll give you an example:

A while back, I was leading a software development team creating a product to be used by all 170,000 of my customer’s employees on a daily basis. They happened to have a team of user experience designers and wanted to take on the “big picture” part of the design themselves. This company could afford the best and the brightest talent - and was able to attract them. Individually the folks on this team were talented and knew their craft well. I actually learned a lot just from my brief time with them. However, once we got the design in hand it was obvious that the usability team’s artifacts weren’t going to work for the project. They didn’t meet the end user’s needs nor were they implementable within the time we had available for the project. The client’s design team literately spent months of time showing users lo-fi prototypes, running focus groups, and understanding usage statistics from similar applications. But, the simplicity the end users craved didn’t match the complexity of the business rules required. Upon further investigation the customer’s design team never was given a business level view of the problem to be solved. We tried to merge the business requirements with good usability, but ultimately the franken-design didn’t work. We had to throw out the big picture design and use them as ”guidelines” instead. Clearly it was a waste of talent and a haphazard way to build a product.

In hindsight the design team should have been presented the complex business rules so that their design could incorporate them from the beginning. However, the customer’s SDLC only allowed the design team to be engaged in the definition/high design phase of the project. Once we got to the design phase they were hard to find. By the time we got into the build phase the development team was simply a distraction from other work for these designers. A better model would have kept the designers on the project as each piece is built. I’m not suggesting full dedication to the team – 40 hours a week. That would be nice, but that’s not likely possible in most organizations. I’m suggesting a small time commitment over a long period of time.

Most of the time projects are actually building products. If you are building a product, but focusing SDLC metrics and efficiency, keep in mind that your phases are likely making walls around teams and causing ineffective communication between them. As Matt from 37Signals points out, “Inefficiencies are what make you special.

Ten Keys to Successful Software Development: #8 – The Team

According to the latest figures from the Standish Group, only 32% of software development projects are successful. If you follow our list of 10 patterns and avoid the antipatterns, your success rate should be a lot higher than that.

The first two installments were #10, Tools and Infrastructure and #9, Respect the Process

#8: The Team

The Team

Once you have the tools and the method, you need a team to take advantage of them.

Throwing together a group of individuals to make sure you have enough bodies and hoping they form a team is usually not a recipe for successful software development, but we see this all too often in projects we are called in to rescue.

The key concept here is that a team is more than just a group of individuals thrown together. As in sports, you need talented players at each position, a cohesive team, and proficient coaches. For software development projects, our teams typically have between four to eight core members, with core skill sets of agile project management, user experience design and software development.

Once you’ve assembled a good team, you need to let them be a team. My brother Dietrich has a good take on this in a recent post:

“At Pathfinder Development, we're often called on to introduce Agile practices into projects and organizations. One of the more subtle changes we introduce is that of the self-organizing team. This is where developers (and BA's, IA's, etc.) share responsibility for organizing their own work, rather than depend on managers telling them what to do. At the same time they also become accountable for this work and the ultimate success of the project. The former "managers" become obstacle removers, freeing up the team members to do their best work.”

By taking this approach, you not only get better motivation, enhanced teamwork and better results, you are in much better shape to handle the turnover and change that is inevitable in any organization: If one member of a team leaves, or you need to scale up the team, you’re in much better shape with a self organizing team, especially if they’re pairing.

Next time: Financial Management

Related Services: Custom Software Development, Agile Development

Fake Agile: All of the Symptoms, but not the Disease

For any software development professional who has contracted out from time to time, this story must seem familiar. You interview and are told that they practice agile development. Once you show up at the job site, they tell you they practice their own "brand" of agile, which turns into "sort of agile" or "we've take the best parts of a couple of different methods" or "it isn't exactly" -- wild and crazy hand gestures -- "XP."

It's a classic case of people following the form or ritual of a process without understanding the why of it. Take the morning scrum, for instance. The ritual around these usually calls for them to be done standing up. We've of course all heard of the standups that run an hour or two. Someone on that team doesn't understand the function and is following the ritual.

Continue reading »

Launch: Pathfinder Newsletter

    Get a monthly update on best practices for delivering successful software.

    Subscribe via email


    Subscribe via RSS      RSS icon

Topics

Search

WordPress

Comments about this site: info@pathf.com