4 ms·
The single most important undervalued skill for any programmer, is Domain Modeling. It's an absolute shame it isn't a requirement to get a CS degree. Few thing
by BoiledCabbage 7y ago
The single most important undervalued skill for any programmer, is Domain Modeling. It's an absolute shame it isn't a requirement to get a CS degree.
Few things have more of a 3x effect on your code, than poorly chosen data modeling, or incorrect domain relationships. Your domain modeling determines in a large part, the amount of incidental complexity in your codebase.
When done incorrectly, it's what causes the painful - "Yeah we can't account for that feature without a lot of work. It's not how the system is designed." Which means either a re-write of large portions of the core domain, and all the fall out / impact of every dependency on it; or, the need to wrap code in hacky patch that works for this feature, but falls apart for the coming related feature because it wasn't designed the right way.
- BubRoss 7y agoIt's a shame that people get taught the opposite of that approach. Typical academic OO ends up completely obscurring the data you have and how you transform it in to what you want. Many times when you ask a student to think in those terms they don't even understand the concept of putting all your data in a data structure that is meant to access it instead of being muddied together with little bits of execution that may or may not accomplish something.
- erikerikson 7y agoIn an environment where you are also modeling the problem but must do so incompletely as you discover its depths, the iteration of a solution model will always need to be adjusted over time and refined into a better representation of reality. I think if you mean to declare that errors in domain modeling are failures in skill then you aren't accounting for the limitations of humanity in our efforts. I believe we have accepted that refactoring is healthy and to be expected.
- astockwell 7y agoAny resources you would recommend?
- monkeycantype 7y agoDomain-driven design by Eric Evans gave me a vocabulary set to organise my previously unstructured thoughts about domain modelling into a cohesive domain model of domain modelling.
- AzzieElbab 7y agoI can't recommend this enough https://www.manning.com/books/functional-and-reactive-domain-modeling https://www.manning.com/books/functional-and-reactive-domain...
- polishdude20 7y agoAs a self teaching developer, are there resources where I can learn more about this?
- 101008 7y agoI had almost a full course on Domain Modeling to get my degree in CS in the University of Buenos Aires. I hate it, of course, cause I had to work a lot. The idea was that for every model you designed, the teacher introduced a new feature that required to rethink everything again.
- DenisM 7y agoWas the pain worth it in the end?
- true_religion 7y agoUVA had a class like this on software engineering. Not only did the professor randomly add features as the semester went by, they also would randomly reassign group members so you couldn’t become reliant on a single person and were forced to keep documentation. I thought it was hell at the time, but it’s a lot more low key than a real disfunctional workplace.
- kragen 7y agoThat sounds interesting! In the Departamento de Computación? Is the course still offered?
- ThrowMeAwayOkay 7y agoWow so that course closely followed what happens in real life software development!
- bassman9000 7y agoIt's an absolute shame it isn't a requirement to get a CS degree. It was, at least in my Eng school. And the course was called... "Software Engineering" (I & II).