I'm a strong believer that software development is a social profession and not a technical one. And I say that as someone who has read the books on clean code and test-driven development, watched the talks on type systems and listened to everyone who preached about all the other hot fuzz methodologies and technologies. I've enjoyed it thoroughly and learned much, but the more experience I get the more I feel like we as a community need to shift our focus from the nitty-gritty technical details to The Real Problems™.
What would you say is the single most important part of a successful software project? The methodologies we use? React or Vue? TDD or not? Tabs or spaces?
No, the most important part of any software project is its people.
I believe that the developer community has become so focused on the newest frameworks, the coolest libraries and the quickest way to learn it all that we've lost ourselves in a maze of programming languages and buzzwords. I constantly see discussions (mostly online) about programming topics turn toxic and people personally attacking each other for not sharing their opinion. This shouldn't be necessary and I think one way forward is to talk about the human issues we all face more than we do today.
In 2012 Google did an internal research study called Project Aristotle that investigated what makes a team at Google successful. They concluded that the number one key factor of a successful team is psychological safety. The big problem that follows is that people are complex. It's much easier for us to discuss which framework to choose than it is to talk about what makes us feel safe at work. React vs Vue is concrete. Feelings are not.
And despite most companies being very good at talking about how they take care of their employees' and how the employees health always comes first, there are still many reports on crunch in the gaming industry, over 700 posts about burnout on HackerNews and many articles and great discussions about it at dev.to.
Software development is a relatively young industry, and these are issues other industries struggle with as well, but we are also an industry with an incredibly engaged community. How many other professions can say that you can learn everything you need to get a job for free on the internet? Or that so many amazing people share what they know without requiring anything in return? It's a knowledge sharing culture that should impress everyone.
As developers we are very quick to show off our projects in portfolios and on GitHub, taking immense pride in our technical skills (and we should!), but we need to shift our focus from just the technologies we use to the people we are working with. I want to see more discussions like this thread about why sleep might matter more than technical skills, or the feeling of not keeping up with the industry because so much is changing so fast, or how to combine family life with working in tech. I want us to talk about what it is like being a human in the context of software development, instead of just talking about the technical bits of software.
Brené Brown is a researcher and author that has studied vulnerability, courage, shame, and empathy. She is a huge inspiration to me, and I wholeheartedly recommend reading her books (or watching her recent Netflix show). In her book Dare to Lead she writes:
"I define a leader as anyone who takes responsibility for finding the potential in people and processes, and who has the courage to develop that potential."
This is what I wish we would do. Use our empathy and vulnerability to help ourselves and other developers. For most of us, this will most likely be scary. I know it is for me. Talking about real feelings puts you in a very vulnerable position, but it's also how we build trust and how we grow as human beings.
Software development is a social profession because without the interaction between people, there would be no software. Frameworks wouldn't grow, ideas wouldn't spread and projects would fail. We should all strive to go to work and feel that there is joy in what we do, that we can contribute, that what we do matter. And we should strive to make our colleagues feel the same.
"What we know matters but who we are matters more." - Brené Brown
Top comments (22)
Not only that ideas wouldn't spread. Without the social aspect of a development process, ideas wouldn't be born that much at all. As Isaiah Berlin put it, "ideas are not born in the void. Ideas are to a large extent the products of the social process".
That is very true!
I don't think salary is the only way to motivate a person. Many people (myself included) value things like culture, people, perks, etc higher than salary. I would much rather work at a company with a great culture and a fair salary than a company with horrible culture but fantastic pay.
There is no blanket solution on how to motivate people, but it comes down to getting to know the person and finding out what they personally value. Again, we need to talk about how we feel.
No, she isn't talking about hiring and I think your definition of a leader is a bit narrow. Anyone can know how to manage priorities and resources, that doesn't make somebody a leader. A project manager or "boss", maybe. Leadership has nothing to do with titles, rank or authority. Everyone can be a leader.
I agree that culture means nothing in the context of "We have great culture! Woho!", but if you dig a little deeper you usually find out what that culture consists of. Is it ping pong tables, beer at the office and amazing parties? Not for me.
For me culture is things like a genuine engagement in your colleagues, being able to be your true self and an atmosphere that encourages having the courage to stand up for what you believe in.
I love how you hit the nail in the head with this one.
When I was studying for my CS Associate's Degree, one of the things our teachers insisted on was to always talk a lot with our potential customers to deeply understand what they needed. What was the real problem. What were their worries. One teacher even told us that sometimes, we couldn't fix their problems with our tech... Sometimes, the problem wasn't that simple and our tech wouldn't help.
I didn't understand it a while later when I had my first real gig on the open.
Indeed, at first I chose the CS path to stay away from people (I'm a little bit shy), but I found something honestly better and more rewarding: helping people and making meaningful connections doing so.
I mean... It's pretty much the most straightforward way we can find real solutions.
Thank you! And thanks for sharing that!
Great article - you've managed to articulate so many of the feelings I have about where we might be going wrong in the industry. Thanks for sharing!
Thank you so much Ellen! 🥰
YES to everything in this article. Also superbly written. I felt inspired and am looking forward to bringing loads of joy and love to my team on Monday. 😀
Thank you so much Jaime! That's all that I could have hoped for! 🥰
I have to disagree that Software Development is relatively young. I've been a professional software developer for over 30 years and my father was one before me.
Read some of the older materials. Concepts in software development processes haven't changed since the 60s. Look for the Ten Commandments of Egoless Programming. As true today as when they were created in the 70s.
Stop thinking that today's software development problems are new. They aren't. Look for older materials like the UNIX Philosophy and realize that the newest technology is hiding people problems that have always existed in business for all professions.
Yes, software development have been around since the 60s, but I'd still argue that it's a relatively young industry. Compare it with architecture, gardening, construction or any other industry that builds on knowledge from 1000s of years.
But just like you say, older material might be just as relevant today as it was back then. If anything that should encourage everyone to think more about these issues if we still haven't "solved" them.
Do you have any recommendations to developers struggling with mental conditions that can make it more difficult to socialize? i.e. social phobia, generalized anxiety disorder?
I have been attempting to advocate for developers with such challenges.
I think this very much depends on what you set as your criteria for success. If it's to make some software that's used by a lot of people, then sure, but that's often not the case for us as individuals.
We who only manage the development of software play an essential but unheralded role.