这篇译文来自Stack Exchange上的一个提问,在许多开发者中都产生了共鸣。很多时候,作为程序员的我们,在日常工作中并没有很多时间用在编写代码上,而是不断的在维护某个年代久远的系统,不断修正Bug,维护的项目会越来越多。如果我们希望能改进已有的代码,对系统做下重构,有时候并不能得到公司的支持。
提问者声称自己的报酬非常低,但却在做整个开发团队级别的工作,这到底正常吗?难道所有的开发者都是这样的?以下两个回复获得了大多数开发者的认同,想学习下如何同公司高层沟通的技巧吗?
TiredProgrammer 6月12日:
我在一家中等规模的公司里做Web开发。刚开始的时候,我的任务是对一个已有的应用做扩展(这个项目的代码很糟糕,是由多个程序员花了好几年时间开发的,他们用不同的方法处理相同的任务,而且基本上没什么结构可言)。
当我成功的按照需求完成了对应用的扩展后,公司让我全职负责对这个应用的维护工作。这当然没问题,或许只有我是这么想的。但是公司却禁止我去改进已有的代码,只让我集中精力解决bug——如果有bug报告的话。
从那时起,我又陆续接手了3个类似这样的项目,现在我都得一起维护。之后,我又被委任了4个项目——这次可以从头开始创建整个应用,当然了,这些新开发的项目我也得去维护。
现在,我快被每日不断的用户邮件给搞疯了,我所负责维护的每一个应用都是这样。公司希望我能直接处理这些邮件中提到的问题,同时又丢给我2个新项目(这之后已经有5个项目在排队等着了)。杯具的是,对于我自己编写的代码,我还没有收到任何bug报告,只是偶尔会有那么一些脑残要求希望彻底颠覆原来的需求。
无论如何,这正常吗?在我看来,我一个人做的工作顶得上一整个开发团队了。我最初预想的可不是这样的啊,我是白痴吗?我猜这个帖子可能会引起网上的大论战,但请告诉我,并不是每一个程序员都遇到了我这种情况。P.S. 我的薪水几乎和超市的收银员一样多,如果不比他们低的话。(亮点…)
acattle最后编辑于6月13日:
我在实习的时候也发现有很多时间都花在解bug上了。你必须意识到作为初级程序员,你没法获得更有挑战性的工作,你得从没人愿意干的脏活累活干起。这当然是不幸的,但这条规律适用于所有的工作。
另外,你得认识到一点,对于公司来说,能正常工作的代码远比清晰的代码更重要。从你所在的公司的角度来看,修改已有的代码库是在浪费金钱,你不过是在重做已有的东西,而且还可能会带来更多潜在的错误。通常这种类型的公司都不是计算机/软件公司,因此高层都缺乏足够的技术背景来理解你要做的这种大改动的意义。也就是说,如果你所在的公司是技术型公司,由懂技术的人来管理,他们能够理解好的代码所带来的价值的话,你可能还会有更多的余地,尽管有时候你还是需要选择一下战场(毕竟,生意的主要目的还是为了赚钱)。
那就是说,丢下你现在的工作而期望得到更有意义的工作是不合理的。同样令人遗憾的是,你不得不同时处理由各个不同的项目经理针对各个项目提出的要求。
作为一名程序员,事实就是比起你自己从头写起代码的时间,你要花费更多的时间在维护和修改其他人的代码上。如果这对你来说难以接受,也许你应该只把开发当成一项爱好,然后选择别的行业谋生。如果你对维护代码没有什么异议,但感觉工作并没有使自己发挥出全部的功效,或者觉得自己快被工作榨干了,那么你需要同你的经理好好探讨一下你的工作模式。如果你面临的问题比这个更严重,或者如果你感觉经理并不知道如何有效的根据你的技能来管理你的工作,那么考虑换个新公司应该是个好主意。根据你提到的低工资,跳槽可能是你现在最好的选择。
Péter Török最后编辑于6月13日:
看起来似乎是管理层在任务优先级的选择和工作量的管理上出了问题。你应该同你的经理谈谈,让他们知道你的工作已经过载了,如果每个人都跑过来烦你,让你完成他们马上想达成的要求,这样你就无法继续有效的工作了。那样会让你从一个任务跳到另一个任务,浪费了大量的时间在切换思维上。对于高效率的软件开发工作来说,你应该只全身心投入到一项任务中去。有越多的中断和干扰,你就要花越多的时间在环境切换上。有研究显示,大约15分钟的时间能让你进入专注的状态,此时你的思维是最有效率的。如果你每15分钟被中断一次,你永远也无法专注下去,这对你和公司都是很大的浪费。
因此你应该试着和你的经理沟通,达成一个更加合理的工作模式。这应该包括对任务进行优先级划分,并在某种程度上提前进行规划。所有的用户需求都应该按照优先级的顺序记录在列表上。并且,优先级不应该由需求的发起者来指定(自然地,大家都会认为自己的需求是世界上最重要的),也不能由你自己来定,而应该由某个拥有足够多的商业知识以及对你维护的一系列产品有着全局认识的人来指定(产品经理)。理想情况下,所有的需求请求都应该被录入到问题追踪系统如Jira或者Mantis上,或者至少给产品经理发送邮件,而不是直接发给你。应该由他/她去负责处理 “为什么我的需求还没有完成?”这样的用户抱怨,而让你集中精力在开发工作上。如果这种情况难以实现的话,当你在处理新的需求时,你至少要和经理沟通协商出一段时间,这段时间内你不能被打扰,只负责开发工作。
如果上面的做法可行,下一步就应该是提前做好规划。比如,估计一下完成最高优先级的任务需要多少时间,然后将你的时间划分为各个“冲刺阶段”,每个阶段可能是1周或好几周时间,为你的下一个冲刺阶段安排满足够多的任务。你可能还希望保留一段时间以应对紧急的需求,但其余的都可以提前规划好。你也可能更希望将不同项目的工作划分到不同的时间点上,比如,项目A就安排在周1解决,周2到周3是项目B,周4上午可以做项目C,下午就可以做项目D等等,以此进一步的减少任务间的切换。按照这种方式,你对于未来1周或几周的工作任务就有了大致粗略的了解。此外,这也为你的客户提供了一个路线图:他们可以了解到他们的请求何时可以得到解决。这里你可能不会想对你的经理提到“敏捷”这个词——这基本上就是敏捷开发,但有些人并不清楚敏捷开发到底是什么,他们就是一味地反对。
尽管你现在的职位看起来报酬很低,可是你维护的项目越多,你就越有资本来沟通协商。对于公司来说,招一个新人进来给他培训,再让他维护所有这些项目需要花费相当长的时间(时间就是金钱)。你可以正当的指出你的代码比原有的部分要好的多,所以从公司的方面来说,他们没法轻易的以同样的价钱雇到一个合适的候选者来完成同样的工作。更不用说如果他们不改善工作条件的话,他们雇到的下一个家伙很快也会像你一样受够了就退出不干了。试着让公司懂得让你快乐的留在公司对公司是最有益的。这会给你一些资本来和公司协商以上的情况,并要求加薪。
你究竟有多少谈判的资本——这是个大问题。管理层可能会也可能不会对你的请求有足够的尊重。但如果你把握的够好的话,你就有机会。如果他们拒绝,你总是可以再去寻找更好的工作。这种情况对于每个职场菜鸟来说并不相同,虽然(很悲催的)你的经历是相当典型的。但是确实总是有更好的工作地点在那等着。工作场所的好坏同地理位置的关系联系并不大,但给我的感觉是,在欧洲北部你可以获得的机会比平均水平要高一些。因此,在你完全受够之前,如果你无法显著改善现在的工作条件,你应该马上开始寻找新的工作机会。骑驴找马总是很好的,所以你不要因为需要用钱就立即接受第一份offer。最终你总会找到一个更好的去处的。
眼看自己大学毕业后都快12年了,也快2个孩子的爸爸了,但是有时候还是会有不少不安全的感觉产生。都快奔35了,技术也过得去,收入其实也很稳定,但是偶尔还是会有迷茫的时候,最近有几个朋友,也发QQ聊天信息,同样有类似的感觉。也稍微揣摩了一下,为啥会有这样的感觉产生?
其实软件开发也是一个行业,当厨师的也是一个行业,一个厨师干了10多年后,会不会变成国家主席?很可能还是厨师,甚至有有可能一辈子都是厨师,软件开发人员也是一个行业而已,也是为人民服务而已,估计厨师也会有迷茫的时候,我们也照样会有迷茫的时候,05年左右在上海做日本外包时,还真有同事是厨师出身的。
年轻时:
01:年轻时,目标很简单,就是学技术,当时学PHP前后耗费了1-2年,接着学C#,SQLServer,Oracle耗费了前后10年接近了,有目标的人就不迷茫,就是一个字想学习知识。
02:年轻时,欲望比较少,一个月能赚5000元的工资就很开心,生活没任何压力身体也很壮实,就也不会有啥负担,一心还是想着学好技术,找好单位,拿高薪。
03:年轻时,可以有很多空想,就是狗屁不是,也可以抱有很多美好的理想,也可以做白日梦。
年纪大了后:
01:打工总会有一个瓶颈,好单位也不是天天招聘,他们的业务也是有瓶颈,等你水平提高了,年龄也太大了,没啥竞争优势了,当初想进入的单位都不会招聘40岁的老头了。
02:年纪大了,身体也开始不行了,要成家立业,养孩子,养老婆,父母年纪也大了,可能身体也更不行了,很可能也需要赡养了,生活的各种开支,不是小几千能搞定的。
03:学了一大堆知识后未必都能转换成RMB,不转换成RMB,你的很多需求是得不到满足,你看很多人开着好车,住着豪宅,身边女人多多,一看自己也快奔40了,2手空空。
04:很多年轻时的梦想实现了也未必能变成RMB,以前想架构一个完美的开发框架,结果努力了10年,想出售也很难遇到各种困难,就这么耗费掉了10年了。
05:10年里会发现很多曾经的朋友成功了,但是你可能还是一个默默无闻的打工者,甚至能看到一直到到老的时候会怎么样?很可能打工一辈子。
06:做技术的失业了就真失业了,啥也没了,没人给按时发工资了,连社保都都没了,不干活了就很可能没任何稳定收入了,没任何安全感了。
07:有些行业越老越值钱,客户也越来越多,技术人员的客户都是老板的,越老越容易走下坡路,精力,能力都会下降,干劲更容易下降。
08:老板也不是印钞机,老板也需要成本控制,所以尽量不会雇佣预算很高的员工,宁可雇佣在预算范围内的员工,谁都想拿10万一个与,但是老板赚不来那么多客户的钱。
调整心态:
01:人绝大部分是庸俗的普通人,不是每个人都能出人头地,1%不到的人相对能得到成功,99%甚至更多的人,是普通人一辈子。
02:一般牛人的才华35岁前就体现出来了,35过了也是俗人的,再过几年就爆发不来,也很少,性格已经成型了,基本上可以过的安稳的日子就可以了。
03:不要总是跟成功人士比,偶尔也向下看看,看看扫地的,看看服务员,看看人民公仆,多少心里会有一些安慰。
04:人活着不只是为了赚钱,身体好,家庭幸福,感情顺利,孩子健康,父母健康,同事关系和睦,都是宝贵的财富。
05:人生其实很短暂的,一晃10年就过去了,学会好好过生活,调节好每一天,想想要解放生活在水深火热中韩国的朝鲜人民军队,吃不饱饭,我们也幸福很多了。
事实:
01:年轻的时候没付出,年纪大了也有好的收成是很难的,除非你购买彩票中奖了,但是你最起码为了买彩票也得付出一些劳动,所以没有白来的成功白来的收获。
02:世界很大社会在发展,到处需要技术服务,我们做技术的就是为社会技术需要做辛苦劳动而已,所以只要社会安定团结,我们就不用太愁没饭吃。
03:每个人都想成功,做医生的难道不想巨大成功?做老师的难道不想巨大成功?谁都想有巨大的成功,但是,只有一个院长,一个校长,其他都是普通人。
04:水平没有,让你当个部门经理,没几天也得被大家罢免,水平没有,给你1000个人公司,第2个月,你就发不出工资,1年不到就倒闭。
05:人都很迷茫,迷茫的时候千万别吸毒、别赌博,别沉溺与网络游戏,迷茫的时候适当的调节一下心里,看看健康的电影,听听音乐,找几个朋友聊聊天。
扫地最厉害的人是谁?很可能顶多是扫地组的组长,例如杭州西湖区环境保护临时工中的小组长,种地种最厉害的?炒菜炒最厉害的?那一样,写程序最厉害的,很可能就是项目组组长,人嘛都想老板,但是都不想付出老板的艰辛。
真想巨大成功,就走出来自己干,就知道有多难打工还是很舒服每个月按时发工资,压力也是大家一起承担,周末还可以休息,晚上可能也不用加班。
迷茫的时候,看看我的博客,就会好很多了。
幸福有很多种类:
1:你有年轻漂亮的老婆。
2:你有健康聪明的小宝宝。
3:你有一个强壮的身体。
4:你会唱歌跳舞多多才多艺。
5:你喜欢钓鱼,绣花。
6:吉日嘎拉喜欢写几篇软文,看看别人的回复就其乐无穷,偶尔看看网络上美女图片,看看美国大片,都是其乐无穷的事情,偶尔鼓励一下小朋友,跟老朋友聚聚,吃吃喝喝都是很快乐很幸福的。
人人都想当比尔盖茨,可惜你没那样的妈妈(IBM的高级主管?),也没那样的爸爸(纽约著名律师?),今天也考不上那样的大学(哈佛很好考吗?),更不可能支付那么高的费用购买别人的软件产品(按当年的美元计算,当年一个月工资多少,现在多少,按当年的汇率折算,30-40年后现在让你支付这些费用,也很可能买不起当年的DOS什么的版权)。
成功很多时候不是偶然的,很多是必然的,有几个国家领导人是普通老百姓?都是高干子女居多。
从农村的大山沟里能爬出来到中国的人间天堂定居生活也知足了,知足常乐,不能跟自己过不去。
将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。
在当今的开发环境之下,快即是好。
当今诸如“快速应用开发 ”,“敏捷软件开发 ”以及“异步JavaScript和XML “(如今我们甚至无法耐心地等待网页的重新载入)等流行词汇和术语让你见识到究竟身处于怎样一个快节奏的世界当中。
但是做事赶时间并不意味着你工作要加班加点——你工作时需要动些脑筋。此文,将为你提供缩短网页应用开发的十大省时技巧。
一、使用框架
框架提取出了常规代码,给你编写网页应用提供了一个基本的构造和基础。
框架中一个非常典型的例子就是Rails,Rails就是Ruby编程语言的一个网页应用开发框架。通过为你提供预先编写好的代码程序包(举个例子,像用户输入验证方式)——你不仅仅节省了用Ruby编写你自己代码的时间——你也很清楚这些程序包已经受住了其他开发人员的测试以及检验,这可以在广度测试时为你减少不少麻烦,另外还可以避免一些因缺少测试而导致潜在的漏洞。
同样的好处对于使用诸如MooTools的JavaScript框架也是适用的。这些框架提供给你的一些类方法都是由核心开发者和社区提供,并在诸多浏览器下经受广泛测试的考验。客户端脚本语言框架还有jQuery,Prototype JS,以及YUI。如果你想用一些非主流的JS框架,你可以看看这个极具潜力的JavaScript框架 清单。
对于服务器端的框架,你可以考虑CakePHP ,CodeIgniter ,Zend ,或者symphony。如果你喜欢VB以及C#之类微软支持的语言,你可以考虑.Net框架 。
你甚至是可以使用像960Grid 或者BluePrint这样的CSS框架来快速编写和规范你自己风格的页面结构。
二、使用集成开发环境
当然,你可以只用一个Notepad这样的文本编辑器和FTP就可创建网页应用及其页面。但是我想大多数人都认为,这并不是一个可用在开发复杂和健壮网站项目之上的明智方法。
集成开发环境 (IDE),为你准备了创建和管理大型网站项目所需要的工具集合。集成开发环境的功能一直在变,但它们都有如下一些常见的功能
1、项目管理以及团队协作功能。
2、调试以及诊断功能。
3、语法提示以及自动完成功能(IDE会猜测你想写的语法)
4、语法高亮
5、内置FTP,能同步本地和远程主机上的文件
“IDE”这个词可能有些花哨,有些人还对此不太熟悉,但是大数据人应该听说过Adobe的Dreamweaver。Dreameweaver就可以看成是一个集成开发环境。因为它含有上面提到的一些功能,帮你更快的编写代码。(他通常适用于前端的制作。但是它也支持服务器端的语言,像PHP和ASP.NET)
如今网上有大量的IDE,你所要做的就是为你自己(或者你的团队)挑选一个。像一些流行的,功能齐全的IDE,如Eclipse, Komodo IDE, NetBeans, Visual Studio, 以及Aptana Studio.
三、适当的模块化
模块化是创建易于维护和扩展复杂应用的关键之所在。本质上这意味着代码要以小的部件来编写,而不是将所有代码写成一个大文件。
模块化开头有其自身的时间成本(因为你必须在设计文件结构方面花费不少心思。)但是,当你需要变更某一部件或者想要扩展你的应用时,这会为你节省掉不少时间。
模块化也使得bug限制在模块之内,如果有地方发生问题,你会很快的找到问题所在。
但是模块化的滥用会导致代码的臃肿和太多不必要的include语句,这会极大的拖慢整个应用的运行速度。因此在模块化程度过高和过低之间,我们需要到一个好的平衡点。
一些模块化设计模式就包含MVC 和PAC模式。
四、使用浏览器工具高效排除前端疑难问题
没有处理比跨浏览器的兼容和解析问题更糟糕的事情了。这杆子事会使你疯掉,它给你带来的挫败感差不多让你觉得不砸掉点东西难解心头之恨。但是集成进浏览器的调试工具会使得寻找和诊断前端问题变得分为迅速和高效。
Firebug 和Web Developer 是绝对必要的省时利器,它们已经成了前端网页开发者的必备工具。Firbug可以轻松的查看DOM,以了解其原理,以及可以在运行中调整CSS/HTML/JS, 除此之外,也可以帮你调试和注释(profile)你的JavaScrpt代码,帮你弄起初究竟是什么状况导致了你的脚本运行中断。Web Developer给你提供了一系列有用的工具,像有的工具可以让你点击一个页面元素就可以看到有哪些样式声明影响了该元素,也可以使你很方便的禁用 JavaScript和CSS,让你了解在没有JavaScript或者CSS的情况下, 你的页面是如何工作的。
如果你需要在IE浏览器下调试,你可以尝试尝试IE开发者工具条 。它在功能上跟Firebug和Web Developer很相似。如果你想找更多的集成在浏览器内的IE调试工具来帮你i节省调试时间,你可以点击这个链接。
五、代码重用
如果你发现你自己老是在做重复的事情,这时候你应该反思反思你的代码结构了。考虑学习一下常见的设计模式它会帮助你创建可重用的灵活的方法,函数,以及对象。
打个比方,如果,你需要频繁的链接到数据库,你可能需要创建一个数据库的访问类,来处理数据库的链接,查询以及数据的提交。
六、 在线协作以及追踪项目状态
实际上——你工作并不孤单。无论你是为一个开发团队工作或是为某人工作(这个人可能是你上司或者你的客户),你都应该充分享受在线协作和追踪项目状态说给你带来的好处。
你在行政性任务上花费的时间越少,或者在在无穷无尽的会议上花费的时间越少(或者,更糟的,是那种需要出差的面对面会议)——你在代码上花费的时间就越多。
像Basecamp, Lighthouse, 和activeCollab 这类工具就给你提供了一站式团队协作服务,让你随时追踪项目的状态,你也可以设置项目的目标和里程碑(milestones)——这样所有人就可以自动同步,为你省下频繁回复电子邮件的时间,你也无需在进度确认会议上花费大量无用时间。
这些工具l另外会帮助你区分事情轻重,确保了所有的事情都在一个集中的地方组织和记录下来。
七、代码的自动格式化和标准化
你需要将你的所有代码格式标准化,这样做不仅仅这是一个很好的习惯,而且日后你一旦需要回来看这些代码,这会帮你很快的理解这些代码。
代码的自动格式化可以让你一键格式化你所有的代码,而不是一行一行来做这事,这也确保了代码编写的一致性。自动的格式化也减少了手动修改产生错误的风险、
我们有许多工具来帮助我们做这事,很多是网络版的工具 。对于CSS而言,一个流行的开源解决方案就是CSSTidy (Clean CSS is an CSSTidy的在线版本)。对于HTML我们有HTML Tidy。
对于脚本,我们有PHP Source Code Formatter, Ruby Script Beautifier, 和Code Beautifier Plus (这个工具是用来格式化 C#, ActionScript, and Java).
八、在需求收集和规划阶段多花时间
预防远胜过补救。或许某些思想学派的人物强调不要在计划上浪费时间——确保你已经收集到了你需要知道的所有信息,在做功课方面花费必要时间依然是必要的。如果在需求收集方面没做足功课会导致功能泛滥(feature Creep) ,原因就是各种未曾预料到的功能需求
九、使用已经编写好的代码
古人以及帮我们发明了车轱辘,所以我们也没必要亲自再捣鼓出车轱辘来。如果在某个地方看到某个感兴趣的功能,其他人极有可能已经为你写好了代码(嗯,不仅仅是为你,而是为我们大家。)对于PHP而言, PHP Classes Repository为你提供了大批的类和脚本供你下载和使用。Hot Scripts则提供了其他语言的各种脚本。如果你只是想要一些小的代码段,你可以去devSnippets 上面淘淘宝。
注意:只有当你具备充足的经验,能分辨出好代码和差代码,上面的这个办法才会真正帮你大忙。否则你会发现你最终成品中代码bug丛生,书写混乱。
十、精简功能
你必须对网页应用的某些功能做一个评估,以判断在这个功能上面的时间投入是否值得。
你的用户真的需要一个并不经常更新的内容管理系统为每一个类别的文章提供一个自定义的RSS输出吗?你真的需要一个网站样式转换器来帮你检测到用户地理位置哪里,然后将网站呈现不同的风格。
编写网站功能就是一场艰苦的战斗 ,不要在对终端用户无用的功能上耗费开发时间,况且这些功能而且会使用户界面复杂化。
但凡从事互联网的人基本都会写几行html,用过Word的人用Dreamweaver也能做出规整的页面,所以大部分人会很自然地认为“页面的开发没什么技术含量,很简单”。不仅有这种普遍的认知,对从业者来说也有很多疑惑:做页面前端实现,没问题;兼容性,小case;图片集成,一直都在用……还能有什么问题?瓶颈啊、天花板啊、转型啊、出路啊就在从业者中广泛讨论。是不是真的没什么问题了呢?网易邮箱前端技术中心也设立好几年了,似乎有着讨论不完的话题,也经常会有一些新的想法让大家为之一振。那么页面开发还有哪些要求,还要做些什么,这里面的水有多深,让我们舀舀看。
在不同的时期对页面前端的看法似乎是多变的。在互联网早期的时候,小车还是比房子贵的,烧饼和粉丝还只是用来吃的,菊花还只是用来泡茶的。那时的页面设计风格相对单一,对应的页面需求比较简单,并且当时的浏览器也基本是IE6的天下,javascript也只是网页特效的代名词,HTML页面本身没有引起太多人的关注,似乎只要能用div甚至table加css辅助把图片定好位,把页面内容预留好就OK了,并且这种观念存在了很长一段时间。随着页面内容的丰富,设计风格的发展,交互复杂性的增加,AJAX的应用,浏览器的更新换代,又让大家重新对最基本的页面本身重视起来。然后热议的就是浏览器的兼容性,碰到问题最热衷的就是满网络搜索hack,顺便再骂骂IE6、7……当这些都做一遍后,似乎又遇到了瓶颈,又开始寻找出路。我们就从这个阶段开始说起。
实现效果图是最基本的工作
把视觉稿通过页面代码的方式表现出来包含了两个基本诉求:1.能够真实反映视觉稿;2.能够通过浏览器的兼容。这两个诉求的达成需要我们有追求细节的态度和一定的页面功底,能完成这两个内容就可以初步进入页面前端的从业者行列了,但这就代表着我们可以胜任页面开发的工作了?不,才刚刚开始!
与设计师的沟通和项目的参与
沟通很重要。先抛出几个问题:我们有没有和设计师探讨过某些效果对低端浏览器渲染效率影响比较大?有没有探讨过部分效果可以用CSS3实现从而使得结构更加简洁清晰?有没有在代码和视觉中寻追求过平衡?页面前端的开发向基本用户,编写的代码也直接作用在浏览器上,我们有义务对页面的稳定性和渲染效率负责。我们也经常碰到项目在总体进度压力下导致的设计与页面前端开发同步进行,这时更有必要尽量多地获取项目信息,了解我们还要做些什么,这些可以帮助我们充分考虑重用和框架拓展。
良好的页面结构
页面结构的编写好比盖房的地基建设,其好坏会直接影响到CSS代码的质量、js开发、后台开发还会影响到以后的页面拓展、迭代和页面调整。拿到视觉稿后,不要忙着动手开始,多观察思考。先分析布局,划分框架,然后规划结构,编写代码。特别在大型项目中,合理使用模块化的开发不论从整体进行还是拓展维护都有相当大的好处。
关于hack
很多同学在页面开发时上网搜索最多的就是hack了,是否我们完全要依赖hack来实现页面兼容性,答案是否定的。大家经常比喻IE6向我们撒了一个谎,结果我们要再撒一百个谎来圆这个谎。不否认IE6经常让我们口吐鲜血,但不代表我们用更多的“谎言”来弥补就可以心安理得。大部分情况下可以通过变换思路调整HTML结构,或使用一些虽然无法解释但相对安全的css来干掉hack。谁都无法预计使用hack什么时候会让我们栽一个大跟头。比如触发layout或position:relative就可以帮助解决很多IE6的问题。
优美的代码
现在很多web项目功能复杂,代码规模也会变得很庞大,如何更好地进行协同开发和维护是我们面临的一个问题。需要考虑完善统一的规划,还有要养成良好的代码开发习惯才会在面临各种情况时游刃有余。翻阅页面代码,看到合理的标签使用、良好的注释、清晰的代码结构、用意准确的css不仅犹如欣赏一个艺术品,更为下游开发和协同开发降低了不小的沟通成本,我们有什么理由不去这么做呢?举个反面例子:div滥用是现在比较典型的一个问题。数数看自己使用的标签有多少个呢?不同的语义都该使用对应的标签代码,特别是HTML5提供了更丰富的语义化标签,它们都苦苦地在等待战场上的冲锋号,让我们去解放它们吧!
无障碍页面开发
可访问性与易用性是非常主观且人性化的东西。普通人看上去上完美呈现的页面在特殊群体中不一定显得那么贴心。当盲人用读屏软件在页面某个区域内陷入循环时,我们应该感到内疚。只能说目前国内的网站对此的重视程度还远远不够,这就需要我们共同努力,让更多的人感受到我们的热情。
保障效率
作为项目开发中比较靠前的一环,页面开发可能需要尽早完成为项目争取时间,这就需要我们尽可能地提高效率。“工欲善其事,必先利其器”,除了实战经验和代码习惯的形成可以帮助我们提高效率外,想要提高对自己开发的进度掌控能力,还有很多辅助工具可以帮助我们进行页面开发。比如使用Less或Sass可以帮助我们拓展和组织CSS,大大提高CSS的编写效率增加了可维护性。比如可以通过zen coding的自动自动完成和自定义代码块让你可以剑指如飞。甚至还见过通过自定义输入法的代码块关键字来提升开发速度的。多多发掘一定会找到最合适自己使用的工具。
针对服务器的优化
页面开发也需要了解服务器的优化,尽量减小服务器负担。比如css sprite就是一个典型减小服务器请求数的例子。在网易邮箱的页面前端开发中大家不停地在做着各种优化,比如一直在寻求文件大小与服务器请求数的平衡;为了尽可能提高缓存利用率采用了补丁升级;对class名进行了混淆压缩避免命名过长的冗余;应用base64减少请求数量等等措施。这些都是综合权衡的结果,需要考虑各个方面整体优化。因为当页面访问量达到一定的数量级时,再小的一点优化都会达到可观的效果,再小的问题都可能会形成巨大的灾难。
拥抱HTML5
这是一个充满机会的时代,HTML5时代的来临伴随着移动互联网的兴起创造了更大的机会,还有太多的东西值得我们去学习去发现。 HTML5提供了丰富的JS API接口,需要我们去研究;CSS3的绚丽吸引了足够多的眼球,需要我们去研究;移动设备上如何开发更加适配的页面,需要我们去研究……
Stay Hungry, Stay Foolish
水是越舀越多了,却发现原来下面还深不见底,上面的内容越是深入研究就越会发现更多山川需要翻越。保持饥饿状态,用眼睛去努力发现发掘,不断丰富技能才能找到定位,突破瓶颈,正所谓“唯有高屋建瓴方可水到渠成”。形成本文是因为之前和同行讨论到瓶颈的问题,想给自己,给页面前端的同学一起找找定位,梳理一下思路。拿苹果CEO在斯坦福演讲的一句话“Stay Hungry, Stay Foolish”和大家共勉。
电脑故障 | ps教程 | 设计 |
创业 | seo | discuz |
word | 配置 | c# |
数据库 | mysql | asp |
ShopEx | html | JavaScript |
模板 | Joomla | PhotoShop |
CSS | PHP | WordPress |
ECShop | jQuery | 用户体验 |
新闻 | 读书 |