最代码官方的gravatar头像
最代码官方 2014-05-12 23:55:55
最代码5月第2周回顾(5.5-5.11@2014)

最代码5月第2周回顾(5.5-5.11@2014)

网站总结

    内容管理员机制优化,由伊成为组长,成员有:kaka,小怨妇,天丫头,带领团队整理分享代码!有愿意整理代码获取牛币的请联系伊成

资讯精选

    做程序员之后才知道的 5 件惊奇事-人际、协作很重要

从我开始工作算起,已经有20多年了。即便如此,我依然记 得当时对从大学毕业并开始工作的憧憬。在那之前,除了少数几份和编程无关的暑期工,我的人生基本都是在学校度过的。虽然我对工作的大多数期望都实现了,不 过在步入职场头几年中也发现这一行许多令人惊奇的事,下面是头五件:

5. 人际交往

编程看起来是一份相当孤独的工作——你需要完成一个功能,所以你坐下来并用代码将其实现。不过事实上,你和其他的同事会有相当多的交流。你会和同事讨论设计,你会在开会时审查新功能,你会和测试人员讨论你的代码。

学会委婉和圆通,在交流中非常有帮助。如果还不会,那你得去学一下。关于这方面,有一本畅销书——卡耐基的《人性的弱点》。如果还没有读过此书,我强烈建议你读一读。

4.写作很重要

通过写作清晰地表达观点,这很有帮助。从某种程度上来说, 写代码和写作非常相似,两种都需要你把你的想法,通过某个结构化的方式清晰并且无歧义的表达出来。Email当然是写不完的了,不过还有你所开发的产品特 性所配套的文档、需要清晰描述Bug的漏洞报告、还有对你修复的Bug做出的解释。在大学里写作并不是重点,但是如果你写作好的话,这绝对是工作中的一个 筹码。

3.从来没有已做完的软件

在我开始工作以前,我觉得当我开发出一个特性之后,这个特 性就算开发完成了。不过在现实中,你会很经常的要回到这个特性上来。有时候是因为这并不完全是客户所要求的,也可能是因为你需要为它添加更多功能,又或者 是你想要把有些相似的功能合并起来,或者修复一个Bug。不管怎么样,对你的代码继续进行编程是很正常的事。

在大学里,我们经常会把一个程序从头做起,但这在现实世界中几乎是没有出现过的。当然,除了你做新功能的时候,但这些代码总要融入旧代码。正因为如此,做新功能时的很大一部分工作都是在阅读并理解旧代码。这是一项我们在学校里没有练习过的技能。

2.很少有巧妙的算法

在大学里我得到了一个计算机科学与工程的硕士,我学习了通 信系统,里面包括信号处理、错误纠正码、排队论等等的课程。我们也有像算法和数据结构这样的计算机科学核心课程,我很喜欢这些课,我觉得学会这些聪明的算 法和数据结构是一件很酷的事,所以我非常期待在工作中见到它们。

我的第一份工作是在蒙特利尔的爱立信公司,在一个蜂窝网络 的移动电话交换中心担任软件工程师。那里有大量的代码来控制通话的建立、挂机、漫游等等,但当我看到这些功能都是用最基本的数据结构和算法完成时,我觉得 有点失望。最有趣的是,我发现用来跟踪用户漫游状态的代码居然是由一千多个二叉树构成的,用户手机号的末三位数决定了用户处于哪颗树上。当需要找到这个用 户时,根据用户的手机尾号找到用户所在的树,然后遍历该树以找到该用户。除了这个,其他的都是链表甚至是更简单的数据结构。

1.系统集成后的复杂性

说起来既然没有什么精巧的算法,而且整个应用程序都在使用基本的数据结构,那看来在这里工作应该没有什么挑战吧?错!我很快就意识到这套系统高度复杂,倒并不是因为那些复杂的功能,而是因为太多太多简单的功能集成合到了一起。

在我工作过的那么多套系统中,我看到了一些共同点:大多数特性都非常简单,但正因为就是有很多简单的特性,在集成这些特性之时所遇到的微妙(或不那么微妙)交互,就引发了Bug。

Hello World的N中死法

  1. public class Test {  
  2.     public static void main(String[] args){  
  3.         ${place_hlod}  
  4.         System.out.println("Hello World");  
  5.     }  
  6. }  

 在${place_hold}替换一段代码,让这段程序不能显示出“Hello World”。

你有多少种解法?

抛砖引玉:

//强制退出死法

  1. System.exit(1);

//空指针死法

  1. String str = null;  
  2. str.concat(""); 

//死循环死法

  1. while(true){}   

//数组越界死法

  1. byte[] bs = new byte[1];  
  2. bs[2] = 1;  

