A place where you can "do whatever you want" strikes me as a place with a very short history of mistakes.
A place where you can "do whatever you want" strikes me as a place with a very short history of mistakes.
As your company grows from small-sized to medium-sized, your technical processes need to grow, too.
I find spending a few days writing a detailed, in-depth design document for a given implementation often saves weeks or more of development. In the immediate term it takes longer. In the medium to longer term a thorough design can often lead to fewer bugs, less severe bugs, and less complicated enhancement development.
What you describe is what engineering is, at least partly. Your attitude, which is quite common, is why I scoff at calling what this industry does "software engineering". It's rarely as thoughtful, careful and detailed as engineering requires.
Not that that is a bad thing. Often what a business in this industry is making just isn't complicated enough to need much beyond simplistic hacking at a terminal.
Sometimes "small improvements" have ramifications outside of the context of the change (potentially significant ones). The person implementing these improvements has to understand the scope of the change (including side effects on external systems, if any), and that effort should be documented somewhere or at the very least reviewed by peers for correctness, especially for truly mission-critical or sensitive systems.
It doesn't have to be a "fill out these forms in triplicate and don't forget the new cover on your TPS report mmmkay" kind of documented effort: it's not one extreme or another.
-- Clay Shirky
The root problem is that while process is usually something that's quickly thrown onto the pile, there's rarely any companies that continuously revisit process in order to remove as much of it as possible as soon as it doesn't make sense anymore. We do that religiously and it makes a huge difference.
Recently we even got rid of our Daily Standup because we saw it wasn't bringing any value with the way we already communicated.
Process needs to be continuously lived, renewed and owned by the team, otherwise it tends to rot and negatively impact speed, morale and innovation.
IMO, the problem is any specific process is going to evolve to the point where people just go through the motions. But, without stability people are more likely to keep thinking from new angles.
When the decision is in the domain of the actor, you should make it your organization's goal that though computers, policy documents, or documentation process that they can try to make the decision without outside human intervention. Outside of very unusual requests, escalation up management or other stakeholders shouldn't even be required.
Places where I've seen pushback on actually documenting these choices have usually fallen into one of two camps:
- too much approval required for just about anything, to document it is to admit they have a problem and would take a long long time (hint: this is a lot of engineering groups).
- making the policies public would be embarrassing to management in some form (prejudice, illogical, half-baked, etc).
Both of these are "fish rots from the head first" type of problems, and unfortunately I haven't seen good ways for people down the ladder to fix them.
Are you saying you don't personally enjoy using it? Or that you think it's poorly engineered?
That's all. Just agreeing.
Move fast and break things > Move fast with stable infra
Sure, we all know the trick to startup success. Sprint as fast as you can for that cliff and hope the cliff moves before you get there.
I've also worked in places with near absolute freedom, right down to the level of individual engineers building out new products without approval where a single crash meant all hands on deck.