最代码官方的gravatar头像
最代码官方 2014-06-09 23:05:30
最代码6月第1周回顾(6.2-6.8@2014)

最代码6月第1周回顾(6.2-6.8@2014)

网站总结

    最近深刻感觉不少新来的牛牛觉得牛币太贵不好获取,其实说来,牛币的机制我觉得还算人性化,牛币的高低是为了显示代码的好坏,0-2牛币的代码居多,2-7牛币的也不多,大部分都是运行截图多,高质量的也不少,7-20牛币的很少,大部分都是原创的高质量的代码,这样牛币的分区是很合理的。请大家理解和支持该规则

    另外最近广告点击很少,也希望大家可以多点击下和自己相关的广告以帮助网站得到一部分运营费用。

资讯精选

程序员必须进行的10项投资

1. 你的健康 

显而易见,开发人员经常都是坐着不动的。每天坐8到16个小时,只休息很短的时间,你的肚子周围很容易会堆起赘肉。肥胖是其它疾病的催化剂,而其中心脏病又是最可怕的。多花点时间运动一下就能避免这样的情况,如果有可能的话,花点钱办一张健身房的会员卡。 

长时间以不符合人体工程学的姿势打字,也容易使开发人员选成重复性的肌肉损伤,比如说腕管综合征。每隔几个小时拉伸一下你的手腕或者买块鼠标和键盘都能用的手腕护垫可以避免这样的损伤。 

盯着屏幕也会给你的眼睛造成压迫,这就是为什么建议配一副防眩光眼镜而不是普通眼镜的原因(假设你是戴眼镜的)。 

2. 提高你的数学能力 

数学可以提高你的逻辑思考能力,解决问题的方式,在多数情况下,它还能增加你的耐心。有些数学知识是可以直接在软件开发中使用的,比如离散数学 ,但有些知识忘了也没事,这要看你从事的是那个领域的开发了。比如说,游戏开发人员经常会使用到物理和微积分,而我作为一名企业应用的开发人员,很少发现有能用上它们的地方 。不管怎么说,数学能让你变得更加优秀。 

3. 提高你的英语水平 

编程、脚本 、标记性语言使用的都是英文,而开源项目比如Linux它们的注解通常也都是英文。来自世界各地的开发人员通过英语来协作开发。面向国际客户的开发人员都必须学习英语,因为这样才能够将业务需求转化成解决方案。 

明白了吧?英语对程序员来说,就好比二进制对于计算机一样。 

4. 一个自己的域名和网站 

有一个自己专属的邮箱地址而不是什么something@yahoo.com或者someone@gmail.com是不是感觉挺酷?每年只需花费一点点钱,就能让你看起来和别人与众不同。我自己买的这个lambdageek域名只花了13美金而已。个人域名还能给你的个人品牌添加自信和专业,让潜在的用户或者同事了解到,你自己究竟是什么样的。当然了,这假设你的域名不能是什么乱七八糟.com。 

5. 一个活跃的Github帐户 

作品集之于艺术家就犹如Github之于开发人员。这点就不必多说了。 

6. 一台好的电脑 

你听说过有程序员没有自己的电脑的么?我是没听说过。没有自己电脑的开发人员就好比没有激光剑的绝地武士一样。我这里指的好的电脑至少得有4GB内存(要想不那么快过时至少得有8GB)。我比较推荐的是4000刀的Macbook Pro,不过对于那些有特殊需求的极端场景,我持保留意见 。 

7. 足够快的网速 

互联网就是码农们的氧气。断网对我来说就好比断了空气供给一样,简直无法忍受。有了一个稳定的网络连接,你可以看下视频教程来进行学习,或者泡泡论坛,甚至可以及时关注到Hacker News上的最新文章。 

8. 读一些经典的计算机科学的书籍 

有一些书我认为是软件开发领域的经典之作: 
计算机程序的构造和解释
代码大全2
程序员修炼之道
重构-改善既有代码的设计
算法导论
离散数学及其应用
人月神话

9. 学士学位 

一个本科学历能够增加获取工作的几率。不管你是刚毕业的学生还是刚辞职准备找下一份工作,这都是有用的。再想像一下这样的情况 :如果很多研究生都挤破了头去抢一份工作,那么一个本科生的简历能被看到的概率又有多少? 

