阅读更多

13顶
1踩

Web前端

翻译新闻 优秀Web开发者必须知道的10件事

2012-09-11 16:48 by 见习记者 csdn_0000 评论(8) 有10108人浏览
“开发工作不仅仅只是写代码”这句话来自3EV网站的Dan Frost,他在一篇文章中阐述了开发过程中应该注意的一些事项。原文内容如下:

开发者是创造数字世界的主力军,他们不应该只扮演编程工具的角色,而应该对开发工作有更高的要求。那么,开发者可以从哪些方面提高开发能力呢?下面我就谈一下我的想法。我的建议可能不全面,但希望能够给你带来一些帮助。

1.  不要只盯着代码

如今人人都会写代码。很多业余爱好者也可以搭建网站、编写应用程序,编程已经不再稀奇。

随着网络的普及,许多人只需通过自学就会编程,但无论是自学者还是科班出身的开发者们都有一些同样的问题。我面试过一些有很高学历的应聘者,这些人大多获得了计算机学位、修过AI课程,拥有各色计算机等级证书,但他们仍然缺乏一些很重要的认识。

开发者们不应该只盯着代码,还需要注意开发工作中的两个方面——横向面和纵向面,比如,开发者应该懂得如何在团队里与别人协作,也应该清楚开发项目中系统层面的设计。

我认为与开发者合作的人也应该阅读这篇文章。因为如果你对开发了解越多,你可以在合作的时候对开发者提出更高的要求,比如让他们概括出讨论的问题,让他们提炼出系统的核心功能,用图片和实例展现应用实现的功能等。



2.  重要提醒

我想我有资格给开发者们挑毛病,因为我也是一名开发者,并且我了解开发者一些共有的问题,尽管他们对代码了如指掌,并且能按时完成工作。但他们仍然要注意两方面:更专业和更具人性化。

3.  网络影响

你只要搜索一下专业网站上面的开发技术就可以得到许多答案。比如框架知识、浏览器、CSS 和JS。搜索引擎会为你找出需要的框架、平台和应该关注的发展趋势。

而这些东西只是我们的工具,它们帮助我们构造项目,但是它们不是项目成功的关键。即使一个开发者了解系统中每个细节、掌握了所有API功能和新的CSS技术,他也可能会开发出毫无意义的产品。

开发者需要知道如何运用工具,同样也需要了解观众,也就是用户、团队和其他开发者。他们需要了解他们的工具对环境的适应程度(换句话说,产品的环境)以及工具的用处。

有一种开发者被描述为“wide and deep”,这种开发者懂得如何做好团队合作,同时掌握着开发的核心技术。如果他们加入项目,会大幅度提升项目进程,改变项目的步调,如果没有他们,非技术人员就会陷入一些琐碎细节中停滞不前。

4.  我们需要的

我最近正在列一份清单,上面罗列了建立网站、管理主机需要的所有东西,可以作为新人学习技术的基础指南。我们通过不断的探讨来修改清单的内容,希望这份清单能为新人建立一个好的开始。

我们给出的清单包含了大部分学习开发需要的知识。其中有经典常用的工具,也有一些新式工具。

在开发实践中,这些工具对推进项目的进展很有帮助,优秀开发者的工具积累应该比编程语言、CMS、框架这些知识更丰富。因为你需要调度、测试、CI、强化版本控制(团队合作,不是单靠你自己),同时你不能只了解几条指南,还需要了解项目的核心理念。

5.  DevOps

这些辅助工具和技巧适用于DevOps模式(DevOps是一组过程、方法与系统的统称,用于促进开发、技术运营和质量保障部门之间的沟通、协作与整合)。一直以来,DevOps模式中“运营”和“开发”的对决都难分高下。运营主要用来保持事物的运作。而开发用来研制新事物(往往使事物停止运作)。这种矛盾导致了两个阵营争执不休。

假如开发者不能充分了解产品,他开发的功能往往与产品不匹配,这样写出来的代码也不适合产品。因为他们没有考虑过产品的使用环境,所以他们的编码忽视了与产品的调配,而将重心放在了功能的完善中。

要注意,这些细节都会导致可怕的延迟,而远程服务器管理的形式则会加剧这种延迟。

