This is actually quite interesting as I was just talking to a few other professionals about this in a social setting. I was the only one in software development.
I mentioned how stand-ups work briefly, and that it might not be a bad idea to adopt for (for example) an accounting department to keep things on task.
The response was both extreme and universal: How the hell do you all accept being micromanaged to such a degree? Don't any of you have any dignity?
Every single one of them (all professionals, like I said) were adamant that they would leave any position that managed them no better than a burger-flipper.
No lawyer, accountant, doctor, engineer, scientist or other professional stands up each day to report *to their peers* on their progress.
It's for Devs only to make sure they are not blocked and they are communicating what they are working on. In my last company the non-tech people weren't allowed and the DSU was only for engineering.
It is not a daily status meeting!
If it has turned into this then it should be scrapped because as you say it'll lead to people leaving as they feel they are being treated as low skill staff.
Btw I wrote this in a DSU that had non-tech people yabbering and which was basically a daily status meeting.
If in the course of one's work one becomes blocked, would one really wait until the following day's stand-up to tell anyone about this?
If so then I think both the worker and the company have bigger issues than whether the stand-up itself is a good use of time.
The mind boggles.
There is hard block and soft block. Hard block means you have no clue how to continue and so of course you should get help right away. Soft block means you have ideas and are working on it, but - unknown to you - someone else on the team knows exactly how to solve that problem and could solve it for you in a few minutes or you can spend all weeks working out the answer. The soft block is a lot more common - engineers are smart people who can solve complex problems, but we often fail to use the help of someone else who has already solved it. Thus the standup should be able airing problems that you just need to finish typing the solution in. Sometimes someone else will say "I can help you do this faster", others it is just keep working until you get it.
However 99% of the time what I see in Real Life is even when it's just devs talking they aren't offering up enough information for either of those to happen. Either imposter syndrome kicks in and they don't want to look stupid in front of their peers, or they're just annoyed at having a meeting. So it just becomes a status update meeting anyways
This to a T. An awful lot of stuff coulda gotten crushed, quickly, if I'd just asked for help ASAP instead of siting on it and feeling dumb.
edit: to be clear, I think they're good definitions, just never heard a definition
BS "can I pick your mind", chit/chat, questions that could be Googled, and of course, micromanagement BS are interruptions.
DSUs themselves are also interruptions -- it's just that they're scheduled and not event-based.
In other words, necessary communication is not interruption. Accidental communication is interruption (to be read as the same concept as necessary and accidental complexity).
Sometimes stand-up for me means 'remind myself what I was doing'; if not that then I've certainly not got far past it, haven't had long to get much done or be stuck. I'm unlikely to say in a stand-up that I'm stuck on something, I'll have a(nother) crack at it and perhaps ask after lunch if necessary.
https://www.scrum.org/resources/what-is-a-daily-scrum
From the horses mouth:
"The Daily Scrum is Not a Status Meeting"
Or maybe see about getting him certified.
They go around the room and everyone has to say something and it ends up being a status update.
The whole process becomes a micromanagers wet dream.
As long as you complete what's "agreed" to (which is transparently a conflict of interest: engineers stating what can be accomplished; the ones who have to do the actual work), then everyone seems bizarrely happy.
The reduced working hours I qualify as increased salary, which prevents me from jumping ship for a better salary. I also qualify the reduced work as metal health recompense for perpetually dealing with scrum narcissists.
It's Putts Law https://en.m.wikipedia.org/wiki/Putt%27s_Law_and_the_Success... - but somehow management's impotence is becoming increasingly transparent.
A lot of `Agile` material is just doublespeak meant to sell consulting hours and training.
kick them out.
"Hey you know your morning check in, this is the one true holy way that every company in the world should do it"
it's not even that it's not probably a good way to run stand-up. But the hubris is pretty extreme.
If this works for you then this is good.
But I think these meetings are not for devs or something is very wrong with the setup. If they are Devs are are in the same team and working on the same project then I assume they have access to version control => no need top update on what everyone is working one. Instead teach them to do small commits and to write better commit messages.
If the meeting purpose is to communicate what is blocking someone => this again fails IMO because then someone might wait 1 day blocked? And if they don't wait that much and do an action about it what is there to communicate about in a daily meeting?
Devs on their own could do that, and do it better, before such BS like DSU was invented...
I think this has a lot to do with the office culture of software being figured out at the same time as the professionalization of Management and the trend of "methodologies" to give a veneer of objectivity to the managerial class. Combined with FOMO about the fortunes being made at certain other companies, whose whims and experiments are then followed.
Whereas the other professions you mention had their office cultures defined in very different times. Once defined, these tend to be sticky.
For example the extended hazing ritual by which we mint medical doctors in the USA is completely insane and would not be tolerated by doctors in most other countries, much less by non-doctors. Or for scientists, the amount of time many of them have to spend on acquiring funding for their employers instead of doing actual science, not to mention the very broken world of peer review.
The thing that makes our situation special -- and which these people were probably reacting too -- is how transparently ridiculous, toxic, and demeaning a lot of it is. From open-plan offices to stand-ups to pair programming and on and on.
I think we put up with this stuff because we are convinced we should be thankful for our fat paychecks and fear the Barbarian Hordes waiting to take our jobs for cheap in Elbonia.[0] That both of these things are objectively false has not made much difference in the last decade, but the salaries have gone up, so...
I married a doctor. The "hazing" is slowly going out of fashion as older doctors retire.
What they do have is a very nice licensing procedure. Yes, it's annoying, but it works a lot better when a doctor needs to get a job, because their interview process is much smoother than in the software field.
What a concept.
In case anyone wants a glimpse of how bad medical school could be:
https://web.archive.org/web/20101218031844/http://www.medsch...
It's a pretty old site, no idea what it's like now.
Glad someone else is mentioning this, about 10 years ago it seemed like it was the hottest trend and that anyone (meaning any programmer) not willing to adopt it was either too lazy or had something to hide, or, most probably, both.
Here in DR docs get hazed out the Wazoo-being told they don’t have the status to look at the head surgeon in the eye or being tasked to get coffee.
I'm sure there is a lot of status-related meanness everywhere but I was thinking in particular of the US practice of intentionally and radically overworking people (to a level dangerous to both them and their patients) in order to prove they can take it, which is pretty much classic hazing. Wouldn't be surprised if it's copied elsewhere but I know it's not done everywhere.
Standups with more people working on separate projects are useless*.
My most recent standup with a group of 8 who were working on many separate projects spread across mobile, front-end and server. In this meeting, even if I did share some details about what I was doing, no-one else would have the context to help me. Also, it feels disrespectful to go into detail about something highly specific to my work while 6 other faces stare blankly as I waste their time. Ive heard stories from a friend's company of a standup with 30+ people across product, engineering and management. Could you imagine going into detail about your choice between an abstract class and interface on the call?
In such standups, the only sane action is to give a quick, high level update and mute yourself and go back to work. Standups like this should be ruthlessly dived down into several smaller meetings of people actually working together.
*Interestingly though, most people on my team love the standup for another reason - human interaction. Folks simply want to tune in and say hi to their team. In my opinion though, this isn't a good enough reason to keep unproductive standups, and the meeting would be better replaced with an optional 15 minute "coffee and chat" meeting. If folks want to tune in and chit chat, great - let them do it! But no need to waste people's time with mandatory "agile" ceremony.
I've never heard opponents go "communication doesn't matter", yet the moment we talk about taking down these meetings, that's the first kneejerk most proponents I spoke to reach for. As if being against standups is indicative of thinking poorly of communication. Same goes for specification of goals, cooperating to keep everyone going strong, and improving to make things less of a drag. Is there so little faith in basic human intelligence and cooperation, that this one method is the only way we silly developers can be redeemed?
Now we have a bunch of people who haven't touched code in multiple years parroting what the consultants sold them and trying to talk their way out of aforementioned proof. Or they make claims like "well but it is better now!", as if their previous methodology wasn't so horrible they could've thrown a dart and very likely get a better result.
Doctors do something not far removed. It's really important to them to caucus on case management.
I think other professions may do the same.
Maybe, but it is removed.
From my recollection, doctors don't standup each day to report on what they have or have not done and their individual progress, they report on purely on problematic patients that could do with expertise from a different expert, and it's not a daily progress report.
If software development followed that sort of practice, we'd have problematic issues added to a pool that gets discussed once a week. What we have is micro-management of each individual. Doctors most certainly aren't being micromanaged like that (well, not the one who I was socialising with, and not any of the others I've socialised with).
So they'll co-opt any newfangled trend into plain old serfdom. And they do.
As another commenter said, we should take page from the lawyers. A lot of them manage to convert bosses into paying subscribing customers.
In fact many of the teams I’ve working are fine with people skipping standup if they have any reason to. Currently I skip like half of my teams standups.
So yes they do say a lot, maybe not what you believe but they still do say things.
Isn't this what standups should be for developers too? It's not supposed to be a daily status report, but a discussion about blockers and an exchange of knowledge from other devs that might be able to unblock you.
It could have actually inspired the daily standup. With the tradition of taking inspiration from surgical teams and everything...
Engineering project teams doing Scrum struggle when tasks need to be initiated and completed at a faster cadence than their sprint cycle - for instance an engineer doing development work planned monthly gets 3 calls a day asking him to reboot a server.
There are apparently better ways of managing operational work - for kanban (with or without a board), ticket systems and queues and processes and dashboards for managers to spot bottlenecks live and re-alocate workers to solve them.
I know (from TV docs) that ERs here generally have a "morning meeting" where the manager briefs people and talks through throughput statistics and demand estimates.
I don't know how to manage an ER department, but I'd understand a lot of work has been done in that area. What I could say is that it isn't project work you could plan on a monthly sprint cadence.
Burger bar workers will also generally be executing operational work according to a clear process that involves tickets and ownership of a problems (tables). I've also seen IT help desks run like this.
What I'm saying is, Scrum is one possible way of running things, but it isn't one size fits all for all kinds of work. But just people are not doing Scrum does not mean they are not working within a detailed process where they may potentially be micromanaged to the same degree.
Scrum dailys are very clearly based on those, despite the fact that development work is neither operational nor shift-based. It's cargo-culting all the way down.
Even so, the long work hours of younger doctors are infamously sub-optimal. We shouldn't submit to the assumption that something is right because everyone does it and they operate in a free market.
If we need to analogise it, I'd say it's more like sprint planning - discussing what's to do on each ticket (patient). Except it's longer and more detailed, and the work that's left is much more like grunt work in a way - book the scan, take the blood, chase results, etc.
I think it’s a reference to the Mayo Clinic team-based model [1].
For simple stuff, a single doctor executing a textbook is fine. For complex cases, doctors of different disciplines meet to discuss, create and keep track of a care plan. The analogy being most problems a programmer is tackling are assumed to be novel cases.
[1] https://catedradecronicidad.es/wp-content/uploads/2020/06/Ma...
Otherwise we can say any team sport discusses tactics for a game and this is a daily stand-up and it works for them so why not software.
Pursuing a common goal. But working on different problems. (Is it a blood pathology? Is the immune system misbehaving?) If a team doing a stand-up isn’t working on any sense of a common problem, they aren’t a team and aren’t working efficiently.
Software engineering/IT RUN and SUPPORT activities MAY fit there too, but that does not even mandate a daily review. BUILD activities definitely don't.
And worse, teams mixing RUN and BUILD roles... definitely don't.
Trello and a standup among teams would immeasurably improve things.
(Source: I know a bunch of big firm lawyers - and ex lawyers who said "Fuck this" and quit)
So, software development in a nutshell? Maybe I only have seen bad examples, but I've never seen the agile/scrum/whatever-of-the-day stop these things from happening. You have these things and at some point they add the process on top cause "we sure do need a process".
Such entitled garbage. Restaurants manage people much more tightly, and often with very abusive practices and wage theft added in.
Stand-up is nothing compared to having an underpaid alcoholic yell at you because you leaned against the wall 2/3 of the way through your second double shift in a row.
It's harder to get much sympathy from others as well if/when you're paid much higher than many other averages. Using the term 'wage theft' - normally used in discussions around minimum wage job abuses - for someone who's making $80/hr, (and may get some stock/bonus) doesn't get the same sort of reaction. The term doesn't even feel quite right, but that may be just because I've heard it so often relating to the lower end. I'd imagine it's not even about money so much for many folks as much as it is about time.
Actual wage theft is very common in food service. As in, you earn the money and someone else takes it.
It's essentially legalized wage theft.
Thankfully I get paid hourly, but still when I do overtime it's only paid at a x1 multiplier because the dinosaurs in office deemed 'computer workers' [1] are exempt from fair labor regulations. Likely, those in power guessed that they could safely chip away at more worker's rights because most of the voting base won't feel solidarity for highly paid salary positions and 'computer workers'.
[1]: https://www.dol.gov/agencies/whd/fact-sheets/17e-overtime-co...
I don't agree with that point, especially since food service has the most toxic management of any industry.
Yes I’ve done it. It’s not the worst job I’ve had but my current job affords me the opportunity to type this from a vacation house on the beach in Hawaii. When I told the people making my lunch last week that I was headed to Hawaii they said they always wanted to go there and hoped to do it in a couple years, like it was a once in a lifetime trip for them. And it probably is.
People need to actually pay more attention to the world around them and have some conversations to realize how well we’ve got it.
I did have some really good managers though, people I couldn’t believe weren’t doing better things (and some real bad ones, too, of course).
Firstly the error rate. We make 'mistakes' (bugs) all the time, how many other professions have a dedicated QA department dedicated day in, day out entirely to catching error. Yes there's audit, but most departments only even talk to them a few times a year.
Then there's the issue that the problem domain, and the design you're trying to implement, is often very poorly understood or at least documented and specified, even by the domain experts commissioning the project. This is the whole reason we have agile.
Between squashing bugs and constantly course correcting on the direction of development, I think some of the micromanaging makes sense. There's a heck of a lot of very unstable micro that needs managing. As has been mentioned already, the nearest analogy I can come up with is medicine, particularly for critical patients with poorly understood conditions. I think a great, if completely fictional example can be seen in the frequent discussions going on between the medics in 'House'. They're constantly putting their heads together and white-boarding cases, though in reality such discussions are I'm sure much rarer than the show makes out.
A lawyer, accounting, or doctor will typically have their own clients that they focus on. They may ask for advice on occation but generally one of those professionals will handle many customers completely unique needs.
Lets look at an accountant for example, they will have multiple clients each of which take up a small portion of their day / month. Each has individual needs and rarely will they have any real relation or crossover in their work. It'll be even less rare that your client has anything to do with another client of your business which may be handled by another accountant. The same is the case for doctors, and lawyers as well. You have one professional serving a multitude of clients.
Programmers work differently, typically we have multiple programmers to a single client. That client may be internal or external. If your particular case needed 7 accountants, or 7 lawyers you'd be damn upset if they weren't in regular communication about the work they're doing towards your case. If they all came back with totally different suggestions that completely clashed you'd be shouting at them for not communicating together properly.
Engineers are the only ones where I think there's a stronger relation. You might only work with one engineer for a small change to your house, but on big infrastructure projects there had better be regular communication between related groups or you end up with your designs failing ragulation.
Daily standups are for the programmers in the team to get together, to de-conflict, and understand what's changing around them. If Janet is about to make a big change to the auth system and you're working on a new api endpoint you probably want to know and make sure you're not causing problems for each other.
If your daily standups are actually just 15 minutes each day where only 1-2 managers are benefiting from a statud update from everyone, then sure that's micro-management and probably wasting a hell of a lot of time. Suggest changing it to a weekly call, or having everyone email a summary each week. It's important to report status on a regular basis just as you'd be pissed if your accountant didn't let you know once they'd filed your tax returns or if your doctor had your blood test results back a week ago.
Conflating a daily standup with a daily status report though would be frustrating and probably does need challenging, but it's not easy to compare across professions like that. Their workloads are completely different to ours, and so need a different approach.
Your conversation above just sounded arrogant for me.
And they're totally right. I don't tolerate to be treated like that and nobody treat me like that.
> "I mentioned how stand-ups ... might not be a bad idea"
That's what the other professions are taking issue with: the way software teams communicate.
Stand-ups are a terrible idea. Imposed superficial questions with rarely any nuance or relevance while eating at productive time. We need proper measured processes rather than the agile/scrum/random voodoo of the day.
My experience when I was a tax accountant, we have a weekly status checks for around 20 people which took 1 hour, different seniors and managers breathing down your neck everyday on the progress of their projects.
As a junior, I have to manage the expectations of these managers competing for my time to prioritize their client. Sure we don't have daily standups, but I will choose daily standups over this.
This just isn't true. Semiconductor process engineers and manufacturing technicians have stand-ups twice a day. I'm sure most if not all of those other professions have ~daily alignment meetings as well.
I highly disagree with this.
For some reason, many devs seem to think they are somehow better than everyone else, that they are the most important part of any team, that no on besides them can have any insight on timelines, or budget, on which features are or aren't important.
News flash - all of the above is none-sense. Developers are a profession that provides a specific skill, a highly valued one, but one that is a part of building things in most cases. There's nothing demeaning or wrong about devs having managers, whether or not they happen to also have been developers themselves. Some great software managers were never developers, and some great developers are horrible managers, just like in every other profession.
> It's nuts to me that a skilled profession - that not many can do - lets themselves get micro-managed like this.
Every skilled profession has people who are managed. Doctors, lawyers, they all have managers, and most of them interact with the public, who can override their expert opinions.
This is a lot different from than "no on besides them can have any insight on timelines, or budget, on which features are or aren't important.". I definitely value the input of other professionals when it comes to their field of expertise. All I want is the same in return.
But the way the conversation should go isn't the developer deciding when refactoring should happen. It's the developer giving an analysis of the cost and benefit of a refactoring (it will take X time, but will save Y work in the future). And the manager factoring that into all the other circumstances, and deciding whether it's worth the current cost.
This has been the ideal theory for decades and I really wish people finally stopped to think for two minutes, look around, read some history and finally understand that it's not working.
Is it really so hard to accept this reality? I am periodically mind-boggled by the amazingly resilient illusion that you can plan things as tidily. It never happened, not once, in my 20 years of career.
Estimating these costs upfront is more or less impossible. It's usually a can of worms that opens other brand new and exciting sub-tasks, the same kind that gives managers nightmares.
IMO you might have projected a little bit and arguing against some imaginary "us the programmers are better than everyone else". Meh. Only kiddos think and say things like that. By and large, almost all experienced programmers I've ever met are quite moderate and humble.
Problem is, they are too moderate and humble which leads to predatory businessmen micro-managing them to oblivion. I've personally witnessed high-profile programmers firmly saying "No!", putting their foot down and making a thing their way with more time budget. Their project and code was used, almost untouched, for 10+ years afterwards -- it was that good.
Many of us are expert artisans. You don't go to a professional blacksmith giving him wisdom how can he accelerate a certain process.
I recently made the mistake of deferring to the anxieties and fears of non-developers for so long that I almost forgot how we got to where we are today or what my true capabilities are.
You know exactly what those assholes are thinking when you say the word "refactor" or "iterate". It starts to become a psychological horror experience if you let it get out of control for too long.
Now don't get me wrong. At the end of the day I love and care for our customer too. I just don't let their minute-by-minute feature request stream live rent free in my head the same way the rest of the team does.
Ouch, dude, you didn't have to stab me in the heart. But yeah, 100% same. I am just now, at the age of almost 42, starting to finally crawl out of that. I am ashamed that it took me most of my life and career but oh well.
> I think the key point for me is that once you control for all common human flaws, the developer is still far better suited to make an executive decision regarding a technology concern than anyone else on the team.
True, but then you get blamed for "not understanding business realities". I got super tired of being hinted that I "don't get it" or whatever, especially having in mind that I launched products whose launch date I was not consulted about, repeatedly, and still get treated like dirt. I started pushing back on micro-management, fiercely and sometimes rudely.
You know what's the funniest part? It works. People start looking at you very differently and suddenly negotiations are an option. I guess it was possible all along and the business people are like "push him, he's a tech nerd, he'll fold".
We should start getting aware how are others viewing us and integrate this knowledge into our negotiation strategy.
I don't think either devlopers or managers can estimate future savings in most cases, but I still think it's necessary to refactor just to not drown in complexity and slow down overall development speed. My approach is to reserve about 20% for refactoring and technical improvements and let the team decide internally what to use it on.
Enough to get useful stuff done, small enough to keep most capacity for feature development. Also depends on the amount of technical tickets deemed relevant by the team
I think I just fundamentally disagree that this is the managers job. He tells me what needs doing, and I get that done as soon as possible within a given block of time (mostly sprints, so two weeks). They should be able to trust me to refactor as necessary within that block.
I think the more interesting scenario is large tech debts that take real time, like the change itself is weeks, or months. These need to be justified and planned and coordinated with managers.
In terms of refactoring there is no way to give a Cost Benefit analysis as that's too subjective. This should be a maintenance cost that's factored into the project at a high level. So you would say there a X days per year (normally about 20%) of the working days of the year spent on maintenance. Company I'm at has this and if you're doing this type of work then you have timecodes to book your time against.
That includes refactoring, re-architecture, tech debt, updating deps ...etc. PM's can't override this for their own project i.e. they have to allow for 20% off project activities in there Project Plan. Devs shouldn't spend more that 20% of their time doing these activities over the FY.
Example here would be in the UK we have something called a MOT which you have to legally get it's like a minimal maintenance you have to get on your car. Most people spend a little more though than the minimum.
Ideally, yes, though in practice this usually breaks in various ways, especially when problems occur. E.g. the President of a country probably doesn't need to be a firefighter, but if there's suddenly a massive fire, I assume he'd need to be briefed in far more detail to help call shots around the type of response.
> In terms of refactoring there is no way to give a Cost Benefit analysis as that's too subjective.
I mean, you probably won't get a very correct Cost Benefit analysis, but you have to do something. The rest of your post is you describing that something - if you elect to spend 20% of your time on maintenance, that's effectively giving it a certain amount of weight compared to other things you can be doing with your time. That's certainly one way to work.
Personally, I think a more flexible approach is better. E.g. new startup-ish projects should usually spend a lot less time refactoring, for multiple reasons, whereas more established long-term projects should spend much closer to 20%, or maybe more.
I feel like this is something a lot of presidents (or VP’s, or Directors, etc.) think, but really, instead of taking time away from the professionals doing the fighting to explain to them the minutiae of blowback, the best thing they can do is say “I trust you, put it out.” And then leave the pros to do their job.
In other cases, it is more important to get things right and continual refactoring is the fastest way to find an acceptable architecture to a novel problem.
In either approach, when speed is of essence, a limited scope helps avoid either producing insurmountable technical debt, or an unterminating research rabbit hole, respectively.
In the case I gave it's hours book on the maintenance project that is the test but you could very well have other measures and I've seen these in many projects. Things like linters, dependency bots, unit tests, e2e tests, code coverage, Cyclomatic complexity ...etc.
You work in a place where this happens. You could not.
Where does it not happen?
You could, if lucky, but such sane places are becoming more and more rare.
In the 90s (and probably earlier but I don't know) developers were viewed much more highly than now in all aspects except salary. There was a lot of autonomy and authority, the role was respected as a professional. With the rise of agile in the last ~15 years it has been transformed into a low-authority replaceable-cogs type of job, to be micromanaged by everyone else involved in the product. Salaries have gone through the roof though, so I guess that's the tradeoff.
Maybe there are engineering-oriented companies still with the 90s culture?
(If anyone knows of any such companies, please share, I'll head over to interview there.)
My only counter however, is that this often is the case, and the manager is right that the very overpaid engineer essentially sucks at self-management.
Or maybe management as a whole has simply realised that they need to gaslight engineers into thinking their required, or maybe a generation of engineers have been promoted into a role they're unsuitable for. All possibilities, all likely.
you follow guidelines and rules for the most part, if you performed surgery before a patient had scans same day, youd be reprimanded by peers. that seems analogous to "don't do major refactor on release day".
In the software industry there is a lingering stereotype of the eccentric genius who is really good with computers, and really bad at everything else in life, and their computer skills make up for lacking a lot of basic skills of a functioning adult, such as lack of judgement and perspective.
It's expected that software developers are odd and lopsided people who need someone else to babysit them and provide judgement and direction, and by now this has become the norm in the industry and is an established culture in the workplaces, so it also gets perpetuated and it's really hard to even be a well rounded software developer.
I've seen this too. It added tons of overhead before it was rightly cancelled.
> I’ve seen millions and millions of euros get wasted on things that don’t matter.
To be fair, I've also seen this from the business side. A great number of ill thought out unsuccessful projects, that are dispiriting to work on, as you know from the beginning that they will not be a success for concrete reasons, e.g. using an immature piece of software that doesn't support the features required.
Speaking as a lawyer, and as a programmer: your statement is utter falsehood.
In many countries lawyers are not 'managed' by other lawyers. In fact, most non-lawyers have no say in how lawyers practice, and are there to assist only in clerical/administrative matters. In some jurisdictions, non-lawyers are even barred from taking any cut in the outcome of matters (e.g. possible champerty/barratry), and definitely cannot override expert opinions.
We even have a derogatory word for those who 'manage' lawyers: touts.
In a similar manner, the non-professionals who think they can 'project manage' professionals often over-evaluate their own ability at management; I've seen them make plans that have no basis in engineering reality or technical compliance/requirements especially when it comes to development timelines. Your defensive posture of non-programmers is very indicative of the kind of mentality that true professionals must guard against. Professionals must do a job well, and not just be told to rush out buggy, unsafe products by non-programmers the majority of whom cannot even program to save their lives.
Still, what about cases like a legal counsel for a firm? Surely in those cases, the manager of the lawyer is the CEO, who might not be a lawyer himself?
As to your reference to the word 'legal counsel': a distinction must first be made.
The use of the word 'counsel' is often confused by non-lawyers. 'Counsel' is a specific term used to refer to lawyers appearing in court ('counsel of the courts', or 'court practitioners', or 'barristers').
Whereas 'legal counsel' is more specifically used in reference to in-house employees of companies, who handle regulatory compliance, general legal affairs of their companies, and so on. Such legal counsel may be legally trained/qualified, and may have had prior experience in legal practice. But they are not considered 'lawyers', in so far as they are not active/practising members of the bar at which they are practice, and in some instances are referred to as 'non-practising' lawyers. This is about the same distinction as e.g. a graduate of civil engineering, who has decided not to practice as an engineer and has gone on to some other field. Lawyering is however a very traditional profession, and the distinction between practising vs non-practising lawyers is very marked, and generally 'legal counsel' (as described above) are not treated as lawyers at all. It is not uncommon to find an in-house 'legal counsel' who has absolutely no idea what they're doing in practical/commercial reality, as they've never handled proper disputes or difficult contracts before except in non-contentious settings.
Thus in certain jurisdictions legal counsel are often prevented from performing any acts that must and can only properly be done by actual practising lawyers - e.g. 'legal counsel' cannot represent other companies/people/entities in courts (as they have no right of audience or locus to represent third parties), they cannot give legal advice as lawyers, etc. 'Legal counsel' as referred to in such context may be 'managed' by a CEO, but that's only because they are staff with legal knowledge, and not lawyers per se.
I tell them what i wanted achieved, and i pay. it gets done. If there's a delay, i expect the plumber to tell me promptly, and i re-evaluate the work.
Some programmers do get treated this way - consultants and such. But the majority is not - they are considered a cog in a machine.
But take plumbers working construction on a 30-story building. They're usually part of a team, and work together with dozens if not hundreds of other professionals. Do you think they don't have meetings where they get together with the other teams, discuss problems, progress etc?
I'm not defending stand-ups here, btw. Sometimes they make sense, sometimes they don't. But if your measure of "developers are treated badly" is "developers are asked to be in a 10-minute meeting to talk about their work progress", I think you're missing the forest for the trees in terms of what are and aren't good working conditions.
If you want to be treated as a payed consultant, become a payed consultant, with all the disadvantages and advantages which follow from that.
Does the law office receptionist get to tell a lawyer which pieces of evidence should be brought to trial, and which shouldn't? What are the parameters and limits around 'managing' attorneys? I worked in a couple law offices (office stuff and deliveries) and while there was some 'management', it was generally 'top down', and had to do with billable time and court deadlines. Coordination between lawyers to help each other or work on a specific case together happened, but even then the deadlines were generally based on external dates, and were generally not company-imposed ("gotta get all these items done by Q3 for the Q4 launch!")
If your workspace has shit smeared on the walls, you don't ask if you can clean it up. You just do it.
Other skilled professions do not either communicate with memes, have slides and swings in the office (as seen in some Google offices), etc. If part of the geek culture is being infantile, that's no wonder that devs got told what to do.
I don't know if the gamification of dev work went so far because of this, or if the causality goes the other way around.
People don't realise that others are forming real life opinions on these memes.
Maybe, but if any non-developer internalizes a worldview from those memes...that really just means they're blind to the usually worse offenses in other careers. While not perfect, measuring programmer productivity is infinitely easier than a long list of other job roles. At the top of that list is "middle manager".
We take hits on the chin about elitism, sexism, whatever other low-point of human nature. Meanwhile, whoever is spewing the critique fails to notice that in practically any other role, the *-isms are worse and harder to prove.
To some degree I believe management do this on purpose.
Maybe it's this environment has made me a more serious person than some of the other developers I know. Don't use memes in conversations with collegues and certainly have no interest in toys and games in the office.
Would love to not be responsible and not treat work as a fun place but don't see how that's possible if you care about your job and the work that you produce.
Theyre hired to advise, to negotiate contracts and ensure compliance with existing and upcoming laws.
It has a lot in common with programming on a systemic level, I think.
Most of the teams I worked with, found direct work with customer way worse than some internal alignment meetings.
That being said, most effective teams I worked with(as dev and as supervisor), were managed by ex or active senior developers, who really put an effort into businesses side of the work, so they had full perspective of both sides.
Problem is: * First and foremost - most developers are not interested in this type of work. * Not all are capable * Most of these who do that, internally still uses dailies, unless everyone in their team is on the same level (which is extremely rare due to point one).
I've gone off to found a company instead.
Only pretending to know the domain and micro-managing into the "other side" is real and not helpful, as you wrote. This applies to programmers as well, they often mouth about how they know what would be best for the company and in reality just don't know all the constraints and background on the business side. Let alone how much of a social game creating software for others really is.
100%. It is completely absurd to watch. This sort of subordinate attitude pulls us all down. I think the issue boils down to:
* new devs are not going to rock the boat
* lots of people see software dev as as way to be successful within existing corporate hierarchies
* a lot of devs have very little experience of what life looks like with engineers at the helm
There's also the thing of most people seem to need hierarchies to feel secure. I don't quite understand it but I'm probably just weird.
Personally, I will succeed in partially decoupling time for money in my labor. It's just a matter of when.
Social organisms usually have some sort of ordering hierarchy. While most of the 'alpha' and 'sigma-grindset' nonsense is just that -- nonsense -- people are hierarchical animals.
It also means you don't need to give a damn about stuff that's above or below your paygrade. You do your hours on X, and other teams can worry about Y.
> a lot of devs have very little experience of what life looks like with engineers at the helm
A lot of devs have very little experience in a lot of fields. The best programmers I've met started coding at 15, went to MIT, and have been in software their whole lives; they have no paradigm outside of what they've been exposed to during their college-intern-jr.dev phases. Most of em that I know haven't ever worked a job flipping burgers or washing cars, either.
Makes it hard to break out of that mentality, and also means that a lot of very smart coders do piss-poor jobs managing & leading. Inevitably the shitty engineer-managers fail, and the business types are dragged back in.
I've done this as a new dev. In the end a few new devs aren't going to change things against stubborn old talent and a large swat of new devs passively standing by, until the proof is there. But that's the exact problem: these systems are so large, you need people to be willing to risk extrapolating a PoC or be willing to invest until the proof is there right in front of their eyes. With how risk-averse most companies are, the odds of this happening are miniscule. Unless you wish to invest your own time, effort and risk (which I don't think should be the answer, despite how often it is given).
Now if you're the dev stuck in a bad corporate hierarchy, sure, it looks very different. But programmers as a group have used their leverage plenty, just maybe not in the ways that would always be helpful to other members of their group.
As for never being paid on time - I think the most late it's ever been has been 2 weeks. Pretty annoying but not the biggest deal in the world.
When it's you who's gettind paid a bit late... it's manageable. When those late payments affect people you have to pay... it's a whole different game. I've been on both sides of this and it's great when it works, and bad when it doesn't. Building up a large buffer helps, but can take some time to get to an effective place that gets you more than a couple weeks of runway.
A few years back I tried forming an LLC with a couple friends, but they both have full-time jobs and they keep getting promoted, so it's never gone anywhere, and we're talking about winding it down. I'd love to try again with someone who is already independent and is ready to try something bigger.
I haven't read Developer Hegemony, but another great book about the dynamics of such a partnership is Managing the Professional Service Firm by David Maister. It's pretty dense, but it's full of great ideas.
I went into freelancing in part to avoid becoming a manager, and I think with the right kind of partnership you could still practice your craft while still helping to lead a small team of people---or maybe even just mostly collaborating with other partners. The Maister book has helpful things to say here about whether your firm focuses on work that is repeatable & leveragable (e.g. making Wordpress sites) vs unique, challenging, and done mostly by partners (which sounds more fun to me).
I'm in Portland, Oregon, if anyone is interested in talking about something like that. :-)
I mean, that's really doing it wrong. (yes, I know people call everything "standup" even if it as here has nothing to do with the idea of what its supposed to be, but still...) This is not universal in software.
I don't think I'll survive a single sprint under a non-technical decision maker.
One analogy is; lawyering is like singing a never-ending song, whereas software is like a self-playing piano.
The lawyer is needed until the song is finished, which is partly up to himself.
A software consultant delivers a self-playing piano and must come back, cap in hand, asking for more work to improve it.
When software is working, it is assumed to be "finished" or "correct". Additional work is assumed to either fix bugs ("earlier mistakes"), or implement new features and improvements (which are optional and involves a sales process).
Programmers like the search for beauty and solving interesting problems. They like simplicity, understanding, and privacy.
Users and business people like features that just work and don't care about code quality, and are perfectly happy with spyware business models.
Managers would probably run things into the ground with tech debt if they had full control.... but there might be a fear programmers would turn every project into something like KiCad and Vim put together, written in Haskell,with core use case features handled by "A simple 10 line user script".
Firefox's market share is probably a good example of what happens when developers make decisions(Except web devs and the like who seem to have different personalities).
Developers are always going to feel like they are being puppeted by morons because most developers don't seem to like the actual work their doing and sometimes even wish the product they make didn't exist.
I never see programmers saying things like "I fucking love the IoT! Check out this awesome new API Google invented! Let's replace every kerosene lamp in the world with LEDs".
Instead I see them telling me I should use dd instead of Etcher because Etcher is 80MB.
As moronic as managers can be, at least they somewhat see the value in what they build.
My role is to ensure that the overall project and deliverable is on track. I will ask questions to clarify statements made in standup. I expect questions coming to me about requirements, intent, and timing. If there are problems with external teams, I will do my best to work out that blocker. I don’t dictate how the devs do their work as long as they are able to deliver the features that were agreed on. If that is not going to happen, we can have a discussion about why and what adjustment needs to be made.
If more refactoring needs to be done, we can have that conversation. Talk to me about the cost and benefits of the refactoring and the impact on deliverables. It may be worthwhile accepting a delay in deliverables now. It may also be that those particular deliverables are important enough that the refactoring may need to be deferred even if the ultimate cost is higher. Those kinds of trade-offs cannot be done only by one part of the team but need to be weighed by the whole team.
This kind of open and respectful discussion is part of a well functioning team. If you are not getting that then raise this as a problem in retrospectives because it needs to be addressed.
My understanding and how we are actually doing it: You say what you did and plan on doing, no comment are made, it's just an FYI for everyone else. And/Or you have the chance to present a problem you are having and you arrange a "let's talk later" with someone who can help you.
What you are describing sounds like a daily mini breakdown / refinement.
Devs might have leverage. But in terms of actually contributing to the success of their company, the data seems to suggest otherwise, as far as their importance is involved.
It used to be all about technical talent and product excellence. But dive deeper into reasons why tech companies fail today, and you will see all points to Marketing. Not really in sense of Advertising/Acquisition, but Marketing and Business Strategy as whole. Research, Positioning, Model, Pricing, etc..
Basically more than half startups fail because they are building wrong product for wrong market (Marketing). Less than 10% companies fail because of issues with the tech side. I am not saying devs are not important and that there aren't big differences in the quality and speed of their work, but wouldn't go as far as claiming some sort of god-like status when devs are not really where the future of the business is decided (unless it's some extremely unique technology involving product, most aren't). As Brian Balfour says, the game has changed, it's all about distribution now.
That being said, I wouldn't tell a dev how should their do their job. I can only lead them in terms of what we should be working on, what part of product or what feature, but how exactly to code it? Well that's of course up to them. We don't really micromanage in our company. We just all sync on priorities and then trust each other to execute as per everyone's best judgment. But yeah, we're a tiny company.
That in a sense could be an advice, go work for a startup. Corporate micromanagement is a choice. To be honest, in a larger organization, I would be probably micromanaged too, even as a non-dev, and I would fu*king hate it. Don't think devs are special in this. Not like managers understand Growth and Product work either.
Congratulations, you just invented software consulting agencies.
But jokes aside, what you want sounds a lot like developer anarchy (which in practical terms means replacing technical management with direct communication between all developers in a team) but there are two problems that are apparently easy to overlook with this approach:
1. Teams still exist in a company that is likely larger than just a single development team. You can use direct democracy to appoint representatives and delegate political power, but unless the entire company is a worker coop, there are limitations to the team's autonomy and there is ultimately a monopoly of violence at the top (i.e. the CEO can fire you, you can't fire the CEO) crushing down on you when a conflict can't be settled.
2. Companies still exist within capitalism and need to make a profit to be sustainable. The ugly truth about turning bosses into customers (i.e. going freelance or becoming an agency) is that customers are still your boss, there's just a chance you'll eventually have enough of them to be able to fire them and not kill your company. But to have any shot at getting there you'll need to rake in cash, not just to cover your expenses but also to build up a runway.
A standup is a communication meeting, where only those actually doing the work should be communicating. Other people should listen in and ask questions afterwards. There are plenty of other opportunities for project managers and others to have an impact. Impeding the team's communication, even if well meaning, is counterproductive.
But, like most things, those who have power will always find a way to subvert available mechanisms to enhance their power, even when it costs more, takes longer, and pisses people off.
So, so many devs are great at building interesting tech, refactoring to more interesting tech, and so on, but entirely missing the mark of optimizing actual, upstream value delivery.
I'm sure other industries have their means of demonstrating that this or that practitioner can both deliver and deliver quality. We don't have this at all in the software industry. Furthermore the overly common team processes and team structures in use don't even allow for demonstrating this.
I've definitely seen a number of consulting companies follow this pattern. This is one successful business pattern, no reason why more devs can't do this.
However, someone needs to be the sales person and moves away from programming. Does that happen in law offices as well? (I believe so, but that is mostly from reading, not first hand experience. See also https://www.merriam-webster.com/dictionary/rainmaker )
I agree with your last paragraph and your first but that second is a doozy.
I own a copy of Democracy at Work and know there are a number of software and IT cooperatives out there...
I don’t see what is preventing anyone from operating like that today. I do that and I know many others do that. Yes sometimes there is cat herding to be done, but boundaries are needed or else you become a doormat. Stand up for yourself, time is limited in our lives.
A Lead pretty much has to bow his head to even Junior PM's.
It's like you're there to solve problems, and your opinion is only needed in moments of crisis. Even then people only defer to you in a almost disdainful way.
I have always thought that a standup is just a way of being micro managed. If an engineer is blocked, why would they not just figure out how to get unblocked? Isnt that their job?
Instead, standups provide the team the ability to identify roadblocks the developer might not realize. Perhaps you're working on something and I've been down that path before, and know your solution won't work for reasons you're not aware of. I can tell you that now and save you several hours of banging your head against the wall.
Physicians at hospitals know your pain, as their product manager equivalent is hospital administration micro managing how they can practice medicine.
But what grinds my gears is when managers do not apply the same planning principles for their own tasks and deliverables.
So, they try to pidgeonhole devs into non-business directions and infantilize them with stuff like pingpong tables.
If these people weren't there half of the programmer population would be stuck in and endless refactoring loop.
Programmers are tools, tools need people to use them
Sounds like the thinking that calls employees "resources" and considers them fungible cogs.
I've worked in companies in which programmers were gods and decided pretty much everything, I felt like I was back in uni projects, and that's not a compliment. Tech and codebases are virtually irrelevant in most companies compared to project management end business decisions.
We're still attending stand-ups every day with non programmers telling us when we can and cannot refactor. It's nuts to me that a skilled profession - that not many can do - lets themselves get micro-managed like this.
If anyone has read Developer Hegemony, I'm fully on board with that general premise - we start operating like lawyers with partnerships, and turn bosses into customers. Though that does require us to think of ourselves as professionals not nerds who are too smart for business.