Kenneth Reitz is the author of open source project called Requests: HTTP for Humans in Python. He has been advocating about writing minimalistic README-driven API built for human.
His main thesis is that all software projects, even if internal, should be treated as open source projects with rich documentation and clear separation from the outside layers. In order to make every module separate, each implementation should start with clear definition of what problem it is solving. It also forces programmers to think about how it should interface with customers, including developers in case of API. Interfaces should be minimal, lack of clutters hiding unnecessary details. Often these details are the results of closely modeling the implementation layers instead of focusing on usability of interface.
I recommend the following blog entries from his website:
He also spoke at PyCon Canada with Python For Humans title.
I don't think any developer sets out to write non-reusable code. But what ends up happening is that many of them do not realize their job is not only to write code but to explain what the code does. Being able to explain clearly what a smaller problem their code solves is a critical building block to reusable code, layered components and hence resulting in a good architecture.
His main thesis is that all software projects, even if internal, should be treated as open source projects with rich documentation and clear separation from the outside layers. In order to make every module separate, each implementation should start with clear definition of what problem it is solving. It also forces programmers to think about how it should interface with customers, including developers in case of API. Interfaces should be minimal, lack of clutters hiding unnecessary details. Often these details are the results of closely modeling the implementation layers instead of focusing on usability of interface.
I recommend the following blog entries from his website:
He also spoke at PyCon Canada with Python For Humans title.
I don't think any developer sets out to write non-reusable code. But what ends up happening is that many of them do not realize their job is not only to write code but to explain what the code does. Being able to explain clearly what a smaller problem their code solves is a critical building block to reusable code, layered components and hence resulting in a good architecture.
No comments:
Post a Comment