如果想成为优秀的开发者,就应该深入学习开发过程中所使用的所有工具。一旦开发者全部学会了这些工具的用法,将会有很大的进展。

持续部署和DevOps的相关实践已成为了一种标准,还没有对这些理念进行研究的开发者或公司已经落伍了。如果你跟不上发展的步伐,那么其他人总有一天会超过你。

网上有许多对“DevOps”概念的介绍,这种理念与PHP、MySQL或是Rails不一样。它是降低软件和工程协作风险的一系列方法。DevOps理念关注的问题主要在于调度、自动化和保持生产流水线更快更好的运行。

如果你使用了这种开发模式,你会发现无论是在其他部门还是其他公司之间,开发者们都能有良好的团队协作。如果他们通过API与第三方合作,他们会研究对方可能出现的问题。但如果他们与服务器管理员合作,他们只会关心他们需要如何配置以及他们的软件如何安装在服务器上,这样做遗留的问题是很麻烦的。

6.  代码调错

Onion's 首席技术官Michael Greer在关于Web开发者必会技能的问题上给出了一个很好的答案

  • “懒惰”:拒绝两次做同一件事情——写一个脚本或算法来实现
  • “懦弱”:经常测试,担心过载和代码影响
  • “鲁莽”:经常尝试新鲜事物
“懦弱”是注意细节的另一种说法。要知道,开发者的生活中百分之九十九是由调错和测试组成的。

开发者要了解的是,修复应用程序不仅要懂得挑错误代码,还需要出色的解决问题能力。比如,解决用户的发票不能下载的问题,不需要花费一天的时间来开发生成PDF文件的功能,只要简单的将页面设置成可打印即可。有时一条链接比一个星期的编程更能解决问题,而一个只知道写代码的程序员很难想到这样的捷径。

尽管目前有各种各样的测试工具,但测试对开发者来说依旧是一个奇妙的盲点。开发者应该学会使用单元测试、Selenium、负载测试和像Xhprof这样的分析工具。还应该学会使用一些性能检测工具,比如NewRelic,这些工具可以帮助你保持应用程序尽量少的占用内存。

调错也是开发中一个重点环节。因此,开发者们不仅要学会运用调错工具,还要知道如何为一个问题调错——我对Michael Greer的清单做一点关于调错的补充:

“急躁”:忽略那些无关紧要的问题,将时间用在解决真正的问题上

以上就是一些基础原则,开发者要学会抓住主要,忽略次要。真正的开发高手不看代码就能找出问题。不幸的是,许多人容易盲目的对一个无关紧要的问题推敲数十小时甚至好几天,解决一个问题也要用同样的方法试验十多次。



7.  用户需求

作为开发者,要懂得其他人的真正需求。你可以尽情享受编码带给自己的乐趣,但与此同时要清楚所有的代码都是有用的。

开发者们需要了解业务、操作和业务流程,这些会有对开发工作很有帮助。只有懂得这些,开发者才可以开发出符合用户要求的产品。一些开发者能显示出不同寻常的生产力,不仅由于他们快速的编码能力和渊博的堆栈知识,更大的原因是他们懂得用户真正的需求。

回到我最初的观点,现在的开发变得越来越容易,对于开发人员来说市场也变得更有竞争力了。想要更加出色,就要懂得业务需求、开发出让客户满意的产品。因此,开发者应该关注市场。

懂得数据如何随时间变化。以开发者的角度考虑,这些数据应随着目前流行的或即将流行的技术一起改变。这样看来,当你的客户提出一个新点子时,应该考虑到用户的实际需求,并且提前做好预算。(相反,最坏的情况是,开发者宣称他们的新技术可以解决所有问题。)

开发者们需要掌握很多方面——比如了解终端数据库的每个领域,如果数据发生改变,客户端会如何显示?有没有更好的方法解决问题?数据库管理员们往往认为,外界对数据库的反映很糟糕,但其实是他们展现给了外界一个很糟糕的数据库。这个世界充满了混乱和不可思议的情况,数据库管理员们一定要学会如何应对。

8.  绘图和书写

绘图是最直接的描述事物的途径。开发者们必须有能力将他们的构想在白板、纸上展现出来。

优秀的开发者要能通过纸上绘制原型图来表述清楚意图。如果开发者只会点头、空口谈论或是只会使用编辑器演示,那么很难取得别人的信任。

