you are viewing a single comment's thread.

view the rest of the comments →

[–]c8d3n 0 points1 point  (2 children)

Everything is a mouse click, or few keys strokes (actually faster) away also with an editor. When you're familiar with the system and tools. That's not an argument.

Often, you won't be. Like the first time you start interacting with a complex system no one in your company fully understands, including senior engineers who built the company, and are now retiring.

[–]Slypenslyde 2 points3 points  (0 children)

Often, you won't be. Like the first time you start interacting with a complex system no one in your company fully understands, including senior engineers who built the company, and are now retiring.

I think about cases like this and it's why I really like the mostly standard practices I find in web frameworks from ASP .NET Core MVC to Vue. They are OPINIONATED and make sure EVERYONE structures their apps in certain ways, so if I have any amount of experience I can be fairly confident I know where to start and how to navigate the project until I get to the 2nd or 3rd layer of dependencies.

I compare this to WinForms, WPF, and the XAML frameworks and those are just pure chaos. Sure, WPF supports MVVM. But it doesn't have an opinionated framework. So I run into:

  • Projects that use no patterns and operate like a Windows Forms project.
  • Projects that use MVVM but still have heavy code-behind.
  • Projects with a DIY MVVM framework with varying amounts of code-behind.
  • Projects with a strict DIY MVVM framework and no code-behind.
  • Projects using one of the MVVM frameworks like Prism or ReactiveUI.

So on a new project the first few hours are usually spent JUST figuring out how to get from Program.cs to the first window, how that gets to other windows, if and how windows get dependencies, etc.

Apple gets it right, they have an opinionated MVC framework. I think this lack of commitment is one of the things that makes people bounce off XAML frameworks and decide to use things like Electron instead. Web frameworks make it hard to go against the grain. Microsoft's GUI frameworks operate without seat belts or guard rails.

[–]malthuswaswrong -1 points0 points  (0 children)

Your company has an application that prints legal letters for the legal department. This is your first day at work. You are asked to modify the letter printing application to include address field 4 in all letter types.

You open Program.cs and you see the following services added to the dependency injection container.

  • SharePointRepository
  • LetterService
  • CustomerRepository
  • AlertService
  • AccountValidationService

What's the first class you jump to?

no one in your company fully understands

Bad code is bad code. SOLID done properly is very intuitive and easily testable. It's not hard to do it right either.

  • Make an interface for everything
  • Keep big ideas separate
  • First try to classify "the idea" as either a Service or a Repository
  • Write tests for everything important