Don’t Be a Problem Solver

?

Don’t Be a Problem Solver

Eben Hewitt

WiTH SoME ExCEpTionS, ARCHiTECTS uSEd To BE dEvElopERS. Devel- opers get rewarded for solving programming problems, which are more local in scope than architectural problems. Many programming problems are small, tricky, algorithmic problems. Such problems are frequently presented in pro- gramming interviews, books, and university courses as if the problems exist in a vacuum. The trickiness is alluring and seductive. Over time, we begin to accept such problems out of hand. We do not ask if this problem is meaning- ful, or interesting, or useful, or ethical. We are not rewarded for considering the relation of this problem to a larger landscape. We are trained to focus only on our solution, which is aggravated by the fact that solving hard problems is hard. We leap into action in programming interviews, which often begin by presenting us with some number of jelly beans we are meant to sort accord- ing to an arbitrary set of constraints. We learn not to question the constraints; they are a pedagogical tool, intended to lead us to discover what the teacher or interviewer or mentor already knows.

Architects and developers learn to enter problem-solving mode immediately. But sometimes the best solution is no solution. Many software problems need not be solved at all. They only appear as problems because we look only at the symptoms.

Consider managed memory. Developers on managed platforms have not solved memory problems, nor could many of them do so if required; part of their solution means that they mostly just don’t have that problem.

Consider complex builds that demand lots of interconnected scripts requir- ing the enforcement of many standards and conventions. You could solve that

?

??problem, and it would feel great to get it all to work, putting your best scripting skills and best practices to work. Our colleagues will be impressed. No one is impressed by us not solving a problem. But if we can step back and figure out that we aren’t solving a build problem but rather an automation and portability problem, this might lead you to a tool that abstracts it away.

Because architects tend to immediately enter problem-solving mode, we for- get, or rather have never learned how, to interrogate the problem itself. We must learn, like a telephoto lens, to zoom in and zoom out, in order to ensure that the question is really framed properly, and that we’re not merely accepting what we’re given. We must not be passive receptacles for requirements, cheer- fully ready at our posts, handing out our smartest solutions in the manner of a Pez dispenser.

Instead of immediately working to solve the problem as presented, see if you can change the problem. Ask yourself, what would the architecture look like if I just didn’t have this problem? This can lead ultimately to more elegant and sustainable solutions. The business problem still does need to be solved, but not, perhaps, as immediately suggested.

We have to break our addiction to “problems.” We love to get them, seeing our- selves on a European bridge, as if we are secret agents who’ve just been handed a self-destructing brown envelope containing our mission. Before considering your answer to a problem, think what the world would look like if you just didn’t have this problem.

时间: 2024-10-12 13:03:29

Don’t Be a Problem Solver的相关文章

hdoj 1898 Sempr == The Best Problem Solver?

Sempr == The Best Problem Solver? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others)Total Submission(s): 1490    Accepted Submission(s): 970 Problem Description As is known to all, Sempr(Liangjing Wang) had solved mor

HDU1898 Sempr == The Best Problem Solver?【水题】

Sempr == The Best Problem Solver? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 1317    Accepted Submission(s): 865 Problem Description As is known to all, Sempr(Liangjing Wang) had solved mo

HDU 1898 Sempr == The Best Problem Solver?(数学题)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1898 Problem Description As is known to all, Sempr(Liangjing Wang) had solved more than 1400 problems on POJ, but nobody know the days and nights he had spent on solving problems. Xiangsanzi(Chen Zhou) w

杭电 HDU ACM 1898 Sempr == The Best Problem Solver?

Sempr == The Best Problem Solver? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 1438    Accepted Submission(s): 940 Problem Description As is known to all, Sempr(Liangjing Wang) had solved mo

ACM学习历程—HDU 5451 Best Solver(Fibonacci数列 && 快速幂)(2015长春网赛1007题)

Problem Description The so-called best problem solver can easily solve this problem, with his/her childhood sweetheart. It is known that y=(5+2√6)^(1+2^x).For a given integer x (0≤x<2^32) and a given prime number M (M≤46337) , print [y]%M . ([y] mean

ACM-ICPC 2015 Shenyang Preliminary Contest B. Best Solver

The so-called best problem solver can easily solve this problem, with his/her childhood sweetheart. It is known that y=(5+2 *sqrt(6))^(1+2^x) For a given integer x(0≤x<2^32) and a given prime number M(M≤46337), print [y]%M. ([y]means the integer part

CodeForces Gym 100935D Enormous Carpet 快速幂取模

Enormous Carpet Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Gym 100935D Description standard input/outputStatements Ameer is an upcoming and pretty talented problem solver who loves to solve problems using computers.

Open XML SDK 在线编程黑客松

2015年2月10日-3月20日,开源社 成员 微软开放技术,GitCafe,极客学院联合举办" Open XML SDK 在线编程黑客松 ",为专注于开发提高生产力的应用及服务的程序猿们提供一个在线动手开发,学习交流,技术分享,发挥创意与竞技的盛宴. 我们为参赛队伍准备了丰富的技术干货,国内外高手无私分享以及技术支持,逐步引导的在线学习视频教程与技术文档,场景范例,在线编程及演示环境,社区互动,丰富礼品(如极客学院特别为每位参赛人员提供月VIP码,用户可以免费学习极客学院全网课程)及

Peter Norvig:学习在于挑战和重复

黄小非译注(本文来自伯乐在线):本文作者Peter Norvig目前任职于Google,其职位是研究主管(Director of  Research). Peter Norvig是享誉世界的计算机科学家和人工智能专家.他是 AAAI  和  ACM的会员,是业界内经典书籍<Artificial Intelligence: A Modern Approach | 人工智能:一种现代方法>的作者之一.在加入Google之前,他曾经是NASA(美国航空航天局)计算科学部门的主要负责人,并在南加州大学