编程到底难在哪里?知乎上有人提出了这个问题,提问者似乎将这个问题上升到了哲学高度,他认为各种编程语言就好比文字,编程的过程就是用文笔书写文章,假设对于语言的应用已经十分熟练了,那么编程的难点到底在哪里呢?是使用语言的思路难,还是各种算法的运用难,亦或是明明是人脑却要用电脑的方式思考问题? 问题下边答主 Amazon 资深工程师阿莱克西斯的回答比较典型,获得了 10k+ 的赞同,或许对你有所启发。 阿莱克西斯介绍,他们组有一位美国实习生,这里暂且叫他 G,G 很 geek、干活快,一天可以写 2000 行代码,阿莱克西斯 code review 的速度跟不上他写的速度。G 认为普通的编程没什么意思,太过于简单,写程序这方面已经没什么追求了,他比较想研究大数据的框架、数据库,或者机器学习之类的工作,做设计,早日脱离代码这种无脑工作。 有一次阿莱克西斯休假 2 周,交代了 G 一些工作,2 周后回来,发现让 G 改的那个 Java 包爆炸了,本来一个支持了 7 个功能的框架包,总代码量也就 5k 行,经过这两周 G 的发展,已经变成了 15k+ 行,也就是说 G 为了一个小功能在包里加了 1w 行代码。 阿莱克西斯表示这代码没法 review,于是让 G 解释这些代码都是干什么的。G 的回复:
G 的解释充满了”忘记为什么那样写、照着原有代码写、怕麻烦将就着写、只关注功能有没有实现去写、天马行空过度优化“……没办法,阿莱克西斯一次一次让 G 重写,他表示这样编程也太难了,后来总算简化成大概 5k 行。再后来阿莱克西斯重写了一遍这个库,总共只有不到 1k 行代码。 通过 G 的事例,阿莱克西斯想表达,编程的难处不在于代码能不能写得快,而在于需要对以下几个方面做出有效的交待:
你认为编程到底难在哪里呢? |