毫无疑问,软件开发是一项最需要久坐的工作之一,每天在电脑前要坐 8 到 16 个小时,中间几乎没有休息,这就很容易长肉。而肥胖很很可能会引起其它的疾病,心脏病就是其中一种严重的疾病。当然,你可以通过一些锻炼避免它,比如花点儿钱去办一张健身卡。(别等到失去时候,难那时,你会后悔莫及)
长时间不符合人体工程学的打字姿势,会造成软件开发人员重复性的肌肉损伤,比如腕管综合征。你应该每隔几个小时的打字后就活动伸展一下手腕,防止这样的损伤,或者选择买带有手腕保护功能的鼠标和键盘。总盯着屏幕也会给你的眼睛带来压力,这就是为什么建议你戴一副防闪光的眼镜而不是普通眼镜的原因(假设你是戴眼镜的)。
数学可以提高你的逻辑思维能力,拓宽解决问题的角度,还有培养你的耐心。有一些数学分支,比如离散数学,可以直接应用到软件开发上,还有一些可能你会忘记,但也没关系,看你是从事的是哪个领域的开发了。比如说,游戏开发人员经常会用到物理和微积分,但我作为一名企业应用的开发人员,就很少有能用上它们的地方。无论怎样,数学能力的提升可以让你变得更优秀,做更好的程序员。
所有编程语言,脚本语言和标记语言都是英文的,而且像 Linux 这样的开源项目的注释通常也都是英文的。世界各地的开发人员都在使用英语来合作开发,针对国际客户的开发者都必须学习英语,因为这样才能够将业务需求转化为实际的解决方案。明白了吧,英语对开发者而言就和二进制对于计算机一样。
你不觉得有一个属于自己的邮箱地址很酷吗?不是那种像 something@yahoo.com 或 someone@gmail.com 一样的大众邮箱。有一个自己的域名能让你在其他人中脱颖而出,关键是每年只需要花很少的钱就可以实现它。我买的这个 lambdageek 域名只花了 13 美金,个人域名还能给你的个人品牌,也就是你自己,增添自信和专业性,让潜在的用户或者同事了解到你。当然这一切的前提都是你的域名不是像什么 hotmale-loves-chicks.com 一样瞎起的。
Github 账号对于程序员而言,就如同作品集对于艺术家一样。有了它,其它的就不需要说什么了。
你没有听说过程序员没有自己的电脑的吧?我也没听说过。没有自己电脑的程序员就好比没有激光剑的绝地武士一样。我说的一台好的电脑至少得有 4GB 内存,我比较推荐的是 4000 刀的 Macbook Pro,当然不排除那些有极端需求的特例。(补充:好的外设则像是武士的坐骑,没有它,行军打仗总有些不合时宜;一把人工学的椅子;一件机械轻便的键盘;高清超大的屏幕,一本称心如意读书设备如Kindle 等等真心是特别必要装备;)
网络对于程序员就像氧气一样,所以没有网络的世界就好比断了空气供给,是无法忍受的。一个稳定的网络连接可以让你多学习,看在线视频,泡泡论坛,然后及时关注 Hacker News 上的最新文章。(超烂的网速有时候会急的你想砸电脑,有没有?)
有一些书我认为是软件开发领域的经典之作:
计算机程序的构造和解释(Structures and Interpretations of Computer Programs) 代码大全2(Code Complete 2) 程序员的修炼之道(Pragmatic Programmer) 重构-改善既有代码的设计(Refactoring) 算法导论(Introduction to Algorithms) 离散数学及其应用(Discrete Mathematics and Its Applications) 人月神话(Mythical Man Month)
一个本科学历能够增加找到工作的概率,无论是新的毕业生还是刚辞职准备找下一份工作的人都一样。想像一下这样的情况:很多毕业生都在争抢一份工作,那么一个在校生的简历是不是更容易被忽视呢?
资格考试可以检验你某一方面的技术能力,而通过了某项认证意味着这个人在某一方面有着比较深入的了解,而恰好这方面是一个企业认可的。有一些公司会给有相关认证的程序员提供更高的薪水,当然,也有些公司根本就不在乎这些。比如说,作为一名有资格认证的 Java 程序员说明你对 Java 语言还是有比较好的理解,但同时它不意味着你可以直接将你的理解转为解决问题的能力。所以,一些公司更看重个人的思考能力,而非某种编程语言的经验,因为编程语言可以学得很快,但是解决问题能力的培养不是一朝一夕的。