《我编程,我快乐》 摘抄

3 只会编程时不够的

   只思考在那种技术上投资是不够的。毕竟,技术知识一种商品。你不可能只掌握一种编程语言,或者只能够操作某种系统,然后把生意交给老板打理。如果他们只想找个懂代码的机器人,那不如雇个外国廉价的程序员。如果你想站稳脚跟,必须要深入了解你所处的领域。事实上,软件工程师不能只会开发软件,应该要成为这个业务领域的专家。

   或许你只是一个程序员,但是如果你能用客户所处行业的专业语言与他们交流,那这就是一项非常重要的技能。就像如果与你工作的人都真正了解软件开发是怎么回事,你会不会觉得一切都会变得更加得心应手呢?

    鉴于行业选择是非常重要的,那么选择在哪个公司、哪个领域工作对你来说也是重要的。如果你还没有仔细考虑过这个问题,那就现在开始思考吧。机遇每天都在流逝。就像利息马上就涨了,但你却把钱存在了一个低利率的死期账户里。把自身的发展限制在一个静止不前的行业里,可不是什么好的投资选择。

 

 

8 成为一名专家

   很多人认为专攻某种技术就简单地意味着不知道其他技术。软件开发界有很多这样肤浅的专业人士,这些人以“专业人士”为借口,只知道一门技术。

   那么,在软件界,什么样的人才能称得上是专业人士呢?我在招聘的时候找遍了每一个角落,寻找真正深刻了解Java编程和部署环境的人。我想要寻找的人是已经处理过我们工作中可能遇到的80%的问题,并且拥有则足够的知识来应付另外还未出现的20%问题。我需要的是不仅可以处理高水平的抽象,同时应该了解哪些实现高端抽象的低端细节。我需要哪些可以解决部署为题的人,或者如果他们解决不了,至少应该知道找谁来帮忙的人。

    练习。你是否使用在虚拟机上编译并执行的编译语言?如果你使用,花点时间学习虚拟机内部是如何工作的。不管你使用的编程语言是不是依赖虚拟机,花点时间学习编写源文件。你敲打出来的代码是如果从可阅读的文本转成可被计算机执行的命令的?编写你自己的编译程序又意味着什么?当你输入或使用外部函数库时,他们是从哪里来的?输入一个外部函数库到底意味着什么?那你的编译程序、操作系统或者虚拟机是如何将多个代码段连接起来,形成一个连贯系统的?掌握这些知识可以使你在技术选择上向“专业人士”跨近一步。

 

 

17 站在巨人的肩膀上

     软件设计和编程与音乐是相同的。我们可以从大量的现有程序中寻找模式和技巧。设计模式运动关注可重复使用解决软件开发问题的方法。设计模式使现存程序的研究正式化,是大量专业软件工程师得益进行这项工作。但设计模式也只是我们读程序编码的时候可供使用的知识中的一个小子集。

     那么其他程序员是如何系统地解决某一特定问题呢?其他人是如何有策略地使用变量、函数和结构命名的?如果想在一种新的语言中执行Jabber即时信息协议,该如何做?在处理UNIX和Windows系统的进程间通信时,又能有什么创新的方法呢?通过学习现有的程序,这些问题都可以迎刃而解。

     当你读一些程序的时候,你会发现某些你可能永远也不会去实践的工作,甚至是你想都没想过的。他为什么要这样做?他是怎么想的?他这样做的目的又是什么呢?即时你读到的是不怎么样的程序,通过批判的角度来研究它,你也会有所收获。      

     当你以一种批判的视角去看这些程序的时候,你就会开始培养自己的品味。如果你是真的在认真学习它们,在设计范例碰到问题的时候,你会更具创造力。就想在艺术这行,你学习别人的习惯时,就会发展出自己独特的风格。

     阅读这些程序的另一个作用就是能让你摘掉那些方法是已经存在的。当你碰到一个待解决的问题时,你可能会记起曾经在处理这样活着那样的项目时,看到一个执行MIME类型的库。如果这个方法是正确的,那你就会因为使用存在的方法而节省了很多时间,同时也为你的公司节省了开支。

     练习。选择一个项目,像读书一样研究并且做笔记。归纳出号的方面和坏的方面。发表一篇评论至少找到一个你可以借鉴的技巧或者模式。再找到至少一处缺点,提醒自己在开发软件的时候不要犯这类错误。

 