10. 资格认证(可选) 

资格认证能检验你的某一项技术的能力。通过了某项认证意味着别人已经认可了,你对企业认为可能有价值的某个东西有了比较深入的理解。有些公司会给有相关认证的程序员提供更好的薪水和待遇,但有些公司压根儿就不在乎这些东西。比如说,成为一名认证的Java程序员意味着你对Java语言理解得比较透彻了,但这并不意味着你具备了解决问题的能力。一些公司更看重的是一个人的关键的思考能力而不是他在某项编程语言上的经验,因为编程语言可以很容易学会,而解决问题则不然。 

开始IT之路前的我

我叫谢威武,是2014年6月的应届毕业生。当初选择学习软件编程有很多因素,最主要的因素是在我读高中的时候被一个人所折服,那是我第一次崇拜一个人。

他是一个小网吧的老板,人比较瘦,带着一副厚厚的眼镜,一副病态,感觉随时都会倒下的样子。那天是学校附近没有网吧了,在大街小巷转悠的时候看见了他的网吧。在玩游戏的时候卡主了,找他帮忙解决的时候,他所做的事折服了我。其他的网吧遇见这事找网管得到的回应就是“重启”,但是他不同,他拿着类试读卡器(后来才知道是U盘)的东西过来,然后我见到了我从没有见到过的东西--代码。不一会,机子好了,游戏继续正常的运行,但是我没有继续玩下去的心情了。我舍弃了游戏,来到老板的身边坐下,开始和他交谈,他的人生之路开始在我的面前显现。

他姓李,是一个C语言的开发工程师,很喜欢IT这一行,但是他也会.net和java,他说他在大学学的是C语言,出去工作后自学的java和.net,我问他为什么现在没有继续干自己喜欢的事业。他的回答很模糊,只是一句话就掐断了我继续问下去的打算----“你第一眼看见我的时候是什么感觉?”。“那干嘛不安心养好身体?然后继续回到你的‘战场’”,他的回答很让我不解,“我想脱离那一行,现在开个小网吧只是怀恋而已,网吧也开不了多久就会关闭的”。“代码让我们这些程序员既爱又恨,也许你不懂”。

“不过,现在我过的还不错,每天想做点东西就做点,想开店子就开店子,不想就出去走走。不过就是一直放不下而已”。我知道他还有很多故事,只是不愿意和我这个陌生人说起,我打算多来几次混熟了再来听他的故事,可是下次去的时候店子没开,再一次去的时候店子开了,人不在。之后就有一段时间没有去了,眨眼这学期快完了,我打算再去一次,可是出现在我面前的是另外一个人,网吧被改成了杂货铺。但是他那敲代码的专注和帮我解决问题神情以及他那铺满屏幕的代码和显示在我面前的功能。让我也迷上这一行,让我知道他还是十分喜欢这一行的,可是我又替他感到惋惜,也替自己惋惜,他背后的故事只能自己去瞎想一番了。

高中毕业后我义无反顾的选择走上学习IT之路,不仅仅是为了更好的遐想他的故事,也为了懂他当时说的那个‘既爱又恨’的含义,更是因为它(IT)迷住我了。

程序员拓展人脉的重要性

程序员这个群体,相对来说,不够活跃,交际圈子有限。

我现在是个全职的程序员,感到自己和身边的人是有以上共性的。

大学-高中-初中-小学,我的朋友都比较少,接触的人也不多,自己比较内向,也不想与不喜欢的人交往。大三的时候,我的QQ好友只有60多个,朋友也很少。当我意识到专心做技术对未来发展不利的时候,我逐步开始拓展自己的社交圈子。

我现在的QQ好友有600多个,常联系的有50左右,经常互动的有100左右。

结合这2011~2013这3年的经验,我有以下观点和大家分享:

1.好朋友可以帮助自己提高个人影响力和正面形象。

最明显的一个例子就是,大学同学刺客在一次课堂活动中帮我说了一句公道话,改变了一些“顽固派”MM对我的看法。

而且这种好的效果是可以不断传播的。当然,这些都是有个人实力和魅力作为基础的。如果整天吃喝玩乐,不敢正视,再怎么宣传,很多人还是不刁你。

2.广泛良好的人际关系对找工作很有帮助。

