2014年1月 ’ 的文章存档

十步完全理解SQL

很多程序员视 SQL 为洪水猛兽。SQL 是一种为数不多的声明性语言,它的运行方式完全不同于我们所熟知的命令行语言、面向对象的程序语言、甚至是函数语言(尽管有些人认为 SQL 语言也是一种函数式语言)。

我们每天都在写 SQL 并且应用在开源软件 jOOQ 中。于是我想把 SQL 之美介绍给那些仍然对它头疼不已的朋友,所以本文是为了以下读者而特地编写的:

1、 在工作中会用到 SQL 但是对它并不完全了解的人。

2、 能够熟练使用 SQL 但是并不了解其语法逻辑的人。

3、 想要教别人 SQL 的人。
阅读全文

教是最好的学

Vlad Mihalcea是一位软件架构师,热衷于软件集成、高可伸缩以及并发编程等主题,他感兴趣的领域主要有Java、数据库、事务、NoSQL、OOP、重构与模式以及敏捷和Scrum等。近日Vlad撰写了一篇博文,谈到了对于程序员来说该如何学习,什么才是最好的学习方式等主题。

软件开发是一项知识密集型的劳动,时至今日,程序员需要掌握的知识量呈现出爆发式的增长。大多数时候,我们在招聘开发者时都是看他们已有的技能是否与项目的需求相匹配。项目最终会完成,然后开发者又会被分派到新的项目上,有时使用的技术与招聘时所要求的技术是完全不同的。那么有什么办法可以培训开发者呢,让他们能够尽快掌握新的技能,实现自身价值。

通常,培训与指导是被人遗忘的事情,每个程序员都按照自己的方式学习和工作,其实这么做隐藏了非常大的风险。我觉得我们应该在培训与指导上多花一些时间和精力,将其看作是一笔投资而不仅仅是开销。
阅读全文

与Google轻轻地擦肩而过

第一集

       因为那几年三天两头往硅谷里飞,所以我实在记不清这个故事到底是发生在98年还是99年夏天某日的一个下午。

       那天我和Excite.com的创始人Mark V. H.在Palo Alto的一家餐厅共进午餐。说是午餐其实都已经是下午三点钟了,餐厅里仅有我们两位顾客,我们坐在沿街落地窗边的餐桌上。Mark是当时硅谷的风云人物,也是个亿万富翁。他还在斯坦福读书的时候就和同学创办了Excite.com搜索引擎公司,Excite紧随着Yahoo上了市,成为当时世界上第二大的搜索引擎,老大当然是Yahoo。
阅读全文

聊聊程序员面试中额外的“潜规则”

本文内核来自于我的一位经验丰富、体重异常、阅人无数的HR好友,感谢各路好朋友们给我提供这么多的素材。

本文以第一人称撰写,但并不完全代表作者本人。

正文开始:

每个程序员都会碰到面试,也许你的面试只有一轮,也许有两轮甚至三轮,这里我来阐述一下最新的HR圈里在通常的第一轮面试中的识人小“潜规则”,不上大雅,但是很有可能你碰到的HR面试管都在默默的使用着。

一、询问微博、微信

传统的博客已经是司空见惯的东西。HR也需要与时俱进,最近我有一位HR同行告诉我他用到“微博识人”技巧。

该HR在招聘需求上写明:应聘者需要附上微博地址,如没有请加微信。

注:此招有噱头,下面来解读一番:

1、假设我们有传统的博客,那么一般会把它“打扮的漂漂亮亮的”,并且大部分都是宣扬自己“正面”的文章。所以现在HR很少会看应聘者的博客,因为这和简历一样不靠谱

2、微博就不同了。很少人会在使用微博时刻意注重自己微博的建设,尤其是在转发人家的微博时,很容易第三者通过你的历史转发微博看到你的性格和口味。曾碰到一个案例,一个应聘者简历很纯净、自称性格很健全、团队意识强、待人接物很成熟。事实上我们看到他的微博历史信息中充斥了大量“对社会不满,对原有公司不满、对原有领导不满的话语”。于是乎,咔嚓是必然的。

3、微信同理。同时,如果你是面试产品运营或者推广职位,HR通常会”鬼头鬼脑的”问你微信好友有多少个啊?于是你满不在意的回答了。如果你是初出茅庐那还好,如果你是应聘有经验的成熟岗位,那么区区几十个好友基本上无法说明你在“互联网很有影响力或者人脉很广泛”
阅读全文

到底怎么样才叫看书

 

一、引入

