Experience and networking (people) is king in freeing yourself from this. Skills, aptitude, education is a not so distant second. It helps to keep that in mind, but often doesn’t make the situation any better. What helped me was knowing “this is only temporary” and having an end date in mind. Having a calendar or checklist on a phone is nice, but having a big, thick, sharpie that I could “X” off days on a physical calendar was really nice.
If you can afford it, get a whiteboard. If not, get a spiral notebook. With the whiteboard, you can chart out your weeks and put things to work on. This can be anything, improvements you can make, chipping away at a certification, building a website, etc. You can do the same thing in a spiral, just make a new page for each week (or day, even, if you want more of a journal/log, which is also very helpful).
IF IT HELPS: I have been in I.T. since 2011. I started as a bench tech and moved into desktop support. I went into enterprise/corporate I.T. in 2015. I moved into DevOps early 2018. I no longer interface with clients. I work with devs and DBAs primarily, sometimes management. If something catastrophic (or just stupid) has happened, I work with support working with level 1 working with the clients.
Your job is out there, it just takes time and work. I really enjoyed my bench tech days, so the 2011-2015 was really me just chilling and having fun for the most part, but I realized I wasn’t growing anymore and had an opportunity to expand the scale of my work.
My recommendation is look at any “engineer” or “architect” level job on the market and work backwards to set yourself up some goals on how to achieve that. Be wary, sometimes titles are clickbait and misleading, and don’t copy paste technologies as those will inevitably change.
For example, Docker is a big one now. But, if you know Jails, LXC, Vagrant, then you understand, conceptually (and even technically), how Docker works. So don’t focus on the buzzwords or list of technologies as much as the overall duties, day to day, and expected experience.
Right now, you’ll have to decide where you want to go with respect to software or infrastructure. But, eventually there will be a lot more jobs where you’ll be “Such and such Engineer” like everybody else. Some will write code more than others, while others will spend time on the configuration management and infrastructure templates, but you’ll all have same roles and responsibilities.
Anyway, I’m rambling. To get into the “Deep Work” jobs, you’ll have to put in time, kick some ass, put up with some bs, but you’ll make it. If you put some serious dedication and work in, you can probably ascend within 6 to 18 months. Luck will be involved, especially at the six month stint, but realistically, a year of being in I.T. and learning new skills should be enough. You’ll have to demonstrate these skills, so I would recommend getting a GitHub, blog, or YouTube channel. Something to link to your resume so you can share with the world and potential employers.
Also: LinkedIn. My last several interviews have been through LinkedIn. I only applied to one job. Everyone else reached out to me, expressed interest, scheduled time for an interview, etc. I get a few messages a week, most are mediocre, but there are a few that make me go “Hm…”
That is a lot of early I.T. I’ve worked at companies that would rather hire folks with customer service experience and train them on the tech side. It generally worked out, but not always. Some people just don’t “get it”.
If there is lacking documentation at your job, you can start by filling in the gaps in that. You can put “technical writing” or “documentation” on your resume, especially if you find you’re good at it and get a lot of positive feedback.
Happy to help. Definitely explore and find out what you want to do. If you want to move into software, definitely learn a bright and shiny OOP language like Java or C#, and then learn some “”“full stack”" web stuff; MERN, MEAN, Laravel + MySQL, ASP.NET, Golang*, Django/Flask, etc. Find something that interests you. If you want to stay on the I.T./Infrastructure side look into Cisco or Juniper OR split your time between Microsoft, VMware, and Linux systems. Very rarely will you be working with Cisco equipment (at the engineer level) and manage hypervisors or systems. Other’s mileage may vary on that one, but I don’t see a CCDA - CCIE patching Windows or Linux servers.
Last, I’ll say that management is always an option. If you move into Team Lead or something and find you enjoy that, you could always change the global perception that I.T. managers suck and build a great culture and team that excels at every challenge.
* This will be very challenging, but you will be way ahead of the curve regarding web development if you choose Golang.