3 ms·
Learning software design principles is like learning how to draw - you need to study many, many examples before getting a good feel for it. For example, in draw
by simplify 12y ago
Learning software design principles is like learning how to draw - you need to study many, many examples before getting a good feel for it. For example, in drawing there are many individual principles, such as shading, perspective, scale, and so on. Studying each individual principle is only useful within the context of a full drawing.
Software is the same way. Studying SOLID principles, application boundaries, encapsulation, etc. only makes sense within the context of a working application. Not only that, but making sense of design decisions is not as easy as "seeing the result" like you can in a drawing. With software design, you have to take a step further and continuously ask questions:
"Why?"
"Why not this?"
"When would I use this?"
"When would I *not* use this?"
I'm an instructor at a coding school[1], and one of our biggest goals is to inculcate software design principles into our students. Frameworks are useful, but if you never learn proper software design, you'll always be stuck as a framework developer (e.g. Rails/Angular developer), and never become a software developer (i.e. frameworks and languages are just details).
[1] http://www.makersquare.com/ http://www.makersquare.com/
- mattgreenrocks 12y agoThe difference between framework and software developer is often glossed over by people, especially on HN. In the position of the former, you're pushed around by your tools. In the latter, you learn how to push back and impose structure that speed development, clarify thinking, and reduce bug counts dramatically.
- collyw 12y agoYou are implying that rolling your own will give you faster, less buggy code, more organised code than using a framework?