My employer is a small startup with about thirty people, and a tech team of 10, including myself. As the tech lead of the company I am end-responsible for all software we produce, play a supporting role in operations and have managerial duties in the sense that the tech team are directly reporting to me. One slightly unusual aspect is the fact that I am at the position were I am despite being the youngest person in the company. I am most definitely (as acknowledged by most) the most skilled person technically and have entrepreneurial experience. Most of my technical colleagues have no leadership aspirations. Some of them are twice my age. Personally I have a lot of leadership aspirations and in no small part took this job specifically for the possibility of opportunity to grow towards a position such as were I find myself today.
I am part of the Management Team, which consists of six skilled colleagues that are each experts in their respective fields - most of those fields not technology or software engineering. These are great people and amongst them are some that I consider friends.
The technical team that I lead vary quite much in skill. Some have just begun software development but show a potential, others have been trying to get "it" for two years and stagnate. There are a couple of senior guys, esp. considering their experience.
Today, in the office, I spend an hour considering to quit. To just stop, as I can not take it any longer. More and more days begin to feel like a hurdle that I simply can not overcome.
Let me describe what I consider to be some pain points:
I personally have much too much to do. There are a lot of "ask [my-name]"'s trown around for basically all problems exceeding a certain level of difficulty.
We have quality problem. In the relatively short timespan of the existence of the company a lot of code has been written by contractors prior to me joining the company. They produced what I shall describe as a "difficult to maintain mess that sometimes works". I'm trying to sort of be the gatekeeper for new bad code and try to improve the quality by only add / allow to be added code that will not increase our problem.
The position of gatekeeper means that most code does not enter production without my approval (currently that is our process, the product manager demands technical acceptation from me for every backend story). That of course means I am a bottleneck, which by itself is a uncomfortable position to have for a sustained period of time.
I am not the greatest leader in the world in the "non-technical" sense. When today I saw a lot of people wasting time on the wrong things, I had to grab myself together for half an hour preparing to get those people back focussing on their work. And I failed. I failed to grab the courage to say: "Hey you two, we have some deadlines and I do not think you are efficiently contributing towards catching them." I am still upset thinking about that. I do not want to be a leader that babysits. I want to be someone that teaches, inspires etc. However much of the people are not there yet. They need (a bit of) strictness and well complicated algorithms come easier to me than strictness.
People are very imprecise, often submitting code for me to review that is far from finished and that I would never consider "done" myself. This is not really improving over time. Combine that with some's tendency to arrive at 0930 and leave at 1600 and you get an impression of the level of professionalism I have to deal with.
I have been a freelancer for years and I was growing less, had less talented people around me (as I said my MT colleagues are great) but I felt like I made a difference every day. Today I produced nothing of value, was an inadequate leader and probably showed a lot of weakness in visible distress over the situation. I am tired. Do you have any advice? Much appreciated.