Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Design principles for complete noobs? [closed]

I've been programming for around a year now, and all the stuff that I've written works - it's just extremely poorly written from my point of view. I'd like to know if there are any (free) good books on Software Design out there that can offer a little guidance to the beginning programmer? I don't think I'd have as many problems if I knew a little about the thought processes that go into software design.

like image 838
Enrico Tuvera Jr Avatar asked Dec 08 '09 18:12

Enrico Tuvera Jr


People also ask

What are the 12 principles of design?

There are twelve basic principles of design: contrast, balance, emphasis, proportion, hierarchy, repetition, rhythm, pattern, white space, movement, variety, and unity.

What are the 14 principles of design?

The elements, or principles, of visual design include Contrast, Balance, Emphasis, Movement, White Space, Proportion, Hierarchy, Repetition, Rhythm, Pattern, Unity, and Variety.


2 Answers

Head First Design Patterns might be a gentler intro to the GoF "Design Patterns" book

Steve McConnell's Code Complete is a good guide to many things code, including how to use good strategies in languages that don't natively support them.

Martin Fowler's Refactoring refers heavily to Design Patterns, but is a great catalog of so-so code, and better ways of writing it (I read it about the same time I read "Code Complete", a couple of years [tsk tsk] before reading Design Patterns, and "Refactoring" had a major impact in how I looked at code I wrote. For the better, I like to think).

None of these are "free." But how good of advice do you want? If you're trying to invest in your career, this is the cheapest way to do it.

like image 65
Michael Paulukonis Avatar answered Oct 16 '22 15:10

Michael Paulukonis


DRY and YAGNI are good starting points for beginners and you need to study and understand OOP.

Regarding Design Patterns (which are a bit more advanced and abstract than DRY and OOP) you can study from the free Design Patterns - Java Companion. The fact that it's not Python should not bother you - classic design patterns are applicable everywhere.

When you feel like going further have a look at DDD (free DDD book from Eric Evans) and of course Unit Testing which, believe it or not, will improve your code and you as a designer.

like image 38
cherouvim Avatar answered Oct 16 '22 14:10

cherouvim