我看的是Orreily网站上的章节,国内已有译本,以前粗粗看过标题,个别条目的印象还是蛮深的,前几天又在Orreily上翻了翻,又有很多感触,准备把自己的一些想法留个记录,也便于今后能做些个回顾。
1. Don't put your resume ahead of the requirements
As engineers we sometimes recommend technologies, methodologies and approaches for solving problems because deep down we want to have these on our resume and not because they are the best solution for the problem. Such decisions very rarely result in happy outcomes.
The best thing for your career is a long string of happy customers eager to recommend you because you did the right thing by them and for the project. This goodwill will serve you orders of magnitude better than the latest shiny object in the latest shiny language or the latest shiny paradigm. While it is important, even critical, to stay abreast of the latest trends and technologies this should never happen at the cost of the customer. It’s important to remember that you have a fiduciary duty. As an architect you have been entrusted with the well-being of your organization and its expected that you will avoid all conflicts of interest and give the organization your undivided loyalty. If the project isn't cutting edge or challenging enough for your current career needs then find one that is.
If you can't do that and you are forced to be in such a project, then you and everyone else will be happier using the right technology for the customer rather than for your resume. It’s often difficult to resist utilizing a solution that is new and cool, even when it’s inappropriate for the current situation.
With the right solution, the project will have a happier team, a happier customer and overall far less stress. This will often give you time to go deeper into the existing older technology or to learn the new stuff on your own time. Or to go take that painting class you always wanted to do. Your family will love you for it, too - they'll notice the difference when you get home.
Overall always put the customer's long-term needs ahead of your own short term needs and you won't go wrong. By Nitin Borwankar This work is licensed under a Creative Commons Attribution 3 (wc 326)
不要看重自身简历过于需求
文中提到的这种为了简历好看就在项目里采用最时髦的技术或编程语言的做法真的存在么?
我的确看过很多简历上罗列着精通XXXX、YYYY之类,但实际一问,却多半是只知皮毛而已,这种修饰简历的办法不用也罢。
如果是实实在在的想掌握一样新技术而在项目里贸然使用的话,首先会遇到的麻烦就是需要学习、熟悉这门新技术,包括熟悉新的API和类库、熟悉新的设计观念、了解编码方式和调试方法,而这些新路上的坷坷坎坎是拿不到台面上的,这只能体现你的学习能力,而这种学习能力虽然重要,但对于高层次的设计人员——或者说架构师——来说,并不是最最关键的,只要比一般水平较高就行了。
过了这些沟沟坎坎,接下来就是比较关键的了,就是新技术对系统架构带来的影响。不是出于满足需求的目的而引入的新技术必然会和系统应有的架构产生冲突,就像俱乐部老板硬要在主力阵容塞进几个他招揽来的明星,为了保证他们的出场率,同时又要使整个球队运作良好,实在是让主教练头疼的事。其次,这种为了保证新技术的采纳,往往会使这些新技术成为整个技术架构的头等公民,结果就是架构中其他技术与其冲突时,必须为其让路,结果是整个架构会相当的不协调。
以上这些是针对那些总想在项目里试试新技术的人写的,其实,对于有一定设计经验积累的,应该都知道这么做只会麻烦不会有什么好处的,看到这作为书里第一条的建议,恐怕不会有太多感觉。因为大家都会知道好的架构不是硬生生造出来的,而是自然的生长起来的(见97. Great software is not built, it is grown),所以任何会使得架构不自然的设计,最终都会为之付出代价。为了身心和谐,不如像文中的建议深入研究下正在使用的技术、或是利用自己的时间研究新技术、或是去参加个绘画课之类:)