Interfaces – The Most Important Software Engineering Concept
blog.robertelder.org
Interfaces – The Most Important Software Engineering Concept
1–10 of 43 posts
Re: Interfaces – The Most Important Software Engineering Concept
#2Re: Interfaces – The Most Important Software Engineering Concept
#3I'm not sure what you'd like to see discussed from the article. To me, it read like an overview of something I already knew.
It's one of those things where if you know it, you don't need to hear about it. If you don't know it, hearing about it won't make sense anyway.
I can see this being part of a course for beginners but frankly - people will figure out what interfaces are for and what leads to problems by writing enough code and/or seeing how good libraries/frameworks tackle the problems they had difficulty with and learn from that.
My 2 cents.
Re: Interfaces – The Most Important Software Engineering Concept
#4While I agree that dynamically typed languages -- by their loosely defined API requirements -- are more difficult to scale, it's not difficult to add type checking and/or provide a well structured public API where necessary.
I think statically typed languages go too far in the other direction. Tyr type and API definitions are too strict leading in a ton of unnecessary effort (ie boilerplate), increased surface area for potential bugs, and overly restrictive limits that require 'creative' workarounds to effectively write code.
I think there's a 'happy medium' to be found where type checks are required for certain inputs and a clearly defined API can be established without the need for private/internal/public syntax artifacts.
I've been playing with this a bit in JS lately. Using model definitions to specify the structure and enforce validation. As well as defining facades with the ES6 module import/export syntax to define public APIs. Finer grained control (ie private vs internal) can be defined using closures that provide internal interactions while hiding the private implementation details.
Re: Interfaces – The Most Important Software Engineering Concept
#5Hi Robert, I'm not sure what you'd like to see discussed from the article. To me, it read like an overview of something I already knew. It's one of those things where if you know it, you don't need to hear about it. If you don't know it, hearing about it won't make sense anyway. I can see this being part of a course for beginners but frankly - people will figure out what interfaces are for and what leads to problems…
Re: Interfaces – The Most Important Software Engineering Concept
#6Hi, I'm the author. I submitted this yesterday, but I didn't even get 1 upvote, so I'm glad to see it here today as I think it is a very important topic for discussion. Feedback from the submission on Reddit has suggested that this article is too long which I now acknowledge. I'd be happy to hear any critiques you have.
I'll chew on your statements about the success of Python. Though my first love was LISP, I'm now far more comfortable leaning on static typing and composition.
---
The best book on software design I've ever read was written by two economists.
Design Rules: The Power of Modularity
http://www.amazon.com/Design-Rules-Vol-Power-Modularity/dp/0...
This book didn't change how I program so much as changed how I think. Like the difference between making and criticizing art. Whereas SICP gave me new mental models, Design Rules gave me new philosophies. More like Design of Everyday Things did.
Re: Interfaces – The Most Important Software Engineering Concept
#7Hi, I'm the author. I submitted this yesterday, but I didn't even get 1 upvote, so I'm glad to see it here today as I think it is a very important topic for discussion. Feedback from the submission on Reddit has suggested that this article is too long which I now acknowledge. I'd be happy to hear any critiques you have.
Dependency injection probably competes for the top spot (though interfaces work really well there too)
Anyways, looking forward to reading it
Re: Interfaces – The Most Important Software Engineering Concept
#8Re: Interfaces – The Most Important Software Engineering Concept
#9Hi, I'm the author. I submitted this yesterday, but I didn't even get 1 upvote, so I'm glad to see it here today as I think it is a very important topic for discussion. Feedback from the submission on Reddit has suggested that this article is too long which I now acknowledge. I'd be happy to hear any critiques you have.
Reminded me of this https://www.youtube.com/watch?v=5tg1ONG18H8