DEV Community

Discussion on: Moving Past Tutorials: a course on problem solving for programmers

Collapse
 
gavinfernandes2012 profile image
Gavin Fernandes

What I have trouble (or at least I think I have trouble with) is the actual design and architecture of programs, like how would you go about deciding what classes and functions to make, and how to go about writing code that's clean and extensible without being too verbose.

What you pointed out does ring true to me in that code is easy to write, but good code isn't always so easy.

Collapse
 
monejava profile image
Simone Rondeli

You may want to take a look to SOLID principles and GRASP patterns.

Collapse
 
cben profile image
Beni Cherniavsky-Paskin

I highly recommend Sandi Metz's book Practical Object Oriented Design in Ruby (aka POODR). (The choice of Ruby is not essential to the content.) It deals with exactly the themes you ask, and gives ways to think about such decisions. The central criterion guiding the book is not "how to write perfect code you can set in stone and never change", but "how to write code that will be easiest to evolve".

The book is surprisingly concise but very clear. I've been programming for ~2 decades, and still it was interesting & refreshing to read.

She has many lectures online if you want to sample her style.

Collapse
 
gavinfernandes2012 profile image
Gavin Fernandes

That sounds like exactly what I need, thanks! I'll check it out soon.

Also, do you know any analogs to this for functional programming?