19 就是现在

     根据帕金森定律:“工作会自动膨胀到占满所有可用的时间。”可悲的是,即时你不想这样,你还是会掉入陷阱,如果这些工作是你根本就不想做的,这种情况则会更明显。

      帕金森定律是一种经验观察——不是一种无法逃脱的宿命。即使是人为制造的一种紧迫感,也足够使你的效率提高两三倍了。尝试一下,你会体会到的。你可以更快地完成工作。现在就去实验,不要总是只动嘴,不动手。

      如果你把自己做的项目当做是一个竞赛,那你就可以更快地完成。开始行动,不要总是安于现状,要做推动者。

      随时记得问问自己:“现在我们能做什么?”

      练习。查看你的工作日志,看看已经在这上面挂了很长时间的任务,那些已具雏形的项目,或者是某些让你头疼的工作。在这其中找出一项你可以在日常工作的空隙时间完成的工作,比如平时你浏览网页的时间,查看邮箱的时间,或者是可以缩短你的午餐时间。把一项以前需要数月完成的工作,在一周内做完。

 

20 读心术

     你不仅可以把读心术这招用在你的经理身上,也同样适用于应对客户。如果他们给你的暗示准确,那么你就应该能够增加新功能,而这些功能正是他们知道这样是可行的话,增加那些功能。如果客户要求你做什么,你就做什么的话,他们会对你的工作很满意;但是如果你的事情不仅是他们要求你做的,或者你在他们提出要求之前就已经这么做了的话,客户会非常的高兴——但前提是你使用读心术读出的信息是正确的。

    使用读心术也是有风险的。主要的风险及降低风险的方法如下所述。

    1. 从小事做起。你猜测出来的事情,如果它小到可以在你日常工作的空隙时间完成,你就可以做,这样能使影响最小化。如果你非常想做,那就在业余时间做。

    2. 每当在系统中增添编码,这个系统复原的可能就会非常小。如果你猜测的工作可能会迫使这个系统偏离原先的特定构建路线,或者在某种情况下限制这个系统的工作,那就不要做。如果变化带来的影响很大,那就需要作出商业决定了,二这个决定往往不是一个程序员能权衡的。

    3.也许你的客户确实稍稍提出了药改变某种功能,你按他说的做了,但出乎你的意料,这种改变是系统功能弱化了,二者并不是客户想要的。在猜测出来的工作涉及用户界面的时候,一定要特别小心。

    管理员工和项目是一项具有挑战性的工作。那些可以独立带领项目朝着正确的方向发展的员工是非常可贵的,经常加班加点的经理们和客户们非常珍惜和感谢这些员工。读心术用得好,会赢得人们的信赖——这也就是你职业的发展方向。这项技术是值得开发和加强的。

    练习。Karl Brophey建议在你开始下一个项目或者维护下一个系统的时候,做些笔记,记录下你认为用户和经理想要让你做的事情。有点创造性,试着从他们的角度来看这个系统。当你记录下这些有可能会被提出的不太明显的功能之后,想一想如何才能最有效率地执行他们。想想用户在短时间内想不到的边缘功能。

 

28 8小时激情燃烧

      Bob Martin,极限编程组织的杰出人物之一,在遵循Kent Beck的理论的基础上,改变了这句话的表达方式。Martin把一周40小时工作时间表述为“8小时激情燃烧”。也就说,工作的时候不容一丝松懈,高度集中,以至于连续工作的时间无法超过8个小时。

      Bob Martin的8小时激情燃烧理论给你制造了约束,但同时也为你提供了应对这一约束的策略。你必须要工作和思考,我就剩8小时了!快!快!快!有严格的开始时间和结束时间,你就自然而然地更加有效地安排时间。你会从一组需要今天就要完成的工作开始,讲他们按照优先顺序排列,一次性攻克。

      有限的资源更加珍贵,我们会更加有效地利用有限的资源。

      好好规划你的工作时间。减少工作时间,你的收获会更多。当你离开工作一段时间后,更会更喜欢工作。

      确保今晚睡个好觉。明天,吃个早饭,然后正点去上班(比平常早一些更好)。投入地工作4小时,吃午饭,然后在投入地工作4小时,确保4小时候你肯定没有力气在做其他的工作了。然后,回家放松。

 

30 说“不”

      清楚知道自己无法做到却还依然做的承诺最不容易实现。没错,这听起来再显而易见不过了,但是我们每天都在这么做。我们被逼上了这个位置,又不想让领导失望,所以我们对不可能完成的任务点头了。

     说“是”是个上瘾却具有毁灭性的习惯。这是个坏习惯,却伪装成好习惯。“能够胜任”的态度和歪曲某人的能力有很大的不同。后者不仅给自己造成麻烦,也会给你所承诺的对象制造麻烦。

     经常说“是”的人,要么是天才,要么就是在说谎。后者通常占多数。

     在适当地时候说“我不知道”也是很好的。

     当然不要过分地说“不”。“能够完成”的态度还是值得欣赏的,有延伸目标也是好的的。如果不能确定是否能做某事,但是你想要尝试一下,那就说出来。“这是一次挑战,但是我想要试一试。”这样的答案非常好。当然,有时候,答案就是“是”。

     要勇于诚实。

 

