I am working with code since high school. Like most of us, I switched between several disciplines, including embedded systems, functional programming, database development etc, to end up working as a full stack software engineer (web technologies) for the last six years now.
In my first job I was working for a middle range company that was providing implementations for outsourced projects coming from world renowned brands. I was one more gear in the engine. It was my first touch with the real thing, actually first time that I worked with two monitors side by side and first time somebody was paying me to write code.. I was spending my spare time watching tutorials and videos to improve my skills and I really enjoyed that. The tasks I was assigned, were more or less matching my skill set. What I got from this company when I left, was the experience to see my code used by thousands of customers, my first touch with the Agile procedures and how the things should be done properly in this industry.
My next role was in one of the millions of "ambitious startups" that promise benefits and shares in their job ads. The team was smaller there (5 developers including myself) and the company was pretty much product based. I was working in a healthcare visualization solution. The overall management had the (self named) senior developer, who was the employer's step son. No Agile, no meetings, no stand ups, no talking at all, no transparency, no access to the servers (alpha, beta etc). We were all assigned tasks coming from this person and we had to implement them in his way, without any space for to make suggestions.. No training, no access to resources, no career development.. I found the developers quiet frustrated, the employer was always complaining for delayed deliveries. It was clear that something is not going right there, but I had to survive my bills so it took me a while before I decided to leave. What I took from this company? Nada!! Just the joy to work on code and get paid for that (not that much though).
A marketing agency was my next stop (and I am still there). The majority of the projects are short term and they are mostly commercial. Every now and then we work on bigger projects though. The situation here is that (again), there is lack of management - or even better, the management is not proper. For the commercial projects usually there are no code standards, usually we have to deliver something really quick and as such, there are no code reviews. The problem start after a while, when we have to maintain those projects and deal with the spaghetti.. For the bigger and more complex projects there is some kind of management but in the way that the "manager" (not real manager - just has some management duties) understands it. Since this person is not an original Software Project Manager, he is not aware of the proper procedures. The "stand ups" have a different definition..., there is no space for unit testing (or any kind of QA), there are no delivery estimates but at the same time he is very very very very very sure he is doing a good work as a manager.
I decided to move on, I need to get challenged in something big and proper. I think that from my experience so far, I can identify from my interviews what is the culture that the company has so (fingers crossed) I will end up in a better environment.
I would be really interested to read opinions and suggestions on what could I do better to stay competitive as a professional. I didn't touch the technical part because as a person, I am always curious on the new technologies and I spend a lot of my time trying to stay updated with the latest trends on software development.
Thank you for reading this.