比如学校的时候,学院老师可以帮你推荐公司,提高你应聘成功的可能性。

毕业后,跳槽有人帮你推荐, 机会也更多。

我因为CSDN博客就收到了一些邀请,我也把一些机会告诉了身边感兴趣的同学。

3.通过互动,完善自己的思想体系和做事方法。

通过博客、QQ空间的互动,与一些网友交流问题,发现了自己观点的妙处与有问题的地方。然后自己不断完善,修正,对自己的思考很有帮助。

不但如此,别人可能也从中受益,对你印象也非常好。

帮你做事,帮你说好话。

有的时候,“良言值千金”!

4.帮忙解决问题。

一个人的能力和信息是非常有限的。

单单是技术问题,一个人都搞不定,更何况还有管理、生活、财务、运营等各种各样的问题。

这个时候必然要向别人求助,如果你有朋友,不用付费,就会获得很体贴的服务。

拓展方式

1.线上沟通。

博客、QQ、邮件。

2.线下沟通。

参加活动、一起吃饭。

3.线上与线下之间。

电话、QQ语音等。

个人建议

那些想在职场混的好、想创业的程序员们,一定要加强自己的人际关系。

不单单是要认识程序员,也要多认识一些创业者、管理者、产品运营等仁人志士。

人到用时方很少!

  感情和朋友都是需要提前经营和维护的,不要等到需要帮助和合作的时候,再去联系那些本该联系的朋友。

  唯有参与,才有认同!

程序员应该看的十大电影

不同的行业领域中很多时候都分享着共同的思想和理念。比如,大量的计算机编程中涉及到的概念都被运用到了电影里。有些概念出现在电影里后变得如此之 酷,甚至反过来能帮助我们程序员更好的理解这些概念。下面就是我最喜欢的10大电影,它们都在某方便帮助了我理解编程中的某些概念。

1. 骇客帝国(1999)

概念:在线/离线,递归,循环,矩阵等。

这部具有革命性的电影。一种文明的结束是另一种文明的开始。它成了后来的很多电影效仿的对象。

最代码6月第1周回顾(6.2-6.8@2014)

2. 环形使者(2012)

概念:循环

如果生活变成了一种无休无止的循环,如何终止它?

最代码6月第1周回顾(6.2-6.8@2014)

3. 创:战记(2010)

概念:虚拟和现实

很多到了年纪的计算机科学家都会承认,他们对计算机计算或战争游戏的热爱来自一种憧憬。

最代码6月第1周回顾(6.2-6.8@2014)

4. 遇见未来(2007)

概念:递归

这部电影运用到了计算机里递归的概念,特别是最后的搜索那部分,那是在一个树数据上进行递归搜索。

最代码6月第1周回顾(6.2-6.8@2014)

5. 死神来了 1, 2, 3, 4, 5

概念: if else jump

最代码6月第1周回顾(6.2-6.8@2014)

6. 盗梦空间(2010)

概念:虚拟机,嵌套

盗梦空间这部影片看的糊里糊涂,主要是里面的梦境嵌套的太多了,人物在各个梦境里来回穿越,弄的我不知道究竟他们在第几层梦境。关于这部电影一则笑话却非常的有意思,如果你是个真正的程序员,你一定会哈哈大笑:

盗梦空间的主要思想是:如果你在虚拟机(VM)里的虚拟机里的虚拟机里安装了一个虚拟机,那所有的东西都会变的死慢。

最代码6月第1周回顾(6.2-6.8@2014)

7. 云图(2012)

概念:并行

看似无关的几个线索其实是有内部联系的,就像是并行计算其实都是为了解决同一个任务,甚至还会共享一些变量。

最代码6月第1周回顾(6.2-6.8@2014)

8. Flatland 2: Sphereland (2012)

概念:2D

最代码6月第1周回顾(6.2-6.8@2014)

9. 源代码(2011)

概念:多线程重进入(Reentrancy)机制

我很好奇这些源代码是在什么上运行的。如果关闭电源,那另外一个世界就会消失?

最代码6月第1周回顾(6.2-6.8@2014)

10. 恐怖游轮 (2009)

概念:死循环

最代码6月第1周回顾(6.2-6.8@2014)

