程序员困境_36氪



程序员困境_36氪

最近,我招聘一个内核程序员的岗位,几十个人过来面试。这些应聘者都来自优秀的大公司,不是开发芯片的,就是开发内生的操作系统的。其中有些人声称自己在内核上开发的时间至少 10 年!他们的简历美轮美奂,各种完成的项目,各种获得的褒奖。

但是绝大多数人都无法回答一个最基本的问题:当我们调用一个标准内存分配函数时,在内核中会发生什么?

别惊讶。当我请其中一位应聘者写一个简单的,基于在 glib 库中 hash 函数上搭建的 LRU 缓冲框架时,他表示压根没用过 glib。这也正是我想要的答案。我给他看了 glib hash 的 api 页面,同时非常详细的给他介绍了 API。之后一个小时过去了,他所能给我的,仅仅是寥寥草草的几行乱七八糟的代码而已。

我不知道这种情况是不是适用于其他国家,但是在中国,或者准确点儿来说在北京,这就是现实。所谓的 "高级" 程序员,那些多年在大型的,有名气的外国公司供职的程序员,甚至无法在最简单、基础的问题上证明自己的能力。

为什么会这样?

我越想,越觉得原因并非简单归咎于他们自身,还和他们供职的公司有关。这些公司经常备好了一套代码,好几年没有重大调整。与这套代码相关的技术已经形成了框架,人们的技术就在这框架中,遵循既有的路径走就好了,而创新精神就在这个过程中消失殆尽。如果你在很长时间内就跟这一种代码打交道,并没有将触角伸向外面的世界,很快你就会发现自己置于悲惨境地。在公司或者团队里,你被尊称为 "专家",但是很不幸的,在这个市场上你将无法找到一份胜任的工作。

这就是所谓的 "专家陷阱"。日复一日,我们程序员都梦想成为公司或者团队里的行家里手。但是,等这一天真的来到时,我们自陷囹圄,固步自封。逐渐的,我们无法从无到有的凭借自己的能力,开发出一套完整的项目。因为摆在眼前的代码实在太稳定了(不仅全面而且还带来真金白银)。更糟糕的是,如果我们的主要工作仅仅是保证现有的代码更好的存在下去,没有任何大的变动,那么过上一段时间,不管我们研究阅读了多少的代码,最终我们没办法写代码了,即使问题像学生作业一样简单。这就是程序员困境,我们以写代码赖以为生,但是到最后,我们所供职的公司却让我们丢了谋生的手段。

如何逃离困境?

对于个人来说―

首先,做你自己的项目,你必须持续不断的打磨自己的能力。如果工作本身无法帮你做到这点,那么就在业余时间选择你想要攻克的难题。这样做很快你能学到新的东西。如果你发布了个人的作品,比如在 github,很有可能你能遇到一些人,他们能把你从现如今的泥潭中拔出来。

另外,不要在同样一个团队待超过 2 年时间。即便还是待在一个公司,逼着自己不断的调岗,你会遇见新的挑战,学习到新的技术。每 18 个月走出去面试一次,你其实不需要跳槽,只是看看你与这个市场的结合能力是否如以往那样紧密。

对于团队和公司来说―

给你的雇员以挑战和压力。让内部职位不断调换,让所谓的 "专家们" 有机会丰富自己的技能,开发新的项目,让 "武士" 在 "实战" 中强大起来。定期举行 "编程马拉松",这有助于培养创新的氛围。人们将相互你追我赶,那时候肯定有人在心里说:"我靠,那个混蛋竟然在 24 小时内写出如此漂亮的代码,我必须努力了!


Read full article from 程序员困境_36氪


No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts