When I originally left my last job as a social worker, I wasn't entirely certain what was next. I knew I liked programming, but felt weird about dropping everything I was working on and picking up an entirely new skill. After all there were things I really liked about social work and worried about losing those things. I also worried about "starting over," that somehow none of my skills would translate. Stressful times.
Luckily, this was mostly BS. Yes, without a technical degree, my job opportunities are a little more limited than they would be otherwise. But not by all that much. And more importantly the skills and lessons I learned in my previous line of work are still relevant. And yes, I still am making a difference in the lives of others, both in the code that I write, and in my Giving What We Can pledge.
Obviously this is not a complete representation, but here are some of what I see as the key diffs and similarities:
Vulnerability as strength
Anyone who's seen Brené Brown's amazing TED talk, knows that vulnerability is an important concept in social work. The idea that it's good to ask for help and good to openly communicate about challenges may seem obvious to many. But I'd venture to say too few professions prioritize this concept. So far I've found that the tech community is very much on board. We know the importance of asking for help (through Stack Overflow and Github issues, tech conferences, meetups, etc.) because it is literally impossible to know all you'll need to know.
Similarly good programmers are brave enough to open source their code (even if that means showing off the good bits with the bad), because we know that when we do that, we have the greatest chance for someone to help continue to improve the project.
Is this for you or the client?
When communicating with their clients, social workers have to consider their own motivations in what they do and say. They are invested in making meaningful real connections with their clients, but at the same time they need to remain somewhat objective and strive to keep the focus on their client. This could mean holding back tears or not telling a personal anecdote so that they can again focus their energies on their client's needs, and not make it all about them.
Designers and developers also struggle to find the divide between themselves and their clients, even if the consequences are usually less dire. While it would be awesome to scrap the whole existing app and rebuild it with React, is that actually needed for this project? Sometimes yes, sometimes no. While it maybe looks cool to make the site use a full screen parallax scroll, if your users aren't expecting it, will they know how to use it? You build not just for yourself, but also for your client.
Identifying relevant resources
Social workers base their work on the person-in-environment framework. They think holistically and seek out additional resources that could help their client in addition to more traditional therapy. That might mean finding housing, an after school program, food stamps, or maybe a job.
Programmers also look out for good resources to help with their work. They look for third party integrations that can save them from building everything from scratch. They rely on libraries and open source software. They seek out new frameworks and ideas.
Identifying and prioritizing needs
Along those same lines, social workers know how to identify and prioritize a client's needs. They do what's called a needs-assessment, where they identify everything from mental health needs, to interpersonal and family problems, to housing, medical and educational needs. If you've ever seen Maslow's Hierarchy of Needs you know what I'm talking about. At first blush, this is obvious. Sleeping on the streets is obviously a bigger problem than not doing well in math class. But often times this gets tricky. Is your client homeless because they struggle with drugs? Or do they struggle with drugs because they are homeless? Like a good project manager, a good social worker with the help of their client identifies needs, prioritizes them based on urgency and ability to address the problem. Sound familiar to the tech field at all?
Both social workers and programmers focus a lot of their attention on writing things down. Programmers have their bus factor and social workers have their code of ethics. Both dictate that you have to consider whoever comes after you.
Collaboration and communication
Social workers don't work alone. They're often the point of contact between medical systems, educational systems, criminal justice systems, housing systems etc. Similarly, unless you're at a very small startup, developers have to communicate designers, product, project, qa, dev ops, and of course their fellow developers!
As you can see, there's a lot of overlap, and I'm glad I took the leap of faith to make the switch. If tech is the new literacy we need more people tackling these problems and coming at them from different angles. Our economy dictates that more and more people will be coming to tech from nontraditional fields, and I think our tech will be all the better for it.