At the start of a project, fully focusing on your features makes sense. But as a project grows, non-functional concerns can sabotage the business model if not addressed.
- Reliability
- Security
- Cost optimization
- Performance Efficiency
- Operational Excellence
The first four have a direct impact on the customer. Buggy or insecure software, or excess costs, will all affect the customer directly.
The fifth point is about devops, and making sure that we can continuously (as a process) meet the customer's needs in all of these areas.
I've found that if I can fit refactoring into one of these pillars, it is much easier to explain to non-technical people. Of course, some people just can't be helped, and aren't open to alternate ways to think about software projects.
I'm curious what texts people would suggest for a non-developer to get some insight.
The ones that come to my mind are the Mythical Man Month, Peopleware, Facts and Fallacies of Software Engineering by Glass, or maybe even the 1968 NATO report on software engineering.
He doesn't like that question, but it does get the point across
It's important the slide deck be polished for all the people who want to come learn about the project, so it makes sense to spend at least a month preparing it.
And the neat thing is that all this work will get you lots of suggestions from executives about how you could address all the velocity issues that your project seems to have all the time! So you'd better budget 2-4 weeks after the presentation to follow up, have stakeholder meetings, and make sure everyone really feels heard.
With just these few simple techniques, you too can get your engineers moving at the blinding speed of an average FAANG engineering team.
[0]: https://www.routledge.com/Perform-or-Else-From-Discipline-to...
Holy shit, THAT'S why Eric Raymonds website is catb.org. How did I never realize it was the abbreviation of the book title?
Did they though?
i dont know how much money this company was making, and why it couldnt invest in both backend and client facing communications
but, on the other hand, being client focused and continuously delivering client facing feature, might be the thing that keeps the revenu streams coming
in other words, i used to always take the dev side in stories like this, but overtime i learn to be more sympathetic to the clients, i have been in situations where the devs overestimated the value of cleaner architecture, its a financial service, not a software company, i think the real solution would have been to completely outsource the software development
But I don't think GP was ignoring clients. If anything, he was doing what those clients wanted by moving to containers and a cloud architecture. And I say that as someone that doesn't like those things.
I firmly reject this. If you can't build quality then you don't deserve to be in business
I'm so sick of the fact that everyone is ok accepting "just barely passable"
It has lead to everything new being built is crap. New housing is crap, new furniture is crap, new software is crap
I get that building nice things is expensive and takes time, but I want to live in a world of nice things instead of this constant race to the bottom, produce endless quantities of crap world that we are in right now
Doesn't anyone else feel like we're being crushed under all this crap we're building?
One of the major problems is that many of our core software assumptions were based on design decisions made decades ago, when the industry was young and figuring out a million details.
I've mostly done web dev, but recently was trying out IMGUI and was amazed by the tiny memory footprint and with how quickly it started. But even that system has limitations, requiring that you learn a bunch of details for targeting different platforms. Isn't it amazing that native cross platform development is still so difficult in 2024? The platform owners could so a lot to ease this burden, but everyone wants their own little fiefdom.
The thing is that most people use one platform. So the owners try to present one consistent view on how to use that platform. Trying to provide a common paradigm across platform is the goal of companies that love their brands too much. But as a user, I just want for everything to function similarly so I don't have to read a manual for each app. I've done Android dev and dabbled in iOS, but now I'd only recommend React Native if what you want can be a web app, but you want the extra UI performance and some native features. If you want something more complex or consistent, go native.
Isn't everyone ok with that by the definition of "passable"?
My point - inasmuch as there was a serious one - wasn't that we shouldn't raise our standards but that the framing isn't particularly helpful in determining whether we should (while rhetorically sounding like it is).
Personally I believe that my approach achieves higher velocity over time because the guys who just do quick bandaid fixes get bogged down over time with technical debt. But not everybody agrees.
I definitely think you need to know where you are on that spectrum and find an org that fits your style. Otherwise you are in for constant pain and unhappiness.
I would argue that a well rounded developer will have the capacity to write kludges when necessary, and long term solutions when necessary. Now, if your boss repeatedly asks you to write the code one way and you are always disagreeing with them, then that would be a good reason to find another job. But if you trust your boss, you'll write the code however they ask, even if it's not your natural preference.
The software world is coming under more and more of it because our magic incantations affect the real world and peoples lives.
>New housing is crap, new furniture is crap, new software is crap
Old housing was crap, old furniture was crap, and old software was crap, you are letting survivorship bias bite you too much and you're losing focus of the forest for the trees.
I have no experience in the financial industry, but I work in a field which is also highly regulated (medical devices). Failure to pass audits or be otherwise compliant to regulation can very much make the difference between having or not having any business at all.
Paying of decades worth of debt in a few month where clients see no shiny new features was likely more and better service than that founder-CEO type deserved.
Did it change anything? Did the founder manage to keep things going?
It compares two software development styles. It compares typical software dev in a company to building a cathedral: directions come from on high, and you execute your task.
Then it compares typical Open Source development, such as with the Linux kernel, and compares it to a bazaar: everyone is doing their own thing, but somehow, things get done.
It's old, and maybe a little outdated now that the corporate world has taken over Open Source, but I would still suggest reading it.
For example:
> Every good work of software starts by scratching a developer's personal itch.
I've written good software professionally, but none of it was kickstarted by my own personal itch.
But sadly, it seems the inertia keeps some pretty ignorant organizations functioning for decades.
On the other hand, "the market can remain irrational longer than you can remain solvent."
Seems like everyone would be happier.
Do you think carpenters talk to their customers about types of nails and dimensional lumber? Or they talk curves, size, and color?
The equivalent of the boss in this story would demand to leave the structural issues unaddressed to keep the marble counter tops in the budget, and then the house would cave in a year later.
Still, one of most important teaching moment to this day.
I'd quite like to read those markings. Do you have them?
It is unbearable to work for someone who doesn't appreciate your work let alone belittles truly hard-earned achievements, for example that statement when he demanded you get 4000% rather than 2000% that you achieved would have made me quit on the spot.
Further from the sounds of it this sounds like a random finance company and with your skills you could have easily walked into any tech/finance company so I am curious why you remained at this company and didn't quit sooner?
The reason I stayed was that the hiring market is not always that great, and it tends to be much harder to find a new job than HN would have you believe. This idea that most of us can simply "walk into any" company and get a job is fiction in all but the hottest job markets.
They should just stick with consultants and contactors.
I had something to accomplish before I left. I made a mark in the niche we were operating in. Beyond that I’m reluctant to be more specific.
And things... "just work," Until they don't. And they did because of the front loaded work we did correctly to keep things working.
New clients were requiring audits and attestations we wouldn’t have been able to pass.
I was able to hire a few seasoned engineers to begin working on the next pass over the monolithic core design. We needed to prepare for a container and cloud based future, given where our clients were going.
The founder just complained and complained. He couldn’t accept that we were working on things the client couldn’t see. I spent a lot of time negotiating for a percentage of total velocity for core design changes.. the rest of our time and effort would be focused on things the customers were demanding and which the founder thought we should focus on.
We had increased velocity about 2000% already. He wanted 4000%. We needed sprints for back end redeployments. Founder was visibly angry when he overheard us taking about refactoring back end things like deployment scripts and data architecture.
Senior engineer gave him a copy of The Cathedral and the Bazaar, just to share something that could lead to some kind of common vocabulary. Founder spent weekend marking up his copy and on Monday firmly announced that he rejected the text in whole.
Senior engineer quit on the spot and walked out.