I have spent 20 years of my career working at small to medium companies and in the last 2 years I moved to a large corporate. Now this might not hold true for all environments but I wanted write down some of my experiences.
When I started out as a developer I started as a Junior Delphi developer in a tiny one man business with a team of 3 developers. Here we rushed from day to day to make sure we deliver something that the owner could sell. There was no structure, no real planning. Planning consisted out of a 30min meeting with the client and 30 min meeting with the owner before you start coding. Scheming, lying and deceit was part of normal day to day observed business behavior to make money. Yes client, we mailed you your application last night…meanwhile we are still coding and what was mailed was a large word doc renamed to have a .exe extension to allow for us to have more time. This was the day of the 28.8k modem and if a client could not open / execute the file you sent it was his crappy internet that was at fault. This is the era where I learned to work fast under high stress, some nights I slept under my desk as to deliver as quickly as possible. When the owner was absent somehow his son became your new manager, magically he suddenly new better than all and through inheritance you became his property. This was the door through which my career entered and I’m grateful for having had this opportunity but would never want to go back to it.
I moved on to medium companies and this was where I spent the majority of my career. I was very fortunate to end up early at a medium sized companies that placed value in planning, code structure and well developed software. In the beginning we did a lot of planning upfront doing UML. I would go as far as to say 6 months of the year we just planned and then 4 months of the year we coded the solution as it was planned. I learned a lot during this period from very skilled individuals on how to engineer software. As time moved on and the world moved to the agile methodology things changed slightly but the companies where I found myself still valued proper engineered software meaning you where allowed to do some proper planning and a UML plan was required before you started to code. We the developers that worked together would move from one company to another during this time and take some of mates along and so this culture continued for me from 2002 till 2014. This might sound awesome but there was a lot of pressure as well because you where allowed to plan upfront meant that your estimates had to be spot on. A delay in your delivery could result in a written warning. There were nights that I had to work late till 11pm but I could could those on one hand. I loved the way how we could plan and break down work and have clear decisive plan by the time we get to delivery. Every person in the team knew exactly what he had to do and you could rely on that person…baring the few bad apples. We were agile in the delivery phase but planning had a bit of a water fall approach and this is what I truly believe works best.
I moved on to a Corporate. I was stunned by the relax atmosphere. You form part of a team but not everyone in the team reports to the same manager. You product owner, scrum master and architect has each their own line manager and each is driving their own agenda. The team members did not all appear to pull in the same direction. The team leader was not the strongest technology person in the team and was a mini manager instead concerned with HR related matters. Managers rarely got involved in the day to day activies of a team. If you did not complete your work for the last 3 sprints? Don’t worry we will move it to the next sprint, just continue doing your best… What!!! Let Johnny do some of your work for you cause you can’t get tot it.
I struggled to fit in.
The slow pace of working with lack of direction stunned me. There were teams of young developers straight out of university with not a clue what they where doing being led around by the agile process. It took a lot of effort for me to stay. Instead of learning how to engineer software these developers where fumbling around wasting time. I setup session after session at the time with the developers trying to educate but with lack of technical leadership in their own teams they fell back into their normal habits. Planning of any sort was banned by the agile couch – we are agile you get 1 day to plan your work for the next 8 weeks! We had dependencies on other teams but there would be no alignment on times or delivery.
Now some of this might sound horrible and it took me more than a year and 2 promotions later to find my place but I have since found that the corporate world is what you make out of it and now I love working where I am. I took this as an opportunity where I could be to be the change. I am in control of my own destiny. If you want you can put your hand up and show people you know better and you will be given the opportunity to do so but you can also just melt away in the crowd and ride along. Promotions are easy if you know what you are doing. You can go and learn further if you wish and the corporate will pay for it. I have been at a Corporate for 2 years and now the same culture that was at my previous employer is starting to appear Waterfall type planning upfront followed by Agile delivery.
At my current age I have paid my dues, done my time of late nights and I am happy to take the relax train for a while – while trying to further educate myself and the younger generations. I will try and give them some guidance…Maybe we can speed this train up.