加班对你的提升有多大?

结合最近一段时间的工作,突然觉得为啥有人那么喜欢加班!所以在网上搜了搜,令我诧异的是有这种想法的人真是相当多。看了几个文章之后,这种言论的理由无非就是:加班是能力的体现(有能力的加班),不加班等于虚度光阴等等。
   作为一个外地人,对于有人说“不加班等于虚度光阴”还多少能表示理解,毕竟很多去外地打工的人不会总是带着老婆孩子和父母,而作为本地人,每天回家要做的 事情就很多了,比如:做饭、收拾、照顾父母、教育孩子等等。但是外地打工的人他们回家往往面对的是四白落地的出租房。
   但是对于“加班是有能力的体现”这点我真的没有想出任何的理由来支持,首先按照工作内容来分:
1、体力劳作:这方面的工作加班与不加班只不过是数量上的区别,尤其对于其中熟练工的那部分。做这种工作的人喜欢加班,我的定义就是他们为了多挣钱去加班;
2、IT行业:IT行业比较复杂,内容也比较多,开发类的人员加班我认为多数都是由于时间分配不合理造成的,这里面自然又分为了管理层的时间分配 不合理和开发人员的时间使用不合理两种。第一种是由于管理人员对于项目进度的本身时间分配出现错误,造成的手下员工不得不加班加点;第二种则是由于自己对 于完成工作的时间估算不足。可以说都是失误造成的,我的定义是为了弥补自己或他人的失误被迫去加班;维护类的职位加班则更多的是突发性事故造成的加班,除 此以外还有更新等时间要素,所以我这里定义为由于工作性质造成的加班;测试人员基本和开发一样,就不在多说了。
3、销售人员:大部分企业销售人员的工作时间都属于比较宽松的,只要月底完成绩效就可以了,所以这类工作的加班也可以归结到为了多挣钱去加班;
4、人事及财务:这两类人员的工作性质比较类似,都属于每个月有一段时间特别忙的类型,加班一部分是由于自己的工作没有完成,一部分则是因为突发 的事情。所以人事及财务人员的加班也是跟IT行业类似的一方面是:为了弥补自己或他人的失误被迫去加班另一方面是:由于工作性质造成的加班;
   上面肯定对于行业还不是很全面,比如还有科研机构,服务行业等等。当时基本上加班的原因无非就是这么几点:
为了多挣钱去加班
为了弥补自己或他人的失误被迫去加班
由于工作性质造成的加班
其中第一个属于主动加班,后两个都属于被动加班。当然还有公司强制加班。这里我就不说了。对于大部分行业来说加班的内容就是继续完成自己的工作, 而且对于大部分工作来说都是机械化的,这点就算是IT行业都不能免俗,大量的时间用在码代码,重复的对一个文件进行更新,等待测试结果等等的步骤上,我真 的不知道这些加班的内容能对一个人的能力有多大的提高?
   如果加班真的这么好,为什么劳动法还要规定每周工时不超过44个小时?连续工作的疲劳带来的对身体的负担到底值不值?你现在加班加点的工作去挣钱,挣到的钱都给了谁?得有多少人是老了以后把辛辛苦苦挣了一辈子的钱都送给医院了的。
   我自己在事情没有做到一个点的时候也会选择加班,因为这些是一个人做事情的习惯,凡是要做到一个段落才能停下来。但是我对那些鼓吹加班的人真的想不明白。你的一生就只有加班吗?你的父母、孩子、妻子都不顾了吗?
   加班到底对我们自己是有好处还是有坏处还是需要大家自己去思量。 

    最近发起了最代码的推广活动,希望每个支持zuidaima的都可以帮忙推广下,活动地址:最代码推广活动,有你参与更牛币
    最代码每周都很精彩,有你会更精彩,请访问http://www.zuidaima.com。欢迎转载分享该文章, 欢迎推荐给身边的小伙伴们
    欢迎关注最代码的官方微信账号zuidaima,最代码官方新浪微博:http://weibo.com/zuidaima,最代码官方腾讯微博:http://t.qq.com/zuidaima

    欢迎转载该文章并提供出处。

    淘宝店铺:http://www.zuidaima.com/taobao.htm
    博客地址:http://www.zuidaima.com/blog/1819855754742784.htm

 


打赏
最近浏览
低调人  LV38 2018年4月22日
永远知音  LV18 2015年5月8日
qianghuang  LV2 2014年11月18日
snbing  LV8 2014年10月7日
TC608  LV5 2014年9月25日
dinghongli2011  LV6 2014年8月23日
sugarcane  LV3 2014年8月5日
王鹏  LV1 2014年7月24日
funchis  LV13 2014年7月22日
聆聽  LV5 2014年6月27日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友