几年前Reddit上有一个关于招聘的笑话:面试官问:你用过Python还是Django?A:三周前我去了动物园,这算吗?面试官:你被录用了。一周后,候选人使用Django为他们的产品编写了一个在线论坛。英文的笑话用中文有点难懂。意思是说一个三周前只去过一次动物园的有Python(python)经验的程序员,只要他够厉害,一周也可以完成一个基于Python/Django的在线论坛。经常在网上看到各种标题为“Java程序员”、“PHP程序员”、“C/C++程序员”的招聘帖子,但感觉这种招聘方式很难找到好的人才。语言只是一种工具。对于一个聪明的程序员来说,他是否使用过任何工具主要是由他原来的工作需要决定的,并不代表他所有的技能。另外,一个软件产品往往涉及到很多方面的知识,比如网络、数据库、缓存、编译环境工具等,如果这些必要的基础知识不够充分,很难独立完成产品的某一部分。另一方面,一个人的聪明才智、对新知识的好奇心、自我驱动意识、找到问题最佳解决方案的决心,是他能否成为一名优秀程序员的关键。比如我在极光推送的CTO的时候,有个同事本来是主要用C语言开发服务端的,完全没有iOS开发的经验,但是他对iOS开发表现出了极大的兴趣,一直在做服务端客户端的开发,他表现出了良好的学习能力。后来,我把他调到iOS团队,负责iOSSDK和APNs相关的工作。结果,只用了几周的时间,iOSSDK的稳定性得到了极大的提升,解决了多个致命问题。问题。我在团队里经常强调,不要把自己定位成某种语言的程序员,说自己是Java程序员、C程序员、Python程序员等等。一方面会限制自己的发展,另一方面也不利于团队的整体能力。几乎所有的语言都有自己的适用场景。只有在正确的地方使用正确的语言,才能大大提高生产效率。正确的做法是先把基础知识打好,深入掌握2到3种语言,再去理解适用于不同场景的语言的概念。基础知识包括各种计算机原理和数据知识。学校里没认真学过,现在有空就得补上。语言方面,比如掌握了C/Java,再掌握C++/Python/Bash/Javascript/CSS等概念,至少能明白它们适用于一个完整的产品链中的哪个环节。“请不要称自己为Java程序员”这个标题并没有贬低Java程序员的意思。Java是目前使用最广泛的语言,也有大量以Java为主的有才华的程序员。另外,同样的,不要说你是C程序员,Python程序员。之所以用Java作为标题,是因为现在专注于Java语言的工作非常多,越来越多的人在学校里专注于学习Java。但是我发现,从学校就开始学习Java这种高级语言的人,基础知识薄弱。高级语言掩盖了太多细节,提高了生产力,但在学习阶段,不利于基础知识的积累。软件行业是一个强调人的价值的行业。价值体现在产品的有效推广上,而语言只是实现这一价值的工具。原文链接:http://zhang.hu/hire-a-smart-developer/
