Friday, February 10, 2017

Software Developers–Quantity vs Quality

Today is a snow day here in New Hampshire. My third one this week. So I have taken care of most of the errands I use snow days to take care of and have some time to think about things. One of them is developing quality developers. In part this is spurred today by an article in InforWorld. The sub headline is “A report from HackerRank finds that while the U.S. and India have lots of developers, Chinese and Russian programmers are the most talented” Really? I wonder.

First off I wonder if this is really a valid way to make the determination. IT is based on people basically playing puzzle games online. Who makes time for that? Obviously some smart people who have time on their hands. And maybe some sort of need to prove themselves or gain attention. Is that situation more or less common in different parts of the world? I don’t really know for sure. I’ve written about the US student attitude towards programming contests before of course - What Is It With US Students and Programming Contests? I know no more about the cultural effects now than I did then. I wish someone would study it though.

One big thing to think about it that programming challenges are by their nature artificial. They don’t take 5 people a year to “solve.” Real world developers don’t work alone and they don’t work on projects that can be done in a few hours or even days. So does these contests rate developers or some form of good on test people?

But suppose the US doesn’t have the most talented software developers? If that is the case how do we fix it? Perhaps the way to start is to look at how the “really talented” developers in Russia and China are developed. Are they getting it in school or on their own? I wish I knew. I suspect that some of it may be how education is focused.

In the US computer science departments are interested (largely) in creating computer scientists. That is a very different mind set than creating software developers. Software engineering degrees appear (and I should look at them deeper) to be focused on the development process. Yes there is always work on algorithms and problem solving but projects tend to  be smaller. Frequently getting involved in a large multi-year multi-developer project is something graduate students work on. Developing developer tools like Scratch, Snap!, BlueJ and many more like that. Some awesome projects which I don’t see coming out of Russia or China by the way. More like the US, UK and others in western Europe.

Are boot camps the answer? I don’t think so. I think we need more than that. Those programs are too short and too focused on mechanics like syntax and libraries and the like.  I think we can do better in regular schools and universities but we need to time to do it. A couple of one semester courses in high school and a year long AP course are not enough for sure. At the university level we need even more change though.  That’s what I am thinking about today. Anyone have any suggestions?

2 comments:

Mubashirullah said...

We need a mastery approach. Students should be doing something every single day. A simple answer but hard to do.
Hacker rank :"their submission is scored on the accuracy of their output and the execution time of their solution"
this is a wonderful criteria.
Not sure how accurate the ranking is though.

Mike Zamansky said...

I'll try to remember to leave a more substantial comment later but for now, I just hopped over to see the Kaggle Rankings. Just looked at the top 10 - 9 countries represented with the USA being the only one with two ranked in the top 10. Number 11 is from the US as well, 12 is from China giving them 2 in the top 12.