I was recently given this link:
As I read through and immediately thought someone was smoking crack. I know I could use my normal vitrioloc syntax but…
Here’s a quick run though of the critically flawed ideas.
Forcing in the notion of “co-location” in the middle of a global pandemic is laughable if not callous and reckless. I have been on teams spread far and wide from India to Costa Rica to Israel. Business is global. The pandemic is real. Work gets done regardless of where people sit. Communication is key. Not co-location. Co-location is dead.
Continuous delivery is not always possible or a good idea. Have you ever made a physical part, say a cabinet or a table? I recently made an 8′ tall cabinet for a friend. It was built to fit a specific space in her garage. How am I supposed to provide continuous delivery for that? Give her one shelf at a time? No. Continuous delivery does not fit all production contexts.
I will not welcome a change that requires me to throw out the cabinet carcass that I have already built because my friend suddenly wants it 8′ wide instead of 8′ tall as originally requested. That kind of change requires scrapping everything I have and starting over. We need to tell clients, “No.” If you want a completely new cabinet, then we start from the beginning and scrap everything I have built up to this point. There is no other way to deliver physical assets.
Blind trust of your teammates is terribly naïve. I offer an open hand, but I learn very quickly when people on my teams are not working in the best interest of the project goals. I am working with someone right now that is only out to pad his wallet. He created a huge pile of shit code, then left the client to become an outside consultant for that same client. Why would he do that if he believed in his work and the company that he used to work for? He continues to under-estimate work efforts, cause chaos in the development teams, and muddies any topic that might lead to diminishing his role (and $$$). I saw the same behaviors at Intel. I saw it in other projects. There are always people who are not working in the best interests of the client. To think otherwise is… not good.
I suppose I could go on, but I think I have made my point. In my world, real developers ship. This kind of hand waving over an idea that has been shown to have significate weaknesses is only self-serving bullshit that only convinces clients to spend money on illusions.
More fuel to the fire:
I found this article during my morning reading:
I skimmed it so I can’t argue too much either way but it is a real question to consider… What does it take? If you don’t need passion or talent, what do you have?
I understand that having passion and talent makes a difference but is it truly required? It used to be the only people that pursued a career in software development were the maniacal fringe. I suppose I count in that group because of the depths of my experience and passion for solving problems with software but… I don’t have a BS in CS. My undergrad degree is in Anthropology. Go figure. I do have a “related field” in CS and I have been writing code for a while now… since I was a kid.
Computer Science isn’t Application Development.
Do competent motorcycle riders need to understand how combustion chamber vortices impacts burn rate? Do car drivers need to understand the physics of an ABS system to successfully actuate a brake pedal? Do users of LED lights need to understand superconductors or flip a switch? So why should a web UI/UX developer need to know the gory details of how processor manages it’s internal command queue? They don’t. So why do we make a CS degree a requirement to join the ranks of “professional” developers?
Now take that idea one step farther… Why do we require passion and talent when in some situations all we really need is a cog in the machine?
Personally, I think passion and talent are key but… Like I said, I started back when only maniacs practices this dark art.
Maybe it is time to bring it all into the light.
Having a population that is able to write code should be a democratizing of technology. Everyone should understand the basics of it, if only to bring software development into the light. Maybe if people understood how much time and effort it takes to create quality applications they would…
- be more willing to pay for quality app.
- stop expecting instant solutions to complex problems.
- not fear the darkness that is software development and computers in general.
From a general education perspective, just knowing how to logically solve problems is a skill everyone should have. How can you reach any middle to long term goal without the ability to deconstruct the larger goal and do step-wise activities to reach your goal?
Maybe this is all a bridge too far. As I was trying to wrap up this post, I started looking for a cover pic and settled on “The Beib.” But… doesn’t the existence of such people actually reinforce the notion that passion and talent isn’t truly required. There are many factors that create success in a given vocation. Sometimes, talent isn’t required. Sometimes, passion isn’t required. Sometimes, a passing knowledge is more than enough in any given field.
One of the few areas where I agree with Jobs. The bozos need to go. From my experience, these people tend to be project managers, business analysts, and super-users. In other words, people who think they know how to do my job, but really don’t have a clue who to write software in an enterprise environment. I don’t know how many times I have heard “Ya know… I used to code too.” Queue the eye roll. “Really, if you were any good at it you’d still be doing it which is why you’re not programming any longer. Right?” I am PC enough to not say that out loud (yet), but I have started heckling the people that use that line on me in more subtle ways. “Ya know… That headshot makes you look like a salesman. Exactly what are you trying to sell?”
Something else I read recently in a Neal Stevenson book, Reamde:
A’s hire A’s. B’s hire C’s
Which kind of explains why we have such a hard time finding the right contractors. I wants As. I don’t want people to stroke my ego. I want people that can write kick-ass code while conforming just enough to allow their code to be supported in the long-term.
It’s even better when they can teach me something.
I’m allowed to dream. Right?
I’ve talked about interviews and team building a bit before in my “team” post. I suppose you could view this as the other side of the coin for team building. The dark, dirty underside… It ain’t pretty and I can admit that I am part of the problem but… By perceiving my role in the status quo, I have an opportunity to change.
You might think I’m kidding but one the program owners that I work with has a strict “Do not talk to Ivan” policy for her team.
Simply put: Interruptions kill progress.
Programmers have to mentally load extremely complex mental models to do our jobs. There are a million and one little things that I’m trying to keep “in mind” when I write code. Stuff I write ends up in dozens of apps. Those apps help drive a multi-billion dollar business. (58 billion, at the last reporting.) So do you really want me to answer your question about highlight colors in a editable cell or would you like for me to keep my mind on writing the validation logic? Continue reading Marshmallow Test
This week has been a killer in some ways.
I went into the office on Monday. I walked into a project in crisis. The features were there but the performance wasn’t. The BAs screwed up by not pushing the users to do a full mock-cycle. When the forecasting cycle rolled around last week, some of our users opened the app then closed it without doing any work in the tool. Users complained that the pivot grids were too slow to update after an edit. Performance in production was crap.
“Umm… Why did we hear about this issue over a month ago at UAT or during last-months mock-cycle?” Heads are starting to roll on that side of the fence.
Where am I going with this? Continue reading Slow down!