最好的代码从速成的绘画原型开始,多次失败可以让你成功的更快。

9.  享受乐趣

如果要你花费数十小时去解决一个问题,你会怎么对待?

学会享受这种过程——即使这只是一般的工作。作为开发者,最失败的态度就是对团队的工作毫无兴趣。遗憾的是这样的情况很普遍,发生这种情况往往是由于开发者们没有把自己视为团队的一员。(热忱的程序员会使自己“在工作中得到更多的乐趣”,你也可以试试)

Web和应用程序的开发仍然属于新兴领域,计算机技术的发展需要更多的高级开发者。开发者们不能满足于现状,需要尽快投入到高级开发行列中,提升开发工作的效率。

10.  保持锐气

这是我要说的最后一件重要的事情:

保持锐气,寻求竞争,无论到哪个团队都成为最挑剔的那个。

团队中最挑剔的、也最惹人讨厌的开发者往往是开发能力最强的角色,而其他人往往满足于现状。如果团队中缺乏这些高要求就很容易造成团队进度缓慢、竞争力下降。提高自身要求是一种很好的习惯。

开发者们还可以通过工作以外的项目获得更多的经验,并且学会总结在这些项目中得到的反馈和批评。现在得到的批评越多,将来的批评就越少。当有一天你开始对别人提出的要求进行更全面的考虑,那时你就成为了炙手可热的高级开发者了。

英文原文:10 things web developers must know to become truly amazing
  • 大小: 225.3 KB
  • 大小: 67.2 KB
  • 大小: 23.5 KB
13
1
评论 共 8 条 请登录后发表评论
8 楼 gaoyongbo026 2012-09-14 13:09
一家之言,狭隘,不靠谱
7 楼 TheMatrix 2012-09-13 10:11
天你开始对别人提出的要求进行更全面的考虑,那时你就成为了炙手可热的高级开发者了。
cosmo1987 写道
“懒惰”:拒绝两次做同一件事情——写一个脚本或算法来实现
“懦弱”:经常测试,担心过载和代码影响
“鲁莽”:经常尝试新鲜事物

为什么要用贬义词呢??

“聪明”:拒绝两次做同一件事情——写一个脚本或算法来实现
“严谨”:经常测试,担心过载和代码影响
“创新”:经常尝试新鲜事物

用引号嘛,更体现出可爱!
6 楼 jss 2012-09-12 11:48
整个一项目经理或产品经理的要求。公司还要这2个位置干嘛!!
5 楼 mfkvfn 2012-09-12 10:38
这些对天朝的子民都不适用。
4 楼 iwangxiaodong 2012-09-12 09:30
Web开发基础特别重要,是区分新手和优秀者的分水岭!
3 楼 ineye 2012-09-12 09:28
下面的这些词很好。
2 楼 我是男超人 2012-09-12 08:55
我国不好实现最挑剔的那个.
1 楼 cosmo1987 2012-09-11 20:44
“懒惰”:拒绝两次做同一件事情——写一个脚本或算法来实现
“懦弱”:经常测试,担心过载和代码影响
“鲁莽”:经常尝试新鲜事物

为什么要用贬义词呢??

