I started my professional career more than 6 years ago. I started at a small company (less than
10 people). We were mainly a mobile development shop. I was known as 'polyglot guy' and 'Moving
MSDN' working with the various technologies (C++, C#, Python, Java) on various platforms
(Symbian, Windows CE, Windows, Java ME).<p>Then the company met a lot of management and financial problems. The manager made a lot of mistakes
and later closed the company. This was very hard for me considering that I'm responsible for my
mom & younger sisters after my father died. I worked there for 1.5 years.<p>Then I moved to another small company, working on ASP.net. I was able to learn it very fast & become
productive with it, performing very well at the beginning & used my good points (learning fast & using
various technologies well) but I met some problems when I was responsible for a whole project for
the first time. We ran very late & the quality was very low. Adding to this that the company was
really bad when it comes to collecting their money, it was financially unstable. I had to leave
after 1.5 years, though I liked this company very much.<p>For the next 1.5 years I worked in 3 small companies, 6 months in each one. This was really a
horrible period of my life. We were always overloaded with work, project scope was rapidly
increasing with the same cost. We were working for 16 hours a day. We were treated badly.
Everything I tried to do was not enough to save any company.<p>I didn't try to fight till the last possible moment. I had enough of small failing companies. I was
convinced that to create a successful software project I should focus on management, not the
technical side<p>I went to work in a large software company, not as a senior programmer (as I used to be) but
outsourced to another big company as a technical project manager. I accepted this position for 3
reasons<p><pre><code> 1. It is financially stable
2. To enhance my communication & management skills
3. This was the only way to grow
</code></pre>
Contrary to my previous positions, I had manage many small interdependent tasks. I wasn't good
at doing this. I slipped the deadline most of the time. I have to ask everyone at each step multiple
times to do anything. All the time. I'm always blamed because I'm responsible. What makes me angry
is that it's late because of somebody else. The only parts that went well were the parts that I made
myself, or any tool that I made to automate a manual process. I'm much slower than any other
colleage in my team & the whole company, even people who are much younger than me<p>After sometime I knew that I'm not good at this. I asked my mother company to return to their HQ
and work on a more technical position, but they said there isn't a vacant place for me. Later I
asked for a communication skills many times, which I got finally.<p>I don't know how to grow in my career. I don't want to work on management, but I alsp want to feel
that my work is valuable & affecting the company positively. Here in Egypt the only way to grow is to
go the management path.<p>I also want to work with Python. All the companies here either use C#, Java, C++ or PHP.
Halfway in your writing I was thinking this guy must be from India. But no you are from Egypt. Okay its the same story there also. Let me share my story here. I am at the same level of experience as you are 6 and half years into software.<p>I started in a big software service shop in India. Worked for amazing clients (I cannot name them here). Some of the technology that I have worked on - Java, Lisp (yep got paid for working in common lisp), C/C++, Hadoop, JavaScript, etc. After working for 4 years I decided to move on. But I got Job in one of the news companies. Worked there for more that 1.5 years in (C# and Java). Now working in a banking product based company.<p>After all these years (not that much though), I have come to the conclusion that - you need to be a techie to survive software industry. I have defined growth as: learn a new language every 6 months. Do something extra like open source. I know, I may not get hefty pay packets like the managers in India but I have chosen this path. I am happy with that.<p>For you I believe you have identified your areas for improvement. You just need to think deep why the schedule failed? Find and read some books Mythical Man Month and Peopleware. Chances are that people have already been there and done that - so learn from them and try to adapt and apply in your case.<p>Moreover, <i>before you do anything else</i> just ask yourself what do you really want to be - a manager or a techie. Once you have the answer get going with that flow.
It sounds like you have a grasp of the big picture and are finding it difficult fit into corporate life. One option is to build your own pyramid, er, company.