上面这些电影就是我最喜欢的一些电影。当然,还有很多跟软件编程相关的电影,如果你在评论里给我提示,我会把它们补充到这个列表里。

高效程序员所具备的特征

这里我使用了聪明,懒惰和程序员这几个词。我说的这几个词的意思是: 

  • 程序员:有积极活力的,专注于用代码解决真实世界里的问题,不是指那些梦想家,那些永远只想不做的人
  • 聪明:能够周全的思考问题(不是那些耍小聪明的人)
  • 懒惰:就像是程序中的lazy-loading,是指延后写代码的时间(而不是无所事事的人)。

正确的软件开发应该是懒惰式开发,也被称作忍耐式开发;这种开发方式的表现是,在真正动手写代码前,程序员要花大量的时间通盘考虑所有可能的解决方案和途径。这可以看作是延缓写代码,在没有完全理解问题前绝不动手写代码。先把问题理解清楚,确保将要写的代码能真正的解决问题,这将会避免之后写出大量无用的代码。

这里说的先把问题弄清楚,表现有: 

1. 真正的理解需求,让产品部门(业务分析部门)弄清楚他们真正需求的是什么。 

  • 这些部门通常不给足够的时间来整理需求
  • 他们经常不是请教问题领域专家,而是顺从领导的意见
  • 他们通常无法提供前后一致或完整的需求意见。

2. 清楚跟团队中的其它程序员或其他团队中的程序员需要那些交互,如何交互,这包括: 

  • 使用白板交流
  • 画流程图(UML或Visio)

你需要花大量的时间调研,来确保需求符合实情,来做工作让你和同事的交流有共同的语言语义。然而,程序员都喜欢立刻冲上去编程,喜欢在电脑前不停的敲代码。 

在真正的软件开发中,只有5%的开发时间是有效率的(你可以参考《程序员开发效率悖论》)。如果你发现一个程序员用100%的时间都在盯着屏幕,那么,你看到的这个程序员是最糟糕的程序员。 
如果一个程序员总是在电脑前编码,这绝对是一个不好的信号。 

高效的程序员总是不断检查他对需求的理解,确保他们的代码和需求是同步的。高效的程序员是频繁的和产品经理/业务人员沟通交流,你可以经常看到他们使用白板与同事和架构师交流讨论。程序员的阅历和经验都是用来提高开发效率,最优秀的程序员: 

  • 他们思考代码的时间增加而写代码时间减少
  • 对问题的透彻理解使调试代码的速度更快
  • 深思熟虑后的代码速度更快
  • 代码长度更短

程序员从心理上讲都是喜爱自己的代码的。 

烂程序员不喜欢去修改已经写成的烂代码。相比起优化自己的代码,他们更愿意简单的增加更多的代码,以此来弥补之前的缺陷。更糟糕的是,他们喜欢把责任归咎于他人。最终,一堆不好用的代码上再加上另外一堆不好用的代码,整个系统变得到处是bug,极不稳定。 

优秀的程序员经常也会写出烂代码,但他们能看到那些代码需要优化,哪些需要重写。优秀的程序员和不优秀的程序员的区别就在于对有问题的代码的态度,优秀的程序员的做法是: 

  • 如果代码整体上好的,那就重构代码。
  • 如果代码整体上有问题,那就重写代码

当代码中有需要优化或需要重写的地方时,时间拖的越久,你就越难回头解决这些问题。因为对这些代码依赖的程序会越来越多,越来越深,当你优化这些代码时,相关的依赖也需要进行相关修改。当积累的问题越来越多时,轻松的优化/重新这些代码已经变得不可能。而使用继续增加代码的方式来弥补之前代码问题,会让系统变得越来越不稳定。 

如果脑子里没想清楚,那就懒一些,把写代码的时间往后推。 

    最近发起了最代码的推广活动,希望每个支持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/1859442381671424.htm


打赏
最近浏览
低调人  LV38 2018年4月22日
三带一  LV13 2015年10月13日
zhangqinfu  LV7 2015年7月28日
永远知音  LV18 2015年5月8日
qianghuang  LV2 2014年11月18日
偷颗菜抱回家  LV14 2014年10月24日
tianlongcv  LV2 2014年10月14日
残念love 2014年10月11日
暂无贡献等级
inhv  LV18 2014年8月30日
470769010  LV8 2014年8月11日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友