没有合适的资源?快使用搜索试试~ 我知道了~
首页程序员之道:原则与观察
程序员之道:原则与观察
需积分: 10 3 下载量 60 浏览量
更新于2024-07-29
收藏 1.21MB PDF 举报
"The Developer's Code 是一本由KA WAI CHEUNG编写的书籍,主要探讨了程序员在Web开发过程中的原则、经验教训和观点。这本书通过50个章节,涵盖了从规划、动机到生产力提升等多个方面,旨在帮助程序员提升职业素养和开发效率。" 在书中的"Metaphor"部分,作者指出在Web开发中应警惕比喻的使用,因为它们可能带来误导,同时也强调了计划与构建的重要性,理解产品的发布和Version 2.0的概念。作者还挑战了"象牙塔"架构师的神话,认为专业化不是强制性的,并提醒读者比喻可能会双向伤害。 "Motivation"章节关注的是激发编程热情的方法,比如从喜欢的项目开始,接受不完美,学会适时停止编程,以及在早晨首先测试自己的工作。保持良好的工作环境,如避免在卧室工作,以及不让初期的负面印象影响自己,都是提高工作效率的关键。此外,完成工作的满足感对情绪价值的提升不可忽视。 在"Productivity"部分,书中提倡对个人项目说"不",设置明确的截止日期,限制工作参数,简化时间线,每天使产品在两个方面有所改进。投资高质量的硬件设备,设定非工作时间,维护个人待办事项清单,以及用LaTeX编写代码等都是提高生产力的有效策略。 《The Developer's Code》是一本面向程序员的指南,它提供了关于如何更好地规划项目,激发动力,以及提高工作效率的实用建议。通过这些原则,程序员可以更好地理解他们的角色,提升专业技能,并在Web开发领域取得成功。
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/4118683/bg10.jpg)
#3: Understand launch and Version 2.0
Traditionally, we've approached a launch date as a mission critical point in
time when software must be final.
For buildings and structures, it's essential. At one time, the metaphor made
sense in software too. When we shipped software on floppy disks and CDs,
things had to be just right. There were huge cost and time implications for
bugs. Projects were delayed for the sake of getting it perfect, or for the sake of
shoving in a new feature. I'll talk about what that does for morale in the next
chapter.
Today, web-based applications aren't launched — they're uploaded,
released, and pushed. Software lives and matures over time.
And, once we've launched, iteration #2, #3, and #4 can come a few days or
even hours later. Even the concept of formal version releases of software is
antiquated. It made sense in the bygone days of shipping software on disk.
On the web, we continuously integrate and constantly iterate. Unlike the
auto industry or food industry, there's no need for mass "recall." Today, a
critical bug can be patched, tested, and deployed immediately. It's not version
2.0 anymore. It's version 2.0.12931. Or, it's simply today's version. Is anyone
in the public eye really keeping track anymore?
Society is growing accustomed to iteration too. Did you see the new image
gallery on Facebook? Did you see Google's new auto-suggest feature? Did you
see Twitter's new layout? Nobody warned us with a month-long advertising
campaign. New changes just appear now.
IMVU (http://www.imvu.com), a popular 3D-chat application boasts over
![](https://csdnimg.cn/release/download_crawler_static/4118683/bg11.jpg)
100 million registered users, and they ship releases 20 times a day.
In today's landscape, the initial launch shouldn't feel like the end-all-be-all
like it once did, or still does in many other industries. It's just one of
hundreds (if not thousands) of mini-launches that take place during the
lifespan of software. Keeping that perspective can relieve the mental pressure
of launching software.
This mentality can be easily abused. Don't use this change of construct as
an excuse for being lazy or leaving loose ends untied. The launch of any web
app should be very, very good before others have at it. The big things need to
be right. Proper security needs to be in place. But, the small stuff, the ones
that are OK to fix afterward, shouldn't keep you from releasing software.
You'll be surprised how often things you thought were important when you
launch suddenly aren't now that it's out there.
And, you still ought to celebrate when software launches. Grab a drink,
make a toast, and take your team out to a fancy dinner. But, don't spend all
your emotional currency on just the wedding. There's an entire relationship
you'll have with software afterwards. There's time to make adjustments, add
in a family of new features, and right wrongs.
Launch is just another pinpoint in software's life. Not the end-all-be-all.
![](https://csdnimg.cn/release/download_crawler_static/4118683/bg12.jpg)
#4: The "Ivory Tower" Architect is a myth
I've never liked the idea that technical architects should stop coding.
In physical architecture, architects perch in an ivory tower, living in a
world of only planning. They don't nail, drill, paint, or solder. Requiring
architects to do the physical work of drilling holes and laying concrete is
simply impractical. Architecting and developing are two distinct career tracks.
In our industry, you work your way up to the role of a technical architect by
actually developing — by doing the "physical" work of building applications.
But, as you move up the software development ladder, you typically write less
code. You immerse yourself more with planning than with discovering the
problems on the front-line. You concern yourself more about an overall vision
and less about the intimate details of code. As an industry, we've really latched
on to the metaphor that architects should plan, and developers should
develop.
This creates a false perception that once you've reached a certain level,
programming is no longer where you're most valuable. Leave the dirty work
for the junior developers. At the same time, it pushes lower-level
programmers away from thinking about the overall goals and direction of the
project. Just concentrate on implementation. The architect-developer model
makes both parties less accountable for the application as a whole.
When you split up roles into the somewhat arbitrary hierarchy of those that
think about the technical "big picture" and those that only think in if
statements, for loops, and markup, you fracture disciplines that really belong
together.
![](https://csdnimg.cn/release/download_crawler_static/4118683/bg13.jpg)
Pure technical architects can make a guess at the best architecture, the best
design pattern or the best practice. But, it's only when you're knee-deep in
code that you discover where the real challenges exist. At the same time, the
developer who isn't given the reigns to think high-level also doesn't get the
chance to voice a second opinion. Often, it's the guy who's doing the actual
work that can see the bumps ahead.
We've taken the architect-developer analogy too far. The corporate ladder
in the software industry needs a better analogy.
To build a building, architects architect and developers develop. Traditional
architects know how to create elaborate plans and specs in fine detail. But,
they don't build. It's simply not reasonable. The separation between those that
think high-level and those that work in the trenches is largely for practical
reasons.
In software, it doesn't have to be that way. Great developers can be both "in
the trenches" and "high-level" at the same time. Compared to developers, an
architect might spend the most time thinking high-level, but she ought to have
a foot in development.
And another thing...
And when was it decided that programmers have to be social outcasts?
Sometimes, a developer is best equipped to explain to a client why a feature
won't help or would put the project over budget. Project managers aren't the
only people that ought to communicate to stakeholders.
For software to really succeed, I'd rather have a group of developers that
are capable of coming up with a plan, executing, and then communicating
than a group of people that only plan, only execute, or only communicate.
![](https://csdnimg.cn/release/download_crawler_static/4118683/bg14.jpg)
#5: Specialization isn't mandatory
Be wary about creating hard lines across expertise within a development
team. In traditional architecture, it's not practical for the electrician to also be
the cement pourer, the brick layer, and the painter. They are specialties in and
of themselves. They also occur in physically different places. You need to have
a group of specialized doers honing each craft separately for intellectual and
practical reasons.
In software, you can be a designer, programmer, and DBA. You can be well-
versed in Oracle, SQLServer, PHP, Java, .NET, C++, Python, and SQL while
knowing your way around HTML, CSS, JavaScript and Flash. Why is this not
only possible, but practical?
First, all of these toolsets live on the screen right in front of you. If you're
currently working in SQL, you don't have to go somewhere else to write
HTML, or to cut an image in Photoshop. You switch programs on your
computer. There is no physical barrier between any programming disciplines.
In addition, software concepts tend to transcend language or tier. MVC
(model-view-controller) is an application architecture adopted in many UI
platform applications, like Adobe Flex's Cairngorm platform, along with many
server-side development frameworks, like .NET. Programming languages
today have an extraordinary amount of overlap. Design patterns and
refactoring are concepts that live everywhere in the programming landscape.
At We Are Mammoth, most of our development team knows multiple
programming languages and splits time between front-end, middleware, and
database work. It helps us even out everyone's workload because we're all
adept at working on all layers of an application.
剩余165页未读,继续阅读
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/dee3e598561e4415aaa5692948c279a0_chuxiwen.jpg!1)
chuxiwen
- 粉丝: 0
- 资源: 11
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)