Simon Brown 全球知名软件架构独立咨询师、讲师,创办了专门讨论软件架构问题的网站“编码架构”(codingthearchitecture.com)。他自称是写代码的软件架构师和明白架构的软件开发者。自2008年以来的7年时间里,Simon在全球28个国家做过有关软件架构、技术领导力及其与敏捷的平衡等主题的百余场演讲,并于2012年8月在中国举办的ArchSummit全球架构师峰会上以“郁闷的架构师”和“如何设计安全的架构”为主题发表演讲,深受与会者好评。
Simon已为全球20多个国家的软件团队提供咨询和培训,他的客户既有小型技术初创企业,也不乏全球家喻户晓的品牌公司。Simon著有《程序员必读之软件架构》,关于写作这本书的初衷,他如是说:
跟很多人一样,我的职业生涯从软件开发开始,从前辈那里得到指导,和团队一起工作,交付软件系统。久而久之,我也开始设计软件系统中的一小部分,最后我的职务变成了这样:承担我现在认为是设计软件架构的任务。
我的职业生涯多数是为IT咨询机构工作,这意味着我参与过的大多数项目要么是为客户构架软件系统,要么是和客户一起完成构建。IT咨询机构要发展壮大,就需要更多的人和团队。要组建更多团队,又需要更多的软件架构师。这就是我写这本书的理由。
软件架构应该容易理解。第一次设计软件架构时,尽管有一些优秀的导师,但我还是搞不清自己该干些什么。的确,有很多软件架构方面的书籍,但它们的写作视角不一样。我发现其中大多数都偏研究方向,甚至完全是学术派,而我是一个寻求现实建议的软件开发者。我想写一本对我职业生涯的那个阶段有用的书,即面向软件开发者的软件架构书。
所有软件项目都需要架构。我真心喜欢敏捷方法,但其中很多方法缺乏对软件架构的明确重视,这让我如坐针毡。敏捷方法不是说不应该做任何预先设计,但它们通常也不明确探讨这一点。我发现这会让人们得出错误的结论,我也看到了缺乏预先思考可能造成的后果。我非常清楚大型预先设计也不能解决问题。我感觉适当地做一些预先思考能提供一种愉快的中间状态,而这特别适合与不同经验和背景的团队一起工作的情形。我更喜欢轻量的软件架构方法,这样我就可以尽早让一些结构单元到位,从而提高成功率。
传播轻量级软件架构实践。这些年我学习和实践了很多对设计软件架构很有帮助的做法。这些实践涉及软件设计流程,并通过发现技术风险来沟通和记录软件架构。我总是认为这些实践都合理,但情况并非如此。过去几年,我向上千人教授这些实践,并见证了他们的变化。写书可以帮助我把这些想法传递给更多人,希望其他人也能从中受益。
作品选读:软件架构的坏名声
最终入选问题的提问者,将获得图灵社区送出的图灵电子书一本。
往期活动回顾:
《代码本色:用编程模拟自然系统》作者Daniel Shiffman访谈问题有奖征集,问题入选的获奖者有:华元,旁观者,fdy1045,samael,2gua,孤光
Jolt大奖获奖作者Venkat Subramaniam访谈问题有奖征集,问题入选的获奖者有:cornell,2gua,fairjm,fdy1045
算法信息论奠基人格雷戈里·蔡汀访谈问题有奖征集,问题入选的获奖者有:pwh0996,旁观者,wlyg,赵丹 Diana Zhao,imt,坚持,华元,dlitchi,fdy1045,sssgggyyy,大廖
《硅谷百年史》作者皮埃罗•斯加鲁菲访谈问题有奖征集,问题入选的获奖者有:wlyg,cage,华元,fdy1045,Leo_M
2. 我理解的“轻量级软件架构实践”,其实就是快速响应快速迭代的架构实践?是这么回事儿吗?我对这种实践也是比较推崇。可是,由于现实中变化频繁的需求总是对架构实践的活动带来影响,就不得不频繁调整架构及设计,这挺繁琐的,有没好的方式可以减轻点这种情况?要知道,很多时候,需求的频繁变化是不可控的。
2.您在书中提到敏捷方法,您是如何看待现在流行"敏捷已死"的看法呢.
3.复杂是架构最大的敌人,但是现实中,人们总崇拜那些"一个架构用了十几年,可扩展性极强"那样的神奇架构,过多场景预判而使的程序变得复杂,您是如何规划架构时间点上的规模和设计呢.
4.您觉得那中 用户数量"从10万到1亿"的架构不变的例子,是否真的存在,如存在,他们是做什么事,才让他们达到这个高度.