I work for Ginormous Corp, Massive Division, as part of a high profile project, doing the part of it everyone is watching. Yet we are dependent on a dozen teams, spread out over the whole division, with an insane amount of dependencies, meetings, processes, systems and modules. Constant changes coming from all over the place make even knowing what we have to do and when a continued struggle. We have to worry about distributing budget, getting and making estimates, try to negotiate with other teams for their part, and somehow make progress with our part.
It’s beyond frustrating and is clearly a big company problem. This project has visibility to the parent CEO and a lot of investment. I often say we are the little penguins on top of the giant iceberg: everyone sees us but no one seems to notice the massive berg below.
I really miss being part of a small wholistic team, where everything and everyone we need is right there or at least fully involved if remote. A lot of times in my 35 years that was the situation including my two companies (85-94) and other occasions including two jobs ago at the travel company (now sadly just a brand of HugeTravelInc).
Being a part of a team all working together on one or more products, with a product manager, designer, QA, developers and maybe a few other folks all together is to me the perfect environment. At the travel company mobile team we had about 20 people including all of those roles and just a single manager. The CEO left us alone (with 2% of the companies employees we did 15% of the revenue) other than one time to build him a special app. We had 4 apps for iOS, one for Android, mobile web and also a mobile API in front of the monolith backend. We shipped frequently, even daily sometimes, we all traded off different products, participated in product decisions, design decisions, iterated on ideas and even interacted with actual customers to see what else we could do. We had fun together and did virtually no overtime at all.
Of course my two little companies were the same, the first that shipped Trapeze it was 13 people, and the second was just 5 that worked on Persuasion (for the author) and Deltagraph for 5 years (for the publisher) and was similar. It was rewarding to work on something where you had input into everything from UI to functionality to experiments in wild new features. We also had full-time QA people who knew the products backwards and forwards and made shipping a breeze (which it had to be in those days we shipped on floppies with no chance for patches). Even back then we rarely had to work extra time since we shipped when it was deemed ready and not on some random number schedule.
Today the pressures and stress is insane, mostly because there are so many people doing so many things that all have to be coordinated and contented and cajoled and sometimes forced to do things. Design, product, process, schedules, estimates, and change requests are a constant swirl of confusion. We call it agile but it is just waterfall with agile floaties, barely keeping above water. It’s frustrating and the developers have almost no say in anything other than these random guess estimates based on often vague stories which become cast in unobtainium and scheduled to the day.
I miss being involved in all the roles; I’ve been the head person as well as just a team member, but in these great places I was always able to suggest improvements, try new things and have everyone bounce ideas around to make stuff better. To me that’s the beauty of having an involved, excited team building stuff we all care about.
While some of us here are passionate about doing great work, the other teams are often random collections of contractors, often in various countries, who really have no understanding or interest in what we are doing or what our customers care about, and are just mechanical in working and making sure the billings continue. I don’t enjoy just writing code to spec on a time clock and fixed budget decided by others. I want to help but we have such strict hierarchies and silos that not only can you as a developer not suggest anything, but you may not even know who to suggest it to, if you could.
I was recruited into this position but the actual process was changing a lot and no one really knew how this big project would be done, so I had no idea what a giant mess it would be. The team I am on directly is very talented but we all suffer under the same strains.
The worst thing is not even knowing if this iceberg won’t crack underneath all this complexity and fail miserably. When you are the penguins people point to you so it’s hard to avoid the stares, even if the berg cracks underneath you and the sharks eat you up (OK enough with the cold metaphors!).
I like to ship. I like to ship apps that work. I like to ship apps that work and ship them in a reasonable time to customers who like them. There is nothing better than to talk with customers who love what you produce. My first product, Trapeze, still nets me emails occasionally from people who still remember how much they liked it, even though it was last sold in 1989!
Good products usual come from good teams that worked well together, and created it by functioning as a whole team and not just a collection of silos. I know a major airline still waiting on a new version of their app (now almost 2 years in the making) built by an offshore team that built their existing app which has always had miserable ratings. They thought saving money was more important than having a team of people who cared. To me thats stupid.
Then again building a product with 40 times the actual people needed, in great complexity and with enormous process and overhead isn’t very bright either. The eventual app will be built out of a myriad of pieces but is still not remotely as complex as an app we built at the travel company (flight, hotel and car booking) with only 3 programmers, one designer, one product person and 1.5 QA. Even Deltagraph (88-94) was built with only a handful of people and was a market leading product during that time (and for some bizarre reason is still sold in 2016). I can still see decisions I got to make in the product today (which hasn’t changed much in 20 years). I still remember why those things were done and how we all figured it out.
It’s the little teams that build great products that you remember, that you want to repeat over and over; the horrible monsters you suffered through you want to forget. Like the project I did in Mexico with 40 people crammed into a room doing a death march for 3 months. I did learn enough Spanish to order a lot of cervezas.
If you find a great team stick around if you can, it's worth it to be a fully involved team member and not just a warm chair which I imagine is what most of us get up to go to in the morning.
I am not just a cow: feed me requirements and I poop out code. I want to help conceive, build and ship great products with a fun team that doesn’t work too much. Is that too much to ask for?