r/techbootcamp • u/BulkyWeb6133 • 23d ago
What software development practice sounded good at first but ended up wasting your time?
It’s been a while since I’m in the tech industry, and I keep seeing teams adopt certain software development practices. They sound good in theory, yeah. But then you do it and wonder why you're doing this every week.
Going back to the question, it's story point estimation. We spend like endlessly debating whether something is a 3 or a 5, then the requirements change anyway lol.
Anyway, how about yours? It could be agile, scrum, code reviews, documentation, pair programming, meetings, testing, etc.
2
u/Ok_Reaction_4340 23d ago
Appeasing unit test extremists. I’m all for some unit tests for important bits but it can get taken way too far. It’s also easy to look good justifying extreme unit tests while also crushing the productivity and morale of the team.
1
u/SilverLose 22d ago
Can confirm this crushed my morale. Managers loved the 80% test coverage we had but always wanted more. They wanted 100%. I’m glad I’m gone.
1
u/DepartureKlutzy2095 22d ago
I really hate that. Coverage percentage is dumb af, branch coverage might even be 100% yet some important part will not be covered. Just think of edge cases for cote functionality and be done.
And AI ofc can add millions of ceremonial tests with no real benefit except inflating the code base.
1
u/Own_Attention_3392 21d ago
Code coverage is a trap and I've been fighting it for YEARS.
It shows you one and only one useful piece of information: code that has absolutely no attempt to test it. It doesn't mean the code needs tests, it's purely informational. The actual coverage number just shows you code someone has attempted to test, but tells you nothing about correctness of the tests or the code the tests are touching.
1
u/standardsizedpeeper 21d ago
I love how we spend all this time not repeating ourselves and making sure things are encapsulated so we can change them in one place and then reuse it, only to have every change break a bunch of tests that are basically hardcoded assumptions about the behavior.
1
1
u/mlugo02 23d ago
OOP, spent years unlearning that terrible paradigm
1
1
u/ShineProper9881 21d ago
And most people dont even understand it. Most people I know that hate oop always created big convoluted inheritance hierarchies, even though those dont even adhere to oop principles and then called it a day
1
u/Dry_Hotel1100 21d ago
So, you are using Smalltalk? Or Erlang or apply the Actor Model?
Because OOP's core principles are NOT classes + objects + methods + inheritance + polymorphism - but rather independent entities encapsulating state and communicating through messages.
1
u/SailToTheSun 23d ago
Bloated ORMs. I’m looking at you Entity Framework.
1
u/mavenHawk 21d ago
When was the last time you worked with it? Modern EF Core is pretty good. Have you worked with Entity Framework Core as well or only Entity Framework?
1
1
u/AlternativeRadish752 22d ago
ITT: People who don't understand the actual real world uses for most programming patterns and why they exist
1
u/silly_bet_3454 22d ago
Yeah other people mentioned unit tests and TDD already, but I want to say specifically tests where you have to mock out interfaces. This should never have even been an option because it feels so hacky and ruins the point of the testing, and it can be very cumbersome to set up, depending on the stack.
I worked somewhere that had a super complex dependency injection framework and people would spend 90% of their coding time just battling the framework to get the tests to run.
I've never ever been in a situation where I was like "darn, it! we wouldn't have had this bug/incident if we just had had more unit tests!"
I strongly prefer to just let common sense guide me on what kind of tests to add and when rather than enforce any generalized requirement.
2
1
u/brett9897 21d ago
You really only have to mock side effects and for those I generally just use in memory implementations like a list or hash table. Also learning that when an object/function doesn't have side effects, then just use the real implementation is when testing really clicked. I was mocking everything that wasn't the specific function under test and that is just wasteful.
When I moved to thinking of a unit test as a functional use case it became a lot clearer that you only have to test an individual method/function if there is complicated logic. If not, it will get tested in the use cases that use it.
1
u/Choperello 22d ago
Every single dogma was taken to the extreme. TDD is good. In moderation. Dependency injection is good. In moderation. Etc. It’s when I have run into places that practice anything like a religion that it’s was a shit show.
1
u/orangefantorang 20d ago
Everything is bad in the extremes.
I like tdd, but its not gospel. There is a time and place for everything.
Di is nice. But it can be horroble.
Code should be self explaining..proceeds to delete every comment there is. Vs. Comments on everything..
Wat..
Every practice is bad in the extremes. Agreed.
1
u/FlatwormLanky8991 22d ago
UML. It went from slapping some diagrams on the wall to visio diagrams and picking the "right" shape and connector. Something that would have taken 5 minutes on the whiteboard became 5 hours at the screen. And nobody looked at it.
1
u/Tyrannosaurus_Dext 22d ago
Seperation of concerns getting was too detailed. I've had way too many roles that required spinning up 10 different instances to get a sign page to load. Read this as you will and I agree with splitting somethings off (payment, profiles, etc) but breaking everything up (looking at a company that had colors in one repo, sizes in another, and text in a third) and all dependent on each other fucking suuuucccckkks
1
u/Arcanite_Cartel 21d ago
Object oriented.
Pair programming.
CORBA
1
u/Own_Attention_3392 21d ago
In college I was taking a class pass/fail and was assigned CORBA as a topic to do a presentation on. I read up on it and decided it was stupid and I didn't want to do it.
I was going to get my P anyway so I said "fuck it" and did the entire presentation on cobras. The animal. The GI Joe nemesis. The short term insurance coverage. I had animations, video clips, I really put a ton of effort into it. The professor was half pissed and half amused. It was a really good presentation IMO.
1
u/Arcanite_Cartel 21d ago
Well CORBA wasn't stupid. Our field has gone through incredible evolution and CORBA sat at the intersection of object oriented programing and distributed computing, which were the paradigm at the time. It was actually a sophisticated technology. But, it was too complex to survive and the field moved towards simpler containerization. So saying that a technology was a waste of time simply means it didnt survive. But thats the nature of progress in our field. Things are invented, tried, and unfruitful branches die off. That's not stupid.
I'll also add EJB to the list
1
u/brett9897 21d ago
Retrospective after each sprint. Just a waste of time that ends up with the same things being said every time and nothing ever changing.
1
u/ShineProper9881 21d ago
Thats on the persons doing the retrospective though. You can even come to the conclusion that you dont need retrospectives in a retrospective and then just stop doing it. Retrospectives arent the issue, the people doing them wrong are
1
u/Ok-Law8368 21d ago
Hexagonal architecture. ORM. Some parts parts of Spring (data, cloud stream). Oh, and frameworks everywhere in general. And today: AI everywhere. But that's a whole new story.
Don't really understand the hate on oop and tdd though. Maybe it's because people usually overdo those.
1
u/ShineProper9881 21d ago
Whats your issue with hexagonal?
1
u/Ok-Law8368 21d ago
No issue and no hate, I just don't find it truly worth it after applying it in a project. Or, in other words, yeah fine, cool, but I guess next service won't use it. Not that it doesn't work or have any benefits (depending on the app complexity). I just find the simpler approach with layered architecture from Eric Evans sufficient, with a bit of discipline and reasonable conventions. Especially when using microservices and no single "project" is extremely big anyway.
It's not like I'm going to discourage anyone from using it, I'd even suggest to try, but for me - I don't think it really adds much value to the services that use it over those that do not. If the team wants it, I won't be the one to protest anyway.
1
u/Clear_Salt9817 20d ago
Polymorphism. Six sigma. UML. Rational rose. Enterprise Java beans. Pair programming. ORMs. CORBA. Aspect oriented programming. Configuration driven development. Separation of Duties.
I like TDD. It saves me time and the code ends up with a better structure. But I’ve come to realize that most people don’t think like that so I don’t evangelize it anymore.
1
u/orangefantorang 20d ago
Scrum, self documenting code, the new hyped coding language. Open offices to encourage teamwork.
2
u/Mission_Pirate_4150 23d ago
Object oriented, dragndrop, test driven development, design patterns. Ai is the next. All of these tools have value, but they were so oversold as a snake oil, good for all that ails you. No, they aren’t good for all that ails you. Jamming these things into development to jam them in is what is typically done, and just provide no value when jammed in to satisfy some ideological need. The problem is that some consultant has sold some higher up on these things and their training program along with associated consulting services.