I do whatever I want at work and I haven’t been fired yet
m.signalvnoise.com
m.signalvnoise.com
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.
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.
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.
-- 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.
Are you saying you don't personally enjoy using it? Or that you think it's poorly engineered?
This advice only applies to people with enough experience.
I'm thinking of a certain ex-employee that followed that advice all the time, despite us constantly correcting him. Even on their final day, they was still insisting that they was doing good work.
To this day, we are still finding code they wrote or modified that is wrong or broken in horrible ways.
Why? Because they didn't have the experience to know the difference between a quick fix and a good fix, and when to employ them. (Hint: The "quick fix" is almost never good enough.)
My personal line is a long way away from "Will it get me fired?" and I've got decades of experience.
I've always said that programming is all about making assumptions. And I'll frequently send off an email stating some assumption I'm making and start coding based on that assumption. If I get corrected, I can change pretty quickly. But I'm usually right.
But just not asking? Forget it. If I'm unsure enough to bother with sending a 2-line email, it's worth asking.
However, I noticed that he only told others after it was completed sometimes, which is often far too late.
Experience lets you know which ones that's okay for, and which ones it isn't.
The natural addendum then is, "listen to feedback".
Only if I'm very, very certain do I not bother asking.
And I've certainly got non-programmers around me that make business decisions all the time. It's their job. I'm not sure how that's relevant?
The same thing applies: They should only be doing it without consultation if they have the experience to back it up.
I once went to 99Designs and paid $2000 for a designer to redo a certain set of pages on our corporate site. Start to finish, the project took 27 days. This is insanely fast in our context - the usual process would have taken 6-8 months, and at least $100,000. The large agency we work with would have dedicated a team, spun up a project, set up a series of meetings...
To be fair, I get the need for process and I totally get the value of working that way, but it's nice to have management that backs you up when you really need to get something done fast. And yes, once the need for those pages was over (conference related), I made sure they were handed over to the right team for long term management, and not just abandoned as orphan pages.
Over the course of my relatively short career so far (7 years?), almost every single "big win" has been because something was bugging the crap out of me, and I just decided to do something about it.
The key is to do this kind of autonomous stuff while still delivering things people expect you to do, unless/until your peers and management are clear on the value you bring just doing stuff on your own all the time.
If you can give employees these things, they will stick around longer.
There's a great book about companies run through bottom-up decision making called Reinventing Organizations. My take away was that bottom up can work at any scale, but it requires true believers at the top who are constantly working hard at making themselves unnecessary. Once the true believers walk out organizations naturally revert to hierarchical decision-making.
Management in 3 bullet points: 1. Have clear goals. 2. Articulate your goals clearly. 3. Go to 1.
If so, I would never feel confident in doing whatever I want, as I know I wouldn't be able to put 100% of my focus on it, and probably forget something important that could screw a lot of things up.
There's a relationship here with profitability, for sure - companies that are profitable are likely not prioritizing growth over profit, and aren't beholden to investors who want a big exit, but the profitability is more of an indicator than the cause.
I mean, it's great to be able to discuss things with your boss and colleagues and take collegial decisions...
I don't understand the idea behind the post...
A lot of objections one might have to their choices are usually deeply rooted in other organizational dysfunctionalities. Other companies for example may choose to hire weaker employees due to the urgency to get people sooner. Sooner is more important than correct and then you have employees you can't trust to be autonomous. Or you put people in managerial positions whose purpose is to delegate, or approve tasks as part of their monitoring duties. This goes against autonomy entirely. Basecamp for example doesn't have any real managers.
While you are right that this won't work for many larger established companies, from the perspective of people starting out (and there are a lot of them), these posts serve a purpose of raising a middle finger to the established norms of running a business. There's a purpose built around tearing down bad decisions that lead to other bad decisions that eventually lead to ineffective teams.
And that's the idea behind this post.... Probably :)