新手问题 [抛砖引玉] Web 开发者独有的能力

whitecrow · 2014年05月20日 · 最后由 nouse 回复于 2014年05月20日 · 2085 次阅读

最近在思考 Web 开发者相别与其它种类开发者能力的区别的问题。固然所有程序员都应当有足够的(1)学习能力(2)沟通协作能力(3)工程管理能力以及(4)对技术高效运用的能力等通用能力。
但 web 开发人员一定有一些不同于其它程序员的能力要求。我认为应当分为以下两个部分:

一,对业务的深刻理解以及写出维护性足够高的代码,这一点是所有应用开发者都该具备的。

1)对业务的理解简单的说说:一是学习其它开源项目的做法,比如做电商网站的时候可以借鉴 Spree 的数据库结构、API、业务流程。第二就是在同类项目中有丰富的业务经验上的积累,这个只能靠时间和经验累积。

2)写出可维护性足够高的代码,可维护性包括拓展性好和可读性好,这建立在三个前提之下:第一是有足够的编程经验,这个不用说了,第二是对诸多编程范式、设计原则或抽象模式有自己的理解,第三是对业务本身有足够的理解。

二,web 架构的选择和优化能力

1)会做技术选型,一是看其它同类业务的应用架构怎么做的,适不适合我们团队,二是列出团队最关注的几项技术指标:比如开发效率、性能、容不容易学习或招聘等,然后居中权衡。

2)架构优化,做好选型,开发到某个阶段的时候需要做优化,这时候需要对 web 涉及到的所有技术做粗浅的了解。分析性能瓶颈:

  1. 性能监控:实时监控、监控代理、系统监控、服务监控、响应时间监控
  2. 网络方面:增加带宽、减少网页中的 HTTP 请求、CDN 等
  3. 各种缓存策略:使用动态内容缓存、数据库的前端缓存区(redis,memcached)、将动态内容静态化、页面组件分离、Web 服务器缓存、反向代理缓存等
  4. 数据库优化:优化 SQL 语句、索引、使用查询缓存、线程池、数据库拓展(复制和分离、垂直分区、水平分区)
  5. 服务器优化:吞吐率、CPU 并发计算、系统调用、内存分配、持久连接、I/O 模型、并发策略
  6. Web 负载均衡,这个不懂。

请大家补充或建议。

先定义竞争力

#1 楼 @bhuztez 词语有歧义,已改正为“能力”。

#1 楼 @bhuztez 自己懂的就是竞争力

#3 楼 @hooopo 词语有歧义,已改正为“能力”。

看颜色知 RGB,看图片知 px 距离,看到网页速度缓慢知该去哪里该代码。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号