“聪明”:拒绝两次做同一件事情——写一个脚本或算法来实现
“严谨”:经常测试,担心过载和代码影响
“创新”:经常尝试新鲜事物

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • struts2文件下载(解决了中文乱码问题)

    Myeclipse 6.5, JDK1.6,Tomcat 6.0 未解决点击取消报错的问题,可能是jdk版本问题

  • Myeclipse 6.5 优化

    1、取消自动validation validation有一堆,什么xml、jsp、jsf、...windows–>perferences–>MyEclipse Enterprise Workbench–>Validation 除开Manual下面的复选框全部选中之外,其他全部不选。 2、取消Eclipse拼写检

  • 在MyEclipse6.5中配置fckeditor

    开发环境: IDE:MyEclipse6.5 框架:Struts2+spring+hibernate <br />步骤: 1. 在fckeditor的官方网站http://ckeditor.com/download下载FCKeditor_2.5.1.zip和FCKeditor-2.3.zip(for ...

  • 如何配置JSP中的FCKeditor编辑器(IDE:MyEclipse 6.5)

    IDE:MyEclipse6.5 框架:Struts2+spring+hibernate 步骤: 1. 在fckeditor的官方网站http://ckeditor.com/download下载FCKeditor_2.5.1.zip和FCKeditor-2.3.zip(for java),版本不同内容不同 2. 在...

  • MyEclipse详细使用教程

    第一部分MyEclipse的基本使用 一.提示:MyEclipse的透视图按钮:可以切换不同的透视图(位于右上角) 1.建立一个工程 ----File—new—project—选项含有Javaproject,webproject等等—输入工程名字如myproject,...

  • JSP学习笔记(六十六):struts2中解决freemarker乱码的问题

    开发过程中,我对struts2的s:component标签情有独钟,对于需要重复构建的内容,使用s:...我用的IDE是MyEclipse6.5,使用的是默认的GBK编码:可以在这里查看:Window->Preferences->Workspace->Text fi...

  • Struts2_初识与准备

    Struts2_初识与准备 ...1.初识struts2配置文件 (1).web.xml文件  主要完成对StrutsPrepareAndExecuteFilter的配置(在以前的版本中是对FilterDispatcher配置,新版本同样支持用FilterDispatcher

  • struts2.1.6教程一、准备工作及实例

    1.解压struts-2.1.6-all.zip apps目录:struts2自带的例子程序 docs目录:官方文档。 lib 目录:存放所有jar文件。 Src 目录:源文%件存放地 2.六个基本包 struts2-core-2.1.6.jar :开发的核心类库 ...

  • MyEclipse:使用教程

    第一部分MyEclipse的基本使用一.提示:MyEclipse的透视图按钮:可以切换不同的透视图(位于右上角)1.建立一个工程----File—new—project---选项含有Javaproject,webproject等等—输入工程名字如myproject,其他...

  • 《MyEclipse 6 Java 开发中文教程》前10章

    1.7.2.3 使用ALL In ONE 版本制作MyEclipse绿色版 40 1.7.3 运行 41 1.8 Eclipse运行出错的疑难解答 41 1.9 使用高级进程管理器来管理Java进程 44 1.10小结 45 第二章 开发第一个Java应用程序 46 2.1 介绍 46 2.2 ...

  • Java后台框架篇--Struts2.0简单使用

    Struts2的简单使用 一、准备工作及实例 1.解压struts-2.1.6-all.zip apps目录:struts2自带的例子程序 docs目录:官方文档。 lib 目录:存放所有jar文件。 Src 目录:源文件存放地 2.六个基本包 struts2-core-2.1.6...

  • struts2文件上传相关资料收集整合

    前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题, 所以今天我们就来讨论一下这个问题。实现原理Struts 2是通过Commons FileUpload文件上传。Commons FileUpload通过将HTTP的数据保存到临时文件夹,...

  • struts2 的详细介绍

    一、准备工作及实例;1.解压struts-2.1.6-all.zip;apps目录:struts2自带的例子程序;docs目录:官方文档;lib目录:存放所有jar文件;Src目录:源文件存放地;2.六个基本包的;struts2-core-2.1.6.jar:开;...

  • Struts准备工作及实例

    准备工作及实例 1.解压struts-2.1.6-all.zip apps目录:struts2自带的例子程序docs目录:官方文档。 lib 目录:存放所有jar文件。 Src 目录:源文件存放地 2.六个基本包 struts2-core-2.1.6.jar :开发的核心...

  • 嵌入式虚拟机_物联网应用_EVM_1741161865.zip

    物联网实战项目

  • Matlab实现PSO-LSTM粒子群算法优化长短期记忆神经网络的数据多输入分类预测(含模型描述及示例代码)

    内容概要:文章介绍了基于Matlab的PSO-LSTM(粒子群算法优化长短期记忆神经网络)实现多输入分类预测的完整流程。针对大数据时代背景下金融、医疗、能源等行业面临的多变量时序数据分析挑战,传统机器学习方法难以有效捕捉数据间的时序依赖性和长期依赖关系。LSTM虽能很好应对长期依赖性问题,却因自身超参数优化难题限制性能发挥。为此,文中提出了融合PSO与LSTM的新思路。通过粒子群优化算法自动化选取LSTM的最优超参数配置,在提高预测精度的同时,加速模型训练过程。项目详细展示了该方法在金融预测、气象预报等多个领域的应用前景,并用具体代码实例演示了如何设计PSO-LSTM模型,其中包括输入层接收多输入特征、经由PSO优化超参数设定再进入LSTM层完成最终预测输出。 适用人群:从事机器学习、深度学习研究的专业人士或研究生,尤其是专注于时间序列数据挖掘以及希望了解如何利用进化算法(如PSO)优化神经网络模型的研究人员。 使用场景及目标:①对于具有多维度时序特性的数据集,本模型可用于精准分类预测任务;②旨在为不同行业的分析师提供一种高效的工具去解决实际问题中复杂的时变关系分析;③通过案例代码的学习使开发者掌握创建自己的PSO-LSTM模型的技术,从而实现在各自专业领域的高准确性预测。 其他说明:需要注意的是,在具体实施PSO-LSTM算法过程中可能会遇到诸如粒子群算法的收敛问题、LSTM训练中的梯度管理以及数据集质量问题等挑战,文中提及可通过改进优化策略和加强前期准备工作予以解决。此外,由于计算成本较高,还需考虑硬件设施是否足够支撑复杂运算需求。

  • 三菱FX5U PLC与台达DT330温控器通讯程序:实现设定温度、读取温度及输出启停控制功能的稳定可靠解决方案,三菱FX5U与台达DT330温控器通讯程序详解:通过PLC与触摸屏实现精确温度控制与启停

    三菱FX5U PLC与台达DT330温控器通讯程序:实现设定温度、读取温度及输出启停控制功能的稳定可靠解决方案,三菱FX5U与台达DT330温控器通讯程序详解:通过PLC与触摸屏实现精确温度控制与启停操作,三菱FX5U与台达DT330温控器通讯程序+输出启停控制(SL5U-9) 功能:通过三菱FX5U本体485口,结合触摸屏网口,实现对台达DT330温控器 设定温度,读取温度,输出启停控制。 反应灵敏,通讯稳定可靠。 器件:三菱FX5U PLC,台达DT330温控器,昆仑通态TPC7022NI触摸屏。 说明:的是程序,带注释,带温控器手册,接线,参数设置都提供。 通讯稳定可靠,实用有效。 ,三菱FX5U; 通讯程序; 输出启停控制; 温度控制; 触摸屏接口; 温控器手册; 参数设置。,三菱FX5U与台达DT330温控器通讯启停控制程序

  • 无人机辅助认知无线传感网络中协作频谱感知的Python实现(含详细代码及解释)

    内容概要:本文介绍了论文“Efficient Cooperative Spectrum Sensing in UAV-Assisted Cognitive Wireless Sensor Networks”的复现实现,重点涉及系统模型建立、信号检测与投票规则的实现及其仿真实验。文章提供了四个关键组成部分的具体实现步骤:首先是参数设置,包括仿真参数的配置;接着是信号模型与能量检测,涵盖信号的存在与否的判定逻辑;第三部分是实现四种投票规则(CVR、SVR、S1 和 DS1)的细节;最后一部分展示了仿真实验的方法,并通过绘制检测性能图和样本大小图来比较不同投票规则的效用。 适用人群:适用于具有基本编程能力并且对无线传感网络频谱感知研究感兴趣的科研人员和技术爱好者。 使用场景及目标: ① 探索不同频谱感知投票规则的表现; ② 提供具体的编程范例帮助理解和实施合作频谱感知道; ③ 分析多种投票算法下的最优方案; ④ 评估无人机辅助环境下频谱检测的实际效果。 其他说明:本文不仅实现了原始论文的技术路线,还探讨了一些可能的改进方向,如增强信号模型、分析投票规则复杂度、参数灵敏性分析、引入机器学

  • win32汇编环境,窗口程序使用树形视图示例二

    win32汇编环境,窗口程序使用树形视图示例二

  • 【公司年会抽奖程序html开箱下载即用】

    公司年会抽奖程序可定制化的抽奖应用,炫酷3D球体,可用于年会抽奖等活动,支持奖品、人员、界面、图片音乐配置。

Global site tag (gtag.js) - Google Analytics