Jeff Darcy:
编程不仅仅是写代码,更是在解决疑问。下面是一个程序员有必要完结的基本使命。
1.定义疑问(需求和限制)
2.定义解决计划(算法和数据结构)
3.用代码写出计划
4.验证并测验是不是准确
许多人往往第3点做的很好,但疏忽了别的,由于到目前为止第3点是最简略的。当然,一个优秀的程序员也许只需凭借他们的常识和经历,乃至都不需求写新的代码就能解决疑问。所以在一个团队中,一个经历丰富的程序员奉献是很大的,由于他们能协助别的人解决非编码使命,哪怕使命再深重、窍门再繁多,也不在话下。
一旦咱们熟练掌握了咱们的营生东西,就能更深层次地了解一些编程范畴的专业疑问。程序员要想冠以“巨大”这个形容词,就得做到在任何情况下都能运用手头的技能和办法到达方针,而不仅仅是会编程就可以的。
……
Adrian Ho :
Jeff Darcy现已涵盖了差不多2/3的内容,下面我从他没有涉及到的方面再具体地讲讲这些窍门。
不要逃避客户。
我见过许多程序员很害怕与那些极品客户沟通,有的乃至到了近乎病态的程度。作为个人,我十分怜惜他们……可是,我也会提示他们:“客户也是人,也有他们的忧虑、缺点和期望。他们也是仅有能告诉你编程终极疑问的人:我究竟要解决啥疑问?”这些都是数据。上面Jeff现已谈到过了,可是我觉得它值得咱们的注重。由于咱们在处理用户数据时要用到的简直一切算法,以及挑选的数据结构反过来则会变成完结算法的最大束缚。
这也是我想说的榜首点,疑问的具体信息要能减小数据结构的挑选规模,这么就不用老是由于无法明确地思考疑问而致使在数据结构挑选上浪费时刻,乃至是项目延时和超出预算。
付你薪酬是为了能有产出,而不是让你玩的。
国际上有两种类型的程序员:一种是能在合理的时刻内(包含运转和交给时刻),能写出可解决现实疑问的代码的程序员,还有一种程序员则相反!在这里,我将前者称之为“兢兢业业的程序员”,后者是“走运的寄生虫”。我想大多数人都不情愿自个是一只“走运的寄生虫”吧。
如今,咱们差不多每周都会涉及到新的编程言语、并行编程库、NoSQL数据库等。如果是“兢兢业业的程序员”,毫无疑问有用榜首。即便是发现最新出来的点子十分合适项目的某个有些,也会先预估好时刻,否则会致使加班加点赶进展……再则捕获并修正里边的bug也需求时刻,这些不可避免地都会影响程序的完结进展。(也许会是原先估计时刻的双倍,搞不好乃至双倍还远远不够。)
我即是这么做的,我信任许多人也会。啥,你现已写好了客户端 – 服务器的代码?那还不够!你还得持续重复检查,看看会发作啥?会不会崩溃?“兢兢业业的程序员”会让这一切都不会发作。
如今互联网的影响现已渗透到咱们的方方面面。我记住有一篇文章中谈到这么一个观点“带宽是无限制的”,我十分附和。可是许多人却并没有认识到这一点,然后我首先冲锋陷阵,运用一些简略的算法却得出了一个令人尴尬的定论,那即是咱们的预期使用量会超出网络的最大理论容量。没人情愿把这些告诉给管理层,由于从数学上和物理上来讲这意味着他们都不也许完结自个的承诺。这个时分,我在心里会默默地口出脏言“你妹的,说话跟放屁相同。”
可是我仅有能说的却是……“shit!”