Here's a quick macro to assist with blocks of successive calls that should proceed as long as none of them satisfy
FAILED( operation ).
// WHILE_SUCCEEDED: // HRESULT hr = S_OK; // WHILE_SUCCEEDED( hr, function_returning_HRESULT() ) #define WHILE_SUCCEEDED( hr, operation ) ( SUCCEEDED( (hr) ) && ( hr = (operation) ) );
HRESULT hr = S_OK; WHILE_SUCCEEDED(hr, S_OK) CPPUNIT_ASSERT( SUCCEEDED( hr ) ); CPPUNIT_ASSERT_EQUAL( S_OK, hr ); WHILE_SUCCEEDED(hr, S_FALSE) CPPUNIT_ASSERT( SUCCEEDED( hr ) ); CPPUNIT_ASSERT_EQUAL( S_FALSE, hr ); WHILE_SUCCEEDED(hr, E_OUTOFMEMORY) CPPUNIT_ASSERT( FAILED( hr ) ); CPPUNIT_ASSERT_EQUAL( E_OUTOFMEMORY, hr ); HRESULT hrPrevious = hr; bool executed = false; // Test that executed = true should not be executed WHILE_SUCCEEDED(hr, ( executed = true, S_FALSE ) ) CPPUNIT_ASSERT( FAILED( hr ) ); // hr should not have been assigned S_FALSE CPPUNIT_ASSERT( ! executed ); // executed = true should not have been executed CPPUNIT_ASSERT_EQUAL( hrPrevious, hr ); // hr should not have a different value than previously assigned
Comments from James Gosling upon leaving Oracle / my thoughts on the creative and artistic aspects of Software Development
Excerpts From: Java Creator James Gosling: Why I Quit Oracle - In an exclusive interview with eWEEK, Java creator James Gosling discusses a series of issues he earlier declined to take public, including why he left Oracle.
- Also, asked whether in hindsight he would have preferred Sun having been acquired by IBM (which pursued a deal to acquire Sun and then backed out late in the game) rather than Oracle, Gosling said he and at least Sun Chairman Scott McNealy debated the prospect. And the consensus, led by McNealy, was that although they said they believed “Oracle would be more savage, IBM would make more layoffs.”
- However, in Gosling’s case personally, he may have fared better at IBM, where technical savvy is generously rewarded. For instance, when IBM acquired Rational Software they saw value in Rational’s chief scientist Grady Booch, co-creator of the UML (Unified Modeling Language), and made him an IBM fellow and more.
- “All of the senior people at Sun got screwed compensation-wise. Their job titles may have been the same, but their ability to decide anything was just gone.”
- Also, there are number of interesting comments on Google's use of Java in Android and the relative merits of software patent litigation.
This is an interesting read on employee motivation, reconfirming that the intangibles - including intellectual / creative freedom really do matter.
I have always felt that Software Development is as much a creative / artistic endeavour, if not more so, than it is a science. The scientific aspects reinforce the need for considered methodology, measured responses to create healthy feedback loops on both progress and results, and the imposition of order upon chaos (e.g. design, usability and information architecture). This is true as well of all fields of human activity traditionally considered by many to be purely creative / artistic: music, art, architecture etc...
I believe many technical managers would do very well to contemplate this in hiring by gauging creativity and in production by allowing time boxed exercises to evolve functional and non-functional capabilities. At worst, some time is lost in 15-30 minute manageable increments, but even then, the team benefits from the exercise in many ways. Trust the team, give them the support and tools they need, then prepare to be amazed at how they will add unexpcted value - often willingly contributing their own time.
Some jumping off points I've encountered today and agree with on the management of software development processes and professionals:
- How to Motivate Developers - A three step framework
- Coding Around the Campfire (oops - dead link...)
- Statement of Values
A recent LinkedIn question on Software Estimation and Agile Methology included a concern that Agile could lead to Procrastination. I believe otherwise as detailed below. What has your experience been?
Software Estimation and Agile Methodology
I am new to Agile Methodology. I am working on a project which is following Agile. I have the following questions:
- What are the estimation techniques for Agile?
- Typically which type of Projects use Agile?
- In the name of Agile, can people procrastinate every single decision during requirements gathering? For example, we know what is expected but we don't know the most atomic level of the requirement. Say, I know I must build a webpage, but I don't know the validation of the webpage.
I think Agile principles can be an antidote against procrastination. I would agree with the thoughts expressed in this post. If you continually drive to keep the design and implementation as simple as possible and don't get overly concerned with anticipating potential future needs, there is nothing left to do but build what you know is needed now. Continue reading...