The Computer Weekly Developer Network and Open Source Insider team want to talk code and coding.
But more than that, we want to talk coding across the diversity spectrum… so let’s get the tough part out of the way and talk about the problem.
If all were fair and good in the world, it wouldn’t be an issue of needing to promote the interests of women who code — instead, it should and would be a question of promoting the interests of people who code, some of whom are women.
However, as we stand two decades after the millennium, there is still a gender imbalance in terms of people already working as software engineers and in terms of those going into the profession. So then, we’re going to talk about it and interview a selection of women who are driving forward in the industry.
Welcome to Cornelia Davis, senior director of technology at cloud-native software development company Pivotal Software. A teacher at heart, Cornelia has spent the last 25 making better software and better software developers.
CWDN: What inspired you to get into software development in the first place?
Davis: A four-line program. I got insanely lucky. My high school offered a computer programming class (in 1981! – as I said, very lucky) and while I heavily resisted participating in it, curiosity got the better of me. A few days in, my teacher asked who wanted to try running a program on one of the shared TRS-80 computers on tables against the wall. Still full of teenage attitude and perhaps more intent on proving that I was entirely too cool for this computer thing, I volunteered. I typed in the following program:
10 x = 1
20 print x
30 x = x + 1
40 goto 20
… and typed run. When the numbers started scrolling on the screen, 1, 2, 3, 4, … I thought “Whoa! That is something!” and I was hooked.
CWDN: When did you realise that this was going to be a full-blown career choice for you?
Davis: While I didn’t have a clear picture of what a career in computing would be at the time, really, from the moment when I ran that first program, I knew I’d be programming in some way. When it came time to declare a major in college, it was a no brainer for me – Computer Science – and by the time I was a couple of years in I knew people who were writing software in industry.
At that point I had a clearer picture of what that career would be. Not once have I ever wavered from making software the core of my career, though the role I have played has certainly evolved.
CWDN: What languages, platforms and tools have you gravitated towards and why?
Davis: I did my undergraduate and master’s degrees at California State University, Northridge, a school in the greater Los Angeles area that does an excellent job graduating students with a set of pragmatic skills aimed at making them immediately productive in industry. While there I learned a half-dozen different languages including Pascal, Cobol, Fortran, C and C++, all imperative languages. The hallmarks of imperative languages are that they use lots of variables that you set and change the values of, and the programmer controls details of the program flow using things like for and while loops. Indeed, when I got to industry that served me well (I added more imperative languages like Ada and Java over the years).
But then, after working for a few years, I decided to go back to school to pursue a PhD in Computer Science (I am ABD – All But Dissertation) and while at Indiana University I studied Theory of Computing and Programming Languages. That was where I came to learn about the mathematics behind computing and that was where I learned Functional Programming. And I was in love.
Programming in functional programming languages generally has the developer expressing intent, declaratively, leaving more of the details of the program flow to the language runtime or compiler. There are several advantages of this approach, including allowing the compiler to apply optimisations that would be difficult for a human programmer to do, resulting in code that may run faster or ‘better’ in some other way (i.e. more resilient). In order for the compiler to be able to do these things, the program needs to follow certain conventions – like no mutable state – that is, no variables that we change the value of. This is, perhaps, one of the most significant hallmarks of functional languages – no side effects!
Now, I have to say that for most of my career, the opportunity to use functional programming languages in industry applications has been non-existent (there are some niche areas where it was in use, but it was not widespread).
When XSL-T came out, I LOVED it because it’s functional, but I think I was one of about 10 people who loved that language and it never gained widespread adoption. But now we are seeing functional languages gain traction. I believe it is because of the highly distributed nature of the software we write now – functional languages are just better at addressing the challenges of distributed systems. Languages like Scala, Kotlin and Clojure are no longer rarely in use, and functional concepts (like immutability) are even present in ‘systems programming’ frameworks like Kubernetes. After 30 years in industry, I finally get to practice what I truly love in my day job!
CWDN: How important do you think it is for us to have diversity (not just gender, but all forms) in software teams in terms of cultivating a collective mindset that is capable of solving diversified problems?
Davis: There is no longer any reasonable debate on whether diversity is ‘good’.
Numerous studies have found that companies that have a more diverse workforce, and importantly a more diverse leadership team including boards of directors, yield better business outcomes; higher shareholder value, greater return on investment, larger profits and so on.
These business results come from building products that consumers like. The consumer population is diverse and we therefore need teams that can understand what resonates with that user population. I’m not sure that the goal should be a collective mindset, but rather a vibrant, varied and colourful mindset. Nature has shown us that a highly heterogeneous environment is a strong environment. So too for software teams.
Then there is another element of importance with respect to diversity. I simply want everyone to have the opportunity to play. Being in software affords folks a level of job security and earning potential that can literally change lives and even whole communities. Importantly, I would like to see that everyone has the chance to have as much fun as I do.
CWDN: If you could give your 21-year old self one piece of advice for success, what would it be?
Davis : It would be all too easy to say the cliché but true: ‘be more confident, and I rather like the particularly lively way that one of my favourite celebrities, Helen Mirren, has delivered that message. But in thinking more deeply about the question I think I have advice that I would like to have not only received, but also that I would have heeded. Explore your options.