TL:DR - go back to school and do something you think is awesome/important to you, but not because it’s “cool”
I never officially studied, and happily did the web design/developer show for 8 years. For IT grads without passion, I put them to shame. I was fascinated by all the groovy Flash, and 64k intros, and eventually worked out how to use LAMP. But the shine wore off, I was making sites to sell literal nuts and bolts, and I felt I was not contributing to anything beneficial to the community.
Now I’m doing a Masters of Social Work (I’m attracted to the puzzle understanding and solving, just as I was with programming), and after my first placement in a Youth Drug & Alcohol agency, I’ve seen the shitty software used for documenting client data and am doing a literature review looking at the impact that poor information sharing has on agencies and clients. Hand written notes and data being entered in triplicate into disconnected systems? Yep. Everywhere.
General ‘software’ (word/facebook/android/*nix/gmaps/excel/grand theft auto) is beautiful, software for developers is beautiful. Software used for specific unsexy applications in fields where there is little resources, and ICT is a peripheral concern, is shit house. Being able to understand the problem domain from the coal face and articulate what could be done is powerful. So often software development is top down, managers driving the process and then not using it, and the developers only given a vague idea of the domain problem. That seriously needs to change.
Before and during the first year of my course, I was terribly depressed (the type where you get medicated and refrain from going to hardware shops, because in Australia we have no guns), I felt like I was throwing away years of my life only to start again from zero. Nothing could be further from the truth, but it took a while to realise.
Culturally, maybe we get taught to climb to the top of the mountain, in this case ICT. Go and climb another seemingly unrelated mountain that is of interest, and it’s the valley in between where you’ll find your speciality, your niche, where you speak both languages.
Find a problem, understand it, help unravel it, repair it, advocate for a better way for it to be done in future. Keep your eye out for patterns in the problems, address those systemic problem, advocate for those changes too. That’s pretty much what programmers do? It’s pretty much what social workers do.
I’ll always be a programmer, and I’ll always be looking for patterns, wanting to understand and improve systems. The computer needn’t be the sole environment for these activities.