Shuttle’s software quality head favours pragmatic approach to process improvement

by Prof Barry Dwolatzky

You’re reversing your car when, suddenly, you hear a loud crunch as you drive over something. You stop, jump out and run to see what you’ve hit. It’s your 5-year-old daughter’s tricycle crushed under your back wheel. Someone must have left it in the driveway yesterday. What do you do next?

Continue reading “Shuttle’s software quality head favours pragmatic approach to process improvement”

Its 2012 and Africa is Rising

by Prof Barry Dwolatzky

 

Welcome back to my blog. It has a fresh look and I hope you will follow me and share your comments in the year ahead.

 

 

 

 

In May 2000 the Economist magazine labelled Africa “The hopeless continent”. In December 2011 the same magazine featured an article entitled “The hopeful continent: Africa Rising”  (View the article) . This dramatic U-turn by the Economist put a smile on my face. I’ve never doubted the incredible potential of the continent on which I live. Did you? Now we are seeing that potential being translated into high growth rates and thriving economies. Continue reading “Its 2012 and Africa is Rising”

And the winner is …

by Prof Barry Dwolatzky

Barry Dwolatzky with the Taiwan Team
Barry Dwolatzky with the Taiwan Team

Imagine Cup 2011 has come to an end.  It was a truly incredible experience to be part of it. The award ceremony was held in the famous Koch Theatre at New York’s Lincoln Centre. Being in that theatre surrounded by the energy and enthusiasm flowing from 400 excited students was truly amazing. Continue reading “And the winner is …”

SA Team out in first round of Imagine Cup 2011

by Prof Barry Dwolatzky

SA Team at Imagine Cup 2011
SA Team at Imagine Cup 2011

Exactly a year ago today (July 11) the FIFA World Cup 2010 drew to a spectacular end in South Africa. I know that there is no comparison in size and content between that World Cup and “Imagine Cup 2011” … but I have had some déjà vu moments. Continue reading “SA Team out in first round of Imagine Cup 2011”

I’m in Geek’s Heaven

by Prof Barry Dwolatzky

Steve Ballmer - CEO of Microsoft - opens Imagine Cup 2011 in NYC
Steve Ballmer - CEO of Microsoft - opens Imagine Cup 2011 in NYC

For those of you who don’t know about it, the Microsoft Imagine Cup is a bit of a “geek show”. University students – working in small groups – develop software applications and then compete for prizes. Microsoft runs national competitions, the winners of which are entered into the World Finals.

Over the past few years I’ve been involved in Imagine Cup South Africa as a judge. The competition always attracts a good cross-section of socially awkward technology obsessive South African youth. Race, religion, social background, gender – none of this matters. They all share a common “geek-ness”. From the SA competition we have always carefully selected the best team of local geeks and sent them off to compete in the World Finals. And here I am at the World Finals!!!

Over the past year 350,000 computer geeks from 183 countries have competed to represent their species at the Imagine Cup World Finals-  the “Computer Nerds World Cup”. And here they are at the 40-storey New York Marriott Marquis Hotel in Times Square. 124 competing teams from 40 countries together with 80 judges and 140 journalists. They come from every corner of the world. Most have never flown in an airplane. Some have never stepped onto an escalator … and yet they share something in common … a love for software technology.

Last night Steve Ballmer, CEO of Microsoft, opened the event. It’s the first time I’ve seen him live. If an alien from outer space came to earth looking for a good specimen of a “1970’s computer nerd” to send back home to a zoo in their distant planet, Steve Ballmer would be a wonderful choice. He is everything his generation (my generation?) represented – and more! When he announced that every contestant would receive an XBOX Kinect to take home with them, a cheer went up that must have been heard on the moon. (Thinking about it… the cheer wasn’t instantaneous .. It took about a minute for Ballmer’s announcement to be understood in 40 different languages.) In any other audience most people in the room would have been sitting there saying “what’s an XBOX Kinect, and what will I do with it?” My only regret is that I’m a judge and not a contestant.

There were also speeches from Jeffrey Sachs, Professor of Economics from Columbia University and special advisor to the UN on poverty alleviation, and from Dennis Crowley, co-founder of FourSquare [I admit to having to ask someone what “FourSquare” is]. Jeffrey Sachs was there because: (1) he was at nursery school with Steve Ballmer, and (2) the theme of Imagine Cup 2011 is “Imagine a world where technology helps solve the world’s toughest problems”. The challenges of the UN’s Millenium Development Goals are a particular focus for contestants.

