> but I started to realize that pushing 50 and being as cynical as I now am, I'm pretty much unemployable as an IC.
Well that's me. My theory is that it is not age that makes one unemployable in the software industry, but the unwillingness to put up with shit cooked up by bunch of 25 year old CEOs, CTOs, and the like.
I'm the same age, and I'm pretty sure the industry has substantially changed, not just me.
EDIT: and by changed, I don't mean improved. I was a huge advocate of agile and eXtreme Programming early in my career, and I even worked in shops where it seemed to be really having good results. Now I see everyone using SCRUM and... it's garbage and I want to gouge my eyes out in the meetings.
I see a lot of talking but not a lot of code getting written. And where the code gets written, it's always a pile of ego-boosting needless complexity.
I think the issue with Scrum and agile is that it's become mainstream.
Anything that becomes mainstream is likely to get twisted and turned into whatever the "powers that be" want it to be.
So, while using XP or Scrum or Kanban for that matter properly in a sane environment is going to be great, if you work in an un-sane (sic) one, then the powers that be have turned whatever system you're using into theirs. This is how things like SAFe are born, that try to make "agile safe for the corporation" and of course they're nothing more than corporate BS under an agile name and that gives agile a bad name.
Just like Jira is getting a bad name because it's so configurable that corporations are able to use it to do what they do. You can also use it as nothing than an electronic place to house your "post-it notes on a wall". All up to you, your cow-orkers and company. Nobody can blame Atlassian / Jira for taking the money of these corporations. I know I would if I had had the idea of releasing a ticketing system that doesn't even know that you should use surrogate keys for all your entities instead of making an issue key that can change if you move issues between projects your "primary key" that is referenced everywhere and shit breaks :shrug:
I miss buganizer at Google. It didn't try to hoist a process. It was... "here's a ticket. go do it. or not. whatever" low clutter. right to signal to noise ratio. The bug tracker in Google's ill faited github competitor was similar. Really decent.
The problem with JIRA is it becomes a little fantasy code writing exercise for people who've stopped coding (managers). You get to pretend you're dispatching program for your robots^H^H^H^Hteam to execute. And write out a little maze for your rats to run through.
Also was just talking to a friend about this. The original agile folks, the XP people... were explicitly against using software to track tasks. It was yellow sticky notes on a whiteboard. ON PURPOSE.
Mentally making the move from writing code to management needs to be a shift in mentality from "I'm making software systems that solve problems" to "I'm building teams that solve problems".
Team building is people skills, and it's about finding well springs of motivation, soft skills, getting people talking to each other, making sure people aren't forgetting things.
Unfortunately people coming from an engineering/programming mindset can go the other way: management is about making lists, and getting people's names on those lists. Management is about making processes, and making people conform to those processes.
I'm not saying those aren't useful tools, but they need to be seen as that. Tools. Means to an end, not ends in themselves.
Most software developers want to do good work. They want to write code to make things happen, because that's what they were trained to do. Original agile was about trying to liberate that instinct from the crushing weight of corporate processes so that teams of developers could self-organize to do the things they generally naturally want to do.
I don't recognize that in SCRUM based teams today.
And as for your point, I do think that remote work makes things harder, and I've yet to see a remote team that fires on all cylinders. But for years I worked on hobby projects with people who I never met face to face and it was fine. So I dunno.
> I do think that remote work makes things harder, and I've yet to see a remote team that fires on all cylinders
The way I see it is businesses can have it one of two ways:
They can acknowledge that remote work is fine and allow their teams to work from wherever and figure out timezone differences and async collaboration workflows
Or
They can decide that remote work doesn't work. Then they must stop hiring expensive remote consulting firms and cheap offshore remote teams. They also must stop spreading teams out across multiple regional offices across North America
It is absurd to make people commute to an office building only to have people dialing in to meetings from other office buildings in other countries anyways, and then say remote work doesn't work
A lightweight process works well when you have engineers that are all of the following:
- experienced
- competent
- understand their problem domain
- actually care
In other words, a team of strong engineers (and a great, accessible product owner).
What I’ve found is that lightweight agile fails without a lot of oversight and frequent checkins, for anything else.
So SCRUM is SE training wheels because it forces a cadence, gets engineers to start breaking down work, and estimate; but the cost is that it holds-back great engineers with all of the (stifling) ceremonies.
I’ve gently nudged my risk adverse tech-lead to consider moving to Kanban now that his team is pretty strong now.
> This is how things like SAFe are born, that try to make "agile safe for the corporation" and of course they're nothing more than corporate BS under an agile name
SAFe was truly one of the worst things I encountered with consulting clients. Planning days were an unbelievable exercise in futility. Waterfall masquerading as agile, the absolute worst of both worlds.
> SAFe was truly one of the worst things I encountered with consulting clients.
we've been using SAFe for a few years, I despise every minute of the planning process. Feel like a mix between using a crystal ball and forcing square pegs in round holes... Of course the additional disfunctionality at my company between sales, PO/PM/BO and engineering doesn't help, though it seems that I've avoided the worst SAFe train of the company.
My last job was SAFe. When I started I was given Staff level title and had dreams of maybe moving into lead or management at some level. Once I saw the process I became completely unmotivated to go in that direction.
For them I understood some of the motivation. Hardware & equipment manufacturer, which involves scheduling complicated industrial processes for months/years out. So you need some semi-coherent vision of where things will be, so having a multiquarter waterfall-esque plan was going to be needed.
I agree that some of the outputs of the SAFe process aren't useless, like expressing dependencies between teams and discussing objectives, but the process is way too costly for what it achieves. Maybe if the name was changed to something like SCRUM and Waterfall evil child...
The issue with scrum and agile is that it became a managerial and reporting process to force teams to hit a management imposed deadline instead of what it was intended to be: a tool for engineers to self-manage and self-evaluate their progress to provide a realistic completion date.
At the risk of taking this thread further OT, I am a product manager / consulting CPO but a whole heartedly agree with you. I like the way you phrase it. A tool to evaluate progress and provide realistic completion dates. That is how I always push companies to use agile pointing and estimating. Use it to identify unrealistic roadmap expectations as early as possible, force hard conversations on priorities and staff allocation... before committing on plans to customers or stakeholders. Or when taking a risk on a delivery date, be doing that knowingly from the beginning, with contingency plans and management owning that risk and consequences otherwise.
1. Get the change to work
2. Refine the change to make it cleaner, less complex.
Most devs stop at #1. Trying to eke out every hour of developer productivity via Scrum is antithetical to #2 though.
One other anecdote, me and a buddy were responsible for cleaning up a fairly sophisticated DSS scheduling system. The original dev left and a poseur came in and wrecked the codebase for over a year. Hospitals were cancelling contracts left and right and our cash flow was ... uh, short a lot. Our rule was if we ran across some bad code while working on our tickets: a bug, janky code, disorganized code, shit variable names, whatever, we fix it on the spot. We were able to do this because we had 3 month cycles and nobody breathing down our necks asking, "what did you do yesterday?" "why aren't all your tickets done this sprint?" Well it worked and we ended up with a clean scheduling system that was really nice after a few years and the company exited with a decent sale. I couldn't imagine a culture like this today.
At my last gig someone that my team unanimously rejected as unqualified showed up one day the following year as our new technical lead and boss. It went about how you'd expect.
Much later I told my skip boss about the kind of feeling of disregard that may have fostered as he pushed me for insights. And he remarked that it sounded like I had a chip on my shoulder. All I could come up with was 'guess I was born with it.'
Yeah cynical. And much happier working on my own things that are meaningful and interesting.
But this industry is also, in my eyes and experience, madness at times.
"experience" seems to mean between nothing and everything depending on the previous company, the whims of the "hiring market", who/whatever reviews your resume and other nebulous forces subject to change at any time.
I've worked with people with loads of "experience" that are not particularly good that have managed to string together a career well-enough, and I know folks too with fancy resumes and experience that matches roles identically that can't get interviews for identical positions with referrals.
At any given time, what any party responsible for hiring "values" seems to change on a whim.
It's infuriating.
I don't have a "premium" resume, but when I can exceed all the expectations for a several job listings and I have a few years experience at a "fancy" company, you'd think I could at least get some calls back somewhere, right?
This makes the prospect of investing in any software skills for the purposes of employment a total contradiction.
(and yes, I understand the market is an has been very "bad" for a few years, but this kind of thing has existed since I've been doing this for the better part of a decade)
> the unwillingness to put up with shit cooked up by bunch of 25 year old CEOs, CTOs, and the like
You haven't seen the shit written by 50++ senior and principal 'developers'. Imagine local variables names 20-40 chars long. Then they are passed into function call, like 15-20 of them. While actually these are just 3 structures. I.e. 'gurus' unroll them into individual elements and pass. Long names to make the code what they call 'self-documented'. No comments at all. And all this is in a big project with other devs working on it for years. It's absurdly slow for the project of this size and resources. But with almost no competitors this can last for decades and it actually does.
Well that's me. My theory is that it is not age that makes one unemployable in the software industry, but the unwillingness to put up with shit cooked up by bunch of 25 year old CEOs, CTOs, and the like.