If You Design It, You Should Be Able to Code It
2015-09-03 15:22
387 查看

in ARCHiTECTuRE, it’s tempting to create elaborate designs and abstrac- tions that elegantly address the problem at hand. It is even more tempting to sprinkle new technologies into the project. At the end of the day, someone has to implement your design, and the architectural acrobatics that you have the developers perform impact the project.
When designing the architecture for your project, you need to have a feel for the amount of effort necessary to implement each element of your design; if you’ve developed an element before, it will be much easier to estimate the effort required.
Don’t use a pattern in your design that you haven’t personally implemented before. Don’t rely on a framework that you haven’t coded against before. Don’t use a server that you haven’t configured before. If your architecture depends on design elements that you haven’t personally used, there are a number of negative side effects:
• •
You will not have experienced the learning curve that your developers will have to face. If you don’t know how long it takes to learn a new technology, you won’t be able to give a good estimate on time to implement.
You will not know the pitfalls to avoid when using the elements. Inevita- bly, things will not go as well as the demo that the trained expert in the technology provided. If you haven’t worked with the technology before, you will be blindsided when this happens.

• You will lose the confidence of your developers. When they ask questions about the design and you aren’t able to give solid answers, they will quickly lose confidence in you and your design.
• You will introduce unnecessary risk. Not knowing these things can put a big question mark on key elements of the solution. No one wants to start a project with big, unnecessary risks hanging around.
So how does one go about learning new frameworks, patterns, and server plat- forms? Well, that’s another axiom in and of itself: before anything, an architect is a developer.
If You Design It, You Should Be Able to Code It
Mike Brownin ARCHiTECTuRE, it’s tempting to create elaborate designs and abstrac- tions that elegantly address the problem at hand. It is even more tempting to sprinkle new technologies into the project. At the end of the day, someone has to implement your design, and the architectural acrobatics that you have the developers perform impact the project.
When designing the architecture for your project, you need to have a feel for the amount of effort necessary to implement each element of your design; if you’ve developed an element before, it will be much easier to estimate the effort required.
Don’t use a pattern in your design that you haven’t personally implemented before. Don’t rely on a framework that you haven’t coded against before. Don’t use a server that you haven’t configured before. If your architecture depends on design elements that you haven’t personally used, there are a number of negative side effects:
• •
You will not have experienced the learning curve that your developers will have to face. If you don’t know how long it takes to learn a new technology, you won’t be able to give a good estimate on time to implement.
You will not know the pitfalls to avoid when using the elements. Inevita- bly, things will not go as well as the demo that the trained expert in the technology provided. If you haven’t worked with the technology before, you will be blindsided when this happens.

• You will lose the confidence of your developers. When they ask questions about the design and you aren’t able to give solid answers, they will quickly lose confidence in you and your design.
• You will introduce unnecessary risk. Not knowing these things can put a big question mark on key elements of the solution. No one wants to start a project with big, unnecessary risks hanging around.
So how does one go about learning new frameworks, patterns, and server plat- forms? Well, that’s another axiom in and of itself: before anything, an architect is a developer.
相关文章推荐
- 【阿里笔试+蘑菇街面试】向来缘浅,奈何情深
- 布线问题
- Linux之文件系统管理
- phalapi改动的地方
- nyoj 327 亲和串 【kmp(好题)】
- 关于Android开发中Java对象序列化的一次测试
- Stretch Key Dimensions to See What Breaks
- 频道发布与消息订阅
- Objective-C 【This is ARC】
- KVO实现机制 & 如何自己动手实现 KVO
- Objective-C 【This is ARC】
- E. Bear and Drawing
- ubifs烧写遇到《UBI error: ubi_io_read: error -1 while reading 64 bytes from PEB》
- sass 安装使用杂记
- 给内联元素设置宽高的几种方式
- Effective C++ 改善程序与设计的55个具体做法 二周目笔记01
- Opencv 三对角线矩阵(Tridiagonal Matrix)解法之(Thomas Algorithm)
- Opencv 三对角线矩阵(Tridiagonal Matrix)解法之(Thomas Algorithm)
- Oracle行转列和列转行
- python编码问题 decode('unicode-escape')