Ruby将死?

最近我在用nodejs,和同事沟通了nodejs比ruby占用了更大的比例。我认为在为新项目选择语言、开发框架时,语言的流行程度是重要的乱点。

gem从过去到现在的发布日期图表可以帮助得到答案。rubygems(译者注:指http://rubygems.org)网页只显示了大部分流行gem的数据,但是我真正有兴趣的是查看最近的进展。我的理论是,如果开发者对不同gem的贡献减缓了,那么语言的受欢迎度也就有了。

获取数据

经过一番搜罗,我找不到能够找到格式化的数据以便将来放在图表里。既然如此,我想抓取这个网站的数据。nodejs cheerio(###http://matthewmueller.github.io/cheerio/)做为我选择的工具。通过运行 gem list –remote,它就能返回一个gem列表。幸运的是,每个gem有一个简单URL的主页。比如,Rails的主页是http://rubygems.org/gems/rails

var request = require('request'), cheerio = require('cheerio'), bytes...
    

如何成功建立团队信心

软件开发中创建团队是一个繁琐但可以达到的目标。虽然没有准确的准则,大多数管理人员存在基本共识。准则有点儿像:各种技能配置 + 经验丰富的成员 + 互补的性格 + 正确的心态 = 成功!许多管理人员用它或类似的准则建立团队却发现一些团队仍然在艰难地磨合。这通常是缺乏团队信心导致的。虽然每一个成员都不错,但是放到一个团队里,团队本身是有性格的。信心有问题的团队比较危险,会引起瓦解、挫败感、不信任、不良争论、bug频出以及忽视最后期限。好消息是有一种简单的方式来解决。

团队信心可以通过代理来取得,它不是来自编程里的“代理”设计模式。这个概念比现代技术出现得要早很多。值得推崇的好代理是指“授权合作关系……来开展特定活动。”读到这里或许会冒出怀疑主义者。木事;怀疑论没错(参看《怀疑论:开发人员第六感》)。让我们推翻这个家伙的结论,这非常效率:

获取新技能

有时候培养或掌握新技能是代理工作所需要的,搞定它,双赢局面就出现了。这帮助团队尝试新东西,推动工作,完善职业生涯,还能增强自我尊重。

扩大团队价值

当团队成员掌握了新技能并让团队委派工作,整个团队价值就提高了。另外,有助于鼓励团队“部落知识”的增长。团队成员的升职、调岗或离职带来的负面影响就会大大降低。

授权成员

代理是一个授权其他人的机会。授权团队成员使得团队更有责任感。另外,授权是信任、团队内部管理工作的信心的象征。

...

我希望当初我学习编程的时候别人能告诉我的事情

在编程教学中的体会

了解如何编程通常和盖房子类似,当你有终极目标时,过程就清晰很多了。如果目标是“学习编程”而不清楚用哪种语言、它能怎样改观生活,你很可能发现编程是让人沮丧的苦工。

我学习计算机科学的一部分动力是想证明我聪明,我想做聪明人的工作。承认这一点有些不好意思。我也喜欢思考数学和理论,而程序是完美的结合。这并不能使我坚持多长时间,直到我找到了把技术和我真正喜爱的、像音乐和文学之类的东西结合起来的方法。

你编程要做什么?网站?游戏?iPhone APP?踏入致富的大门?交互艺术?【1】想给老板留下好印象或者把单调工作自动化以换取更多的时间去看水獭的照片?或许你仅仅想更为称职,给简历加分或者完善你的教育规划。所有这些都是可追求的目标。确信知道你的目标是哪一个,然后相应地去达到。

没有神秘感

编程也是一门技能。像语言学习,语法和词汇是必需的;数学需要解决特定类型问题处理的过程;和技能和艺术创作一样,人们早就积累了针对不同任务的技巧、工具和最佳实践,你可以自由地使用、修改或抛弃。

有个家伙(他非常聪明!我认同并享受他的其他作品)说,在天才程序员和智商不够的其他人中间,有一条能否在该领域成功的、非常明显的分界线。分界线包括指针和递归。(好奇的话,请参考这里这里

我在学校接触了指针和递归,当我理解它们的时候,我的大脑觉得非常激动——智力上的快乐促使我想在计算机科学出人头地。教室之外的编程,我不得不熟悉它们概念的次数相对少了。当我一次又一次地帮别人学习的时候,我看到人们能够完成有意思的、或有报酬的项目,而对这两个概念并不了解。

我不是恐吓或质疑你是否足够聪明。当然任务越复杂难懂,越需要更高的精通层次才能完成。这绝对适用于其他领域。如果你没有计划让代码改变生活,你也不必为了解决问题而成为深入理解递归的高手。

第一次运行失败,第二次或第三次同样失败

刚学编程的时候,你很快就会遇到这个特定的经历:你认为你搞好了你认为应该搞好的东西,然后检查了一遍又一遍,它仍然不好使。你没有尝试修复它的头绪,错误信息(你足够幸运才能有的)像在说“fuck you”。这时候你可能想放弃,认为自己永远解决不了,但是你不能就此罢手。我就有这个体会,我第一次写C++时,运行了程序,却仅仅返回“segmentation fault”的话。

但是,各种技术水平的人都会遇到这种情况,绝对和你的智商,技术储备或是否适合写代码没有关系。无论菜鸟还是有经验的老手,都会遇到。不同之处在于你是如何应对的。

...