Being a core developer for couple of years, coding applications seeing the class diagrams, sequence diagrams, I decided to improve my self, taking the next step of designing. As I'm an OO developer, I'm interested in improving my design skills.
For Example, I had a hard time designing a currency converter.
My questions to the SO:
In short, given a problem, I just want to solve it in Object-oriented way??
You have to do bad OO design before you can do good OO design.
A fantastic project would be take your currency converter and slowly move the code to use OO concepts. OO is a creative process: there are no wrong answers, but worse and better do exist. Basically, when your code retains functionality and gets shorter/easier-to-read, it's better. When it gains flexibility without adding more code, that's better too. But it's a creative process. Use a version control system like GIT to be able to "undo" easily, try stuff out, and MAKE MISTAKES. OO design is a process.
- Is it by experience the design skills can be acquired?
Yes.
- Will learning books/blog/material over internet etc help?
Yes.
- Is it that one needs the domain knowledge of the application being developed?
Yes, but I think that knowing the domain too well can screw up good design. When working with Airline programmers, I noticed that the known, unquestioned abstractions ("ticket," "reservation") inhibited good OO design. Your OO model is not the real world model. It's a model for your program.
- Knowing Design patterns, principles?
Yes, more is better, always.
- Studying 'Code Complete' book ?
Lots of people say it's a great book. But, have you read Italo Calvino? Or Jorge Luis Borges? All kinds of books may help.
- Need to have Problem-solving skills?
No. You get problem-solving skills by applying OO (or any other paradigm).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With