看到这个题目的时候你可能会感到有点好笑:“这还用问,看书就是把书看了一遍呗..” 没错,我们从小到大就是这样想的,也是这样看书的,信手拈来一本叫作”书”的东西,从头到尾就开看了!随时年龄的增长,我们的“阅历”也多了起来了,但你是不是也有和我一样的感觉——书是读了不少,真正入脑的,能融入自己思想的内容却少之又少,而且随着年头的增加,你越来越不记得自己读过这些书,更不用提书里到底大概是些什么内容了!这就是我们长久以来的读书方式。。。 你会不会也这样想,如果我能把我从小到大读过的书都能记下来形成自己的思想,那我现在得多牛啊!是呢,我也常常这样想!于是为了让自己更有思想,就去读更多的书,然后在短短的几年,或者只是几个月,甚至仅仅是几天以后,生活的琐事会渐渐把你关于那些书的缓存挤掉,你的大脑又变成了一块被重新格式化的硬盘,那些书又与你无关了。
阅读全文

全栈工程师到底有什么用

最近国内外都在流行一个词叫Full Stack,中文翻译过来叫全栈工程师,也叫全端工程师。微博上很多专业人士都在讨论全端工程师,有赞有毁的。我对全端工程师的定义是:掌握多种技能,并能利用多种技能独立完成产品的人。打外比方,全栈工程师就是一个能独立盖一幢10层小洋楼的人,而普通工程师,则是可以和一群人盖一幢摩天大楼的人。至于要掌握哪些技能,我觉得这个要跟从事的行业与技术方向有关,做互联网的和做软件的是不一样的,即使是做互联网的,后端也可以分为很多种技术流派。

8/2定律在哪都适用,全栈工程师就是掌握20%常用技能的人,但这20%的技能会有80%的几率被用到,剩下那80%不常用的,让我们Google吧。
阅读全文

工程师的生活

我忽然很好奇,想知道其他软件工程师的生活是什么样的?人永远都没有活在别人心中的形象那么绚烂,生活中总有无数烂事烦事需要处理,但是每个人都有自己享受生活的方式。逛了逛了各式技术博客和论坛,我发现大家似乎都太严肃了,太谦逊了,太学术了。做软件本来是一件很有意思的事情,但是这些帖子和文章无非就包括这么几种:

  • 技术文章,不解释,这部分当然是大头,虽然技术文章普遍不受欢迎;
  • 牢骚,喵了个咪的薪水低啊,呜了个汪的加班苦啊;
  • 心灵鸡汤,要励志、要发奋、要改变世界;
  • 长者语气教育后辈,“给刚入职的程序员们的警示”;
  • 无聊的纷争,Linux就是比Windows牛逼,Java就是一门屎尿屁的语言……

做软件的人只是如此吗?就只有上面这几条单调的事情可以聊?工程师就不能记录更丰富的生活吗?在大多数人都在谈论生活品质的时候,工程师也应该跟上脚步。我相信Geek的生活有人羡慕也只能算少数,码农的生活虽司空见惯但他们才是最大的群体,才是软件行业未来的希望。既然没有任何人提及软件工程师的生活品质,那我愿意做第一个吃螃蟹的人:
阅读全文

如何成为一名优秀的web前端工程师

程序设计之道无远弗届,御晨风而返。———— 杰佛瑞 · 詹姆士

我所遇到的前端程序员分两种:

第一种一直在问:如何学习前端?

第二种总说:前端很简单,就那么一点东西。

我从没有听到有人问:如何做一名优秀、甚至卓越的WEB前端工程师
阅读全文

软件开发中团队首领的好坏之分

软件开发的成败更多的是在于人,而不是技术。当从大学毕业时,我以为,只有精通了各种技术才能成为一名伟大的程序员,以为人件管理技术是经理们的专属领地。但事实却给我好好的上了一堂课。经常我能听到有人说人件管理技术是学不到的,是一种天份,对这种观点我不敢苟同。

没有人能生来就带有某种技能,我们都是通过观察和模仿(我们的偶像)来学习。你也许通过读书得到了这方面的一些知识,但是,我记得一句老话,我十几岁时读过的一本书的封面上印着它:“生活从书本中学不来,只能靠自己去感受。”

如果你感觉在处理人际交往方面有困难,那么,唯一的方法是去观察,去学习。就这么简单。即使你现在不是一个团队首领,没有带领任何人,学习如何做一个领袖也是值得去做的事,在我们这样一个以人为本的产业里尤其是这样。
阅读全文

使用 Linux 文件恢复工具

Linux 系统管理员守则中有这么一条:“慎用 rm -rf 命令,除非你知道此命令所带来的后果“,不过 Linux 下删除文件并不是真实的删除磁盘分区中的文件,而是将文件的 inode 节点中的扇区指针清除,同时释放这些数据对应的数据块,当释放的数据块被系统重新分配时,那些被删除的数据就会被覆盖,所以误删除数据后,应马上卸载文件所在的分区。然后使用相关工具进行恢复。本文以 Ubuntu 12.04 平台为例介介绍四个(foremost、extundelete、testdisk 和 phtorec)常用的 Linux 删除文件恢复工具的使用方法。
阅读全文