32 说出来、行动、展示

     在一天开始的时候问自己“今天要做什么?”就是很好的开端。在下午或者晚上找个时间,把明天要做的事情做一个列表,并将它们按先后顺序排列出来,这就是一个很好的开端。明天上班的时候,拿出这份计划,从第一项开始做起,午餐回来再继续按照计划行事,努力在下班之前完成计划上所列的事项。当你完成这份计划上的所有的工作之后,在上面写上“完成”两个大字,这样你会很开心。

     如果你没有完成这份计划上的所有事情,不要担心,继续把今天未完成的工作添加到明天的计划中(如果这些工作仍然需要完成),因为一天的工作量是有限的。这是个刺激过程。通过制定计划,你的生活就会有一连串小的胜利组成,每获得一个小胜利都会激励你去实现下一个成功。

     当每天的计划按节奏完成之后,你可能就会想制定一周甚至一个月的计划了。当然,你计划的时间跨度越长,你做计划的水品就应该越高。

     做计划时要时刻谨记的是,出现在计划上的每一项工作必须要与后续工作相关,要么被完成、推迟、去除、或者被代替。坚持按照计划工作会给人留下一个积极的映像——在混乱中,不会遗漏任何意见重要的工作。

 

35 学会沟通,善于写作

      文字表达能力是非常重要的。我们首先解决最枯燥的部分:语法和拼写。人们通过你的写作能力对你做出初步评价,也可以依此深刻理解你的思维活动。沟通,特别是以文字方式进行沟通,是你所有绝妙的想法必须要通过的瓶颈。你自己就是你要解释的内容。

      (1)开始记录开发日记。每天写一点,记录你做了什么工作,解释你的设计决定,检查棘手的技术和专业决策。即使你自己是第一位读者(或者是唯一的读者——这由你自己决定),也要注意写作的质量,和能够清楚表达想法的能力。时不时的回头阅读之前的日记,评论它们。通过你对之前日记的喜好,来调整你的新记录。

      (2)学习打字。在习惯了输入技巧后,在写作的时候你就会更加舒服和自然。

 

39 让人们听到你的声音

     我们这个行业,和音乐界一样,都是由一个复杂且广大的人际关系网构成的。你认识的人越多,得到好工作的机会就越大。如果只把自己局限在现在工作的公司里,就会严重限制你形成新的人际关系网的机会。

     还有什么比出版文章和公众演讲更好的方法让人们听到你的声音、记住你的名字呢?那么,如何才能从一名程序员到出版作品再到公众演讲呢?从互联网开始。

     第一步就是阅读网络日志。如果你不知道读什么日志,那就挑选出几位你最喜欢的技术类书籍作者,然后通过网络搜索,通常他们都会有自己的网络日志。订阅这些日志的,以及这个网页上链接的其他人的日志链接。慢慢地,随着你阅读和寻找其他人的网络日志链接,你的日志链接列表就会不断增加。

     接下来,开始撰写自己的网络日志。一开始,你可撰写(或者链接)在你的聚合器模块中有趣的故事。慢慢你就会发现,网络日志这个环境本生就是一个社交网络——你开始建立的职业网络的缩影。

     网络日志是训练场。要抱着为你最爱的杂志写专栏文章的态度,撰写网络日志。随着你写作技巧的增长,你也会越来越自信。

     所有这些让人们听到你的声音的方法中,最重要的一点就是要尽早行动,而不是一味地去想自己是否已经做好准备了。大部分人都会低估自己的能力。你一定有某种可以传授给他人的东西。你永远也不会觉得自己已经做好了100%的准备,所以不妨现在就开始行动。

     练习。 如果你还没有网络日志,现在就创建一个。在你的电脑里创建一个新的文本文件,列出一切可能的网络日志话题,这些就是你要撰写的专题文章。不要局限在宏大的观点上。尝试那些10到20分钟内就可以写出相关文章的小想法。当这个列表达到10项 的时候,就停止(如果你的灵感停不下来,那就继续)。保存文件,但是仍然保持打开的状态,如果你重新开机了,那就再打开这个文档。为自己设定三个星期的期限。每天,从这个列表中找一个话题来撰写文章。不要过多的思考,就是写一遍关于这个观点的文章,然后在网络日志中发表。在文章中加入其它网络日志中相关文章的链接。每天挑选话题的时候,可以任意向此列表中增加新的想法。三周后,挑选出你最喜欢的两篇文章,提交到类似Digg和Reddit这类由用户审查文章的网站上,如果你的列表中还有未撰写成文章的想法,那就继续写。


作者:Siobhan 发表于2011-5-8 23:15:00 原文链接
阅读:72 评论:0 查看评论
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值