Everywhere you look in the hotel there are groups of students dressed in their team t-shirts sitting around fiddling with devices – laptops, tablets, smart phones, fancy cameras, i-pods, etc. I can’t understand many of the conversations but I’m prepared to bet that its about the latest app, download or gadget.

Today I will be working hard. I’m a judge in the Software Design section. I will be listening to and marking presentations by the teams from Mexico, Taiwan, New Zealand, Australia and Greece. By the end of today the top 18 groups will go through to round 2, which we will judge tomorrow. The final is on Tuesday and the winners will be announced at a gala event at the Lincoln Centre.

I’m in Geek Heaven!

Can all “software developers” write programs?

by Prof Barry Dwolatzky

In my role as Director of the JCSE at Wits University I have, over recent years, been interacting with a large number of South Africans who earn their living as software developers. In some of these interactions I’ve had the opportunity to formally assess their skills and abilities. I’ve been shocked to find that some – a small but significant minority – of our “professional software developers” find it difficult to write working programs – even simple ones. Some of these developers have degrees and diplomas in IT-related disciplines from local Universities and Universities of Technology. 

As an academic responsible for educating software developers, and as a person deeply concerned about the successful future of the South African software sector, this situation has troubled me deeply.

What is a “software developer”?

Before I go any further, let’s be sure that we’re on the same page with respect to terminology. I understand the term “software developer” to refer to the individual at the sharp end of the software industry entrusted with the task of putting hands to keyboard to write software.  In the past we called these people “computer programmers” – (I’m not sure when and why they were rebranded as “developers”).

We can debate in some detail the set of generic and specific skills that a “software developer” should have (I will come back to this later). There is however one absolutely critical ability that (in my mind) is never negotiable. A software developer must be able to write a program!  In other words he or she must be able to convert a specification or requirement into a set of instructions in a “programming language” (of some sort) which can then be run successfully on a “computing device” (of some sort).

Although this may seem obvious, let me expand on this last sentence.

Suppose, as a very simple example, that the “programming language” is C++ and the “computing device” is a PC. The specification might say “Read a set of numbers from a text file. Add them up and write the total to another text file.” Anyone who calls him/herself a “C++ software developer” must – in the very least – be capable of translating the specification to (something like) the following:

    blog code

The C++ developer must also be able to get this program to run successfully on the target computing device. This will require compiling, loading, testing and (possibly) debugging the above program.

 In modern software development, there are many different languages, environments and devices.  Developers need many specialized skills and abilities. However, any developer, must be able – in the very least –  to do something conceptually equivalent to the task described above.  The target language may be very different from C++. The target device may look very different from a PC. The specification may look very different – it will undoubtedly be much more complex. But every software developer needs to be able to successfully translate a specification into a “program” that can run on a “computer”.  I’m sure that no one will dispute this.

 Other generic and specific skills

Given that a “software developer” can write a working program, what other skills should they have? This is a topic that I’m sure we could debate for a long time. My suggestion would look something like this:

Generic skills and abilities

  • Detailed design: Any software developer should be able to develop a number of alternative detailed designs that would satisfy a given requirement. He or she should then be able to examine these alternatives and select the one that best meets the requirement.  In many cases the requirement may correspond to a small piece of functionality and the design options may be relatively simple.
  • Unit testing: The developer should be able to test the program that (s)he has developed. Test cases may be given as part of the requirement. They may also have to be devised by the developer. In either case the developer will need to run the tests in a systematic way and record the results.
  • Documentation: The software developer is responsible for low level documentation. In many cases these are added to the code being written in the form of comments.
  • Estimation: If asked the question “How long will it take you to write a program to do X?” can the developer provide an estimate? (S)he should be able to do so with some degree of accuracy. Furthermore, what is this estimate based on? Is it an “educated guess”, or is it based on data collected by the developer from previous tasks?

Specific skills and abilities

  • Different software developers need a vast array of specific skills relevant to their specific technical environment. They also need to have some understanding of the domain (eg. financial services, health care, etc.) in which they are working. Many of these skills are acquired “on the job”. They are not taught at universities and colleges.

The problem we face

As I said in my introductory comments I have a concern that some of our local “professional software developers” do not have the “entry level” generic skill of being able to write a program. If this is true then none of the other generic and specific skills really matter.

My concern, however, is based purely on a perception gained in interaction with a number of developers over recent years – it is not based on any research I’ve done.  I may be wrong!

My question to you – the readers of this blog is: Do you share my perception? Can all professional South African software developers write a program? If (in your experience) they can’t, what should we be doing about this? Is it a problem? Am I wrong to assume that “software developers” need to know how to program? 

I would welcome any comments on this issue.