由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - CS:说说工作里能用到的东西和能力培养
相关主题
面试遇到自己准备过的题分享一个LeetCode解答的网站
面试一个老中马工题目太多了,做完就忘。。。。
刷题其实也没什么, 有问题的是公司的面试设计请教GitHub上放什么比较好?
刷题可以提高智商,尤其是改行的刷题究竟要占多大比例
挑战bug free问问大家lc只刷自己想去的公司的题可以么
谈一点找工作面试的感受和建议(cs entry level)这样在公司刷题安全吗?
发现CC150有很多错误看来刷题还要兼顾brute force解法
郁闷死了,顺便贴个Amazon电面面经也来谈谈刷题
相关话题的讨论汇总
话题: 代码话题: cs话题: 语言话题: 知道话题: 东西
进入JobHunting版参与讨论
1 (共1页)
g**********y
发帖数: 14569
1
欢迎做系统设计的大牛们出来谈谈感受。
- 最重要的能力不是你现在会什么,而是学习新东西并且很快可以举一反三。上了CS
的船,就注定不停地要跟新的,不会的东西打交道。如果没有参照,我以为自己学新东
西很快。工作上碰到牛人,才知道什么是更快。很明显,他们跟我一样没看过的code,
他们能够很快地zoom-in, zoom-out。我的认识是:一,他们的思维很快;二,他们对
系统对概念很清楚,知道这个系统输入,输出,有那些子模块,各自完成什么功能。有
这些知识在心里,他们能大致猜测系统是怎么布局的,因为主线在心里,他们一边找,
一边验证自己的假设。三,design pattern,对于大规模的代码,design pattern必然
反复出现,而且命名都是有规可循。一旦看见那样的命名,他们就知道相应的class,
interface必然有定义/实现。知道要找什么东西的时候,大海捞针就容易得多。
- Fundamentals。有一些特别基础的工具,一定要熟,无法绕过。我特别不喜欢vi/
emacs这类工具,因为大部分语言都有非常好的集成环境,我不明白为什么要去记住那
些莫名奇妙的j,k,l,n,f,b...... 事实上,你总会碰到一些时候,比如从家里remote
log in, 在外地出差,或者用laptop remote connect等等,这些时候,启动集成环境
通常太慢,只有最简单的字符界面最高效。再比如,你想要修改的,就是一行代码,启
动集成环境,修改,测试,一通折腾下来,别人代码都已经check-in半天了。人总有些
时候需要非常速度,在这种时候,这些兵器就好比武侠描述的,一寸长,一寸强;一寸
短,一寸险。高手的手里,往往是有各种兵器,知道什么时候取那把出来。
- Regular expression, 我从来没有碰到过一个不是Regular expression master的牛
人。原因很简单,RE抽象精炼,在字符类的转换处理上,往往是思维速度最快的。写出
来之后,可能不是那么容易读,我通常都反感那些难读的精巧的代码,我觉得那往往是
自挂东南枝。但是在regular expression这块,我会通融,习惯之后,确实感觉很顺手。
- 写代码跟写文章一样,最重要的是条理清晰。有清楚的布局规划,别人就很容易找
到相应的代码,容易理解,也就容易维护。不能维护的代码,出路只有一条,就是被抛
弃。写代码,是为了跟人交流,尤其是未来的自己,因为往往自己会是维护那段代码的
人,为了保证过了一个月,一年之后能够顺利读通代码,发现问题。那就必须养成良好
的习惯:代码风格一致,逻辑习惯一致,思维方式一致。对于类似的问题,当你找到一
个最优解法时,最好处处都沿用这个解法。问题特别容易出现在:解法的细微不一致上
。另外,注意避免啰嗦,能够用一句话说清楚的,不要用两句;可以删掉的旧代码,毫
不留情删掉 -- 代码越少,犯错误的机会越小。
- 跟人交流:跟人交流不是问解法,而是随便聊天知道更多的东西。对于绝大部分的
问题,如果拿问题去问人,我们希望发生的情况是对方刚好知道那个答案;但是通常发
生的情况是:对方并不知道,他花时间帮你解了。好处:省事。坏处:不仅降低了别人
对你的印象,而且失去了一个自己解决问题的机会。以前我会想:这是一个无足轻重/
无聊的问题,我知道了它的解法,对我将来的工作也没有任何意义。其实不然,知道最
快的方式解无聊的问题,其实也是一种能力,而且是需要培养的能力。很可能,google
就可以回答,这种时候,浪费同事的时间,就是损人不利己。跟人聊天,知道一些以前
不知道的想法,知道一些系统的实现,没准在将来的某一天,突然就派上用场。概念性
的东西,是最能难倒人的的地方,没有的时候,你会绞尽脑汁去发明轮子;知道之后,
你会发现那么容易,谁都可以做。有一次我改动一段javascript代码,需要在两个不同
object的callback之间传递参数,因为涉及到库的变化,我发现那个改变至少引发几百
行代码变动。我去跟同事聊天时,顺便提前这件事,他平时不写javascript, 但是他直
觉地问:为什么不换一个方向做,我一下就明白:自己走入了思维误区,我以为必须那
样去改变,其实我可以在更高层上变动,那样就根本不需要底层把参数传来传去,最后
的改动只需要不到10行代码。
-细节上,多相信代码, 少相信人。代码是不会撒谎的。不管多牛的人,他们对细节的
记忆都可能出现偏差。所以能够下苦功夫的时候,最好自己去把细节理清楚,不要随便
相信别人的一句话。我在这个上面吃过多次苦头,因为对方很牛,又振振有词地跟我说
应该那样做,我就相信了。等到发现错误的时候,我又不能拿他出来做挡箭牌,错误还
是算在自己头上。
-学什么语言?总看见争论这个话题。我的看法是:不管哪门语言,你需要精通一门。
精通的意思是,不用google,不需要不停地去查细节,你可以很快完成比较复杂的app
,你能够用那门语言来思维。我用过很多语言,但是让我挑最熟的工具,肯定是Java。
其它语言,修补别人的程序没问题,但是自己独立从头干,需要参考书。在有时间的前
提下,多学几门语言总是没坏处的,尤其是新的奇怪的语言,就像学习一种新的思维方
式。我也看见很多争论哪个语言好什么的,觉得很无聊,一句话:如果脑子不清楚,什
么语言写出来的都是一团浆糊。
-关于刷题。工作中有用没用?回答是:有用,但是不直接。刷题就像是脑力体操,体
操好的人,身体协调性好,完成各种动作都容易。但是写代码快,跟工作成绩之间,没
有必然相关。我见过很多聪明人,做事非常快,但是他们干的事情,我不觉得特别有意
义。不管多么快多么有效率地干无意义的事,结果都是一个。
g*********e
发帖数: 14401
2
f*****u
发帖数: 308
3
Mark! 学习了,多谢大牛分享!

CS
,

【在 g**********y 的大作中提到】
: 欢迎做系统设计的大牛们出来谈谈感受。
: - 最重要的能力不是你现在会什么,而是学习新东西并且很快可以举一反三。上了CS
: 的船,就注定不停地要跟新的,不会的东西打交道。如果没有参照,我以为自己学新东
: 西很快。工作上碰到牛人,才知道什么是更快。很明显,他们跟我一样没看过的code,
: 他们能够很快地zoom-in, zoom-out。我的认识是:一,他们的思维很快;二,他们对
: 系统对概念很清楚,知道这个系统输入,输出,有那些子模块,各自完成什么功能。有
: 这些知识在心里,他们能大致猜测系统是怎么布局的,因为主线在心里,他们一边找,
: 一边验证自己的假设。三,design pattern,对于大规模的代码,design pattern必然
: 反复出现,而且命名都是有规可循。一旦看见那样的命名,他们就知道相应的class,
: interface必然有定义/实现。知道要找什么东西的时候,大海捞针就容易得多。

a*****s
发帖数: 1121
4
非常有道理。
p***y
发帖数: 637
5
向楼主请教两个关于交流的问题
一是如何防止剽窃。我有一次与人交流,提到我要做一个cache。对方回头立即做了一
个简单的cache类然后群发邮件说大家今后必须cahce数据,还提供他的类的调用例子。
其实他那个基本就是个key/value pair。但给老板们的印象就成了他思灵活创造力好。
二是如何说服别人。码工因而有绩效考核,相互之间其实是激烈竞争关系。很多人都不
喜欢采纳别人的意见,因为会损害自己的绩效而提高别人的。我遇到几个头疼的例子,
比如再三建议大家用enum不要用magic number,却被斥为不懂javascrip;提议引入结
构化和oop思维,也被斥为增加开发成本。许多个月过去后他们发现代码已经很难维护
了,才逐步引入enum和其他一些基本的结构化和面向对象思维,当然全是under他们的
credit.

CS
,

【在 g**********y 的大作中提到】
: 欢迎做系统设计的大牛们出来谈谈感受。
: - 最重要的能力不是你现在会什么,而是学习新东西并且很快可以举一反三。上了CS
: 的船,就注定不停地要跟新的,不会的东西打交道。如果没有参照,我以为自己学新东
: 西很快。工作上碰到牛人,才知道什么是更快。很明显,他们跟我一样没看过的code,
: 他们能够很快地zoom-in, zoom-out。我的认识是:一,他们的思维很快;二,他们对
: 系统对概念很清楚,知道这个系统输入,输出,有那些子模块,各自完成什么功能。有
: 这些知识在心里,他们能大致猜测系统是怎么布局的,因为主线在心里,他们一边找,
: 一边验证自己的假设。三,design pattern,对于大规模的代码,design pattern必然
: 反复出现,而且命名都是有规可循。一旦看见那样的命名,他们就知道相应的class,
: interface必然有定义/实现。知道要找什么东西的时候,大海捞针就容易得多。

d****e
发帖数: 707
6
好文,mark.

CS
,

【在 g**********y 的大作中提到】
: 欢迎做系统设计的大牛们出来谈谈感受。
: - 最重要的能力不是你现在会什么,而是学习新东西并且很快可以举一反三。上了CS
: 的船,就注定不停地要跟新的,不会的东西打交道。如果没有参照,我以为自己学新东
: 西很快。工作上碰到牛人,才知道什么是更快。很明显,他们跟我一样没看过的code,
: 他们能够很快地zoom-in, zoom-out。我的认识是:一,他们的思维很快;二,他们对
: 系统对概念很清楚,知道这个系统输入,输出,有那些子模块,各自完成什么功能。有
: 这些知识在心里,他们能大致猜测系统是怎么布局的,因为主线在心里,他们一边找,
: 一边验证自己的假设。三,design pattern,对于大规模的代码,design pattern必然
: 反复出现,而且命名都是有规可循。一旦看见那样的命名,他们就知道相应的class,
: interface必然有定义/实现。知道要找什么东西的时候,大海捞针就容易得多。

c**********8
发帖数: 1052
7
不错
LZ是转行的?
s*****r
发帖数: 43070
8
过于理想化了,工作中的bull shit多了去了
S******1
发帖数: 216
9
“工作上碰到牛人,才知道什么是更快。”
有研究过他们怎么做到的吗?
T******g
发帖数: 21328
10
讲的实在
相关主题
谈一点找工作面试的感受和建议(cs entry level)分享一个LeetCode解答的网站
发现CC150有很多错误题目太多了,做完就忘。。。。
郁闷死了,顺便贴个Amazon电面面经请教GitHub上放什么比较好?
进入JobHunting版参与讨论
y***n
发帖数: 1594
11
EverNote了。

CS
,

【在 g**********y 的大作中提到】
: 欢迎做系统设计的大牛们出来谈谈感受。
: - 最重要的能力不是你现在会什么,而是学习新东西并且很快可以举一反三。上了CS
: 的船,就注定不停地要跟新的,不会的东西打交道。如果没有参照,我以为自己学新东
: 西很快。工作上碰到牛人,才知道什么是更快。很明显,他们跟我一样没看过的code,
: 他们能够很快地zoom-in, zoom-out。我的认识是:一,他们的思维很快;二,他们对
: 系统对概念很清楚,知道这个系统输入,输出,有那些子模块,各自完成什么功能。有
: 这些知识在心里,他们能大致猜测系统是怎么布局的,因为主线在心里,他们一边找,
: 一边验证自己的假设。三,design pattern,对于大规模的代码,design pattern必然
: 反复出现,而且命名都是有规可循。一旦看见那样的命名,他们就知道相应的class,
: interface必然有定义/实现。知道要找什么东西的时候,大海捞针就容易得多。

p*u
发帖数: 2454
12

talk 2 ur boss in private, tell him that this was ur idea and u've already
done good amount of work on it.
discuss such things in email and keep records. again, make ur boss aware of
this when necessary.

【在 p***y 的大作中提到】
: 向楼主请教两个关于交流的问题
: 一是如何防止剽窃。我有一次与人交流,提到我要做一个cache。对方回头立即做了一
: 个简单的cache类然后群发邮件说大家今后必须cahce数据,还提供他的类的调用例子。
: 其实他那个基本就是个key/value pair。但给老板们的印象就成了他思灵活创造力好。
: 二是如何说服别人。码工因而有绩效考核,相互之间其实是激烈竞争关系。很多人都不
: 喜欢采纳别人的意见,因为会损害自己的绩效而提高别人的。我遇到几个头疼的例子,
: 比如再三建议大家用enum不要用magic number,却被斥为不懂javascrip;提议引入结
: 构化和oop思维,也被斥为增加开发成本。许多个月过去后他们发现代码已经很难维护
: 了,才逐步引入enum和其他一些基本的结构化和面向对象思维,当然全是under他们的
: credit.

g**s
发帖数: 2331
13
支持原创 好文。顶起来
g**********y
发帖数: 14569
14
政治的东西我是外行,说说看法,将就看 --
*有个在名片上画漫画的人,出名之后,别人问他:你这个东西这么简单,不怕别人抄
袭吗?他说:我喜欢画这个,每天都在画,如果他能短时间就画到跟我一样好,那就让
他抄袭吧。
*以前工作的实验室,芝麻大的事都去申请专利 -- 保护知识产权 --其实大家都
清楚,保护的就是一堆废纸。
*有个朋友跟我说,以前看见印度同事不干活,也拿一样多,心里不平衡。后来想明白
了:拿同样的钱,一个干事,一个不干事,在需要找工作的时候,你愿意是哪一个呢?
版上一定有人有不同的看法,我也不准备说服,自己选。
*有一句话很好: change your organization, or change your organization.
*时间是我们唯一珍贵的东西,你愿意用来多做点事,多学点东西,或者精通政治,或
者多灌水,或者发发牢骚,或者BSO。。。都可以,自己的路自己选,没得后悔。
*永远不要低估你的老板,拿给大家看的借口,和实际的理由,往往是不同的东西。哪
个人能做什么,比较有创造力,比较能干事,他比你想象的要清楚。

【在 p***y 的大作中提到】
: 向楼主请教两个关于交流的问题
: 一是如何防止剽窃。我有一次与人交流,提到我要做一个cache。对方回头立即做了一
: 个简单的cache类然后群发邮件说大家今后必须cahce数据,还提供他的类的调用例子。
: 其实他那个基本就是个key/value pair。但给老板们的印象就成了他思灵活创造力好。
: 二是如何说服别人。码工因而有绩效考核,相互之间其实是激烈竞争关系。很多人都不
: 喜欢采纳别人的意见,因为会损害自己的绩效而提高别人的。我遇到几个头疼的例子,
: 比如再三建议大家用enum不要用magic number,却被斥为不懂javascrip;提议引入结
: 构化和oop思维,也被斥为增加开发成本。许多个月过去后他们发现代码已经很难维护
: 了,才逐步引入enum和其他一些基本的结构化和面向对象思维,当然全是under他们的
: credit.

g**********y
发帖数: 14569
15
每个人都有各自的原因,没办法模仿。可以模仿的是,熟能生巧。我见过的牛人,好像
都是工作狂,从来没见过偷懒的牛人。

【在 S******1 的大作中提到】
: “工作上碰到牛人,才知道什么是更快。”
: 有研究过他们怎么做到的吗?

n****e
发帖数: 2401
16
只知道武术气功的人,再怎么培养能力,也不可能干得过玩枪炮的。
f*****u
发帖数: 308
17
牛逼哥解释下你这里所谓的武术气功和枪炮对于码工分别指的什么?

【在 n****e 的大作中提到】
: 只知道武术气功的人,再怎么培养能力,也不可能干得过玩枪炮的。
w**z
发帖数: 8232
18
就是,资本家也不傻,如果,靠嘴皮子就能往上爬的地方,还不如赶快离开。

【在 g**********y 的大作中提到】
: 每个人都有各自的原因,没办法模仿。可以模仿的是,熟能生巧。我见过的牛人,好像
: 都是工作狂,从来没见过偷懒的牛人。

c*****n
发帖数: 123
19
mark thx!
o**********e
发帖数: 18403
20
赞!
相关主题
刷题究竟要占多大比例看来刷题还要兼顾brute force解法
问问大家lc只刷自己想去的公司的题可以么也来谈谈刷题
这样在公司刷题安全吗?每次刷题都有新发现
进入JobHunting版参与讨论
n****e
发帖数: 2401
21
愚昧,这正是你要注意观察揣摩学习的最好机会。

【在 w**z 的大作中提到】
: 就是,资本家也不傻,如果,靠嘴皮子就能往上爬的地方,还不如赶快离开。
w**z
发帖数: 8232
22
对学这没啥兴趣。

【在 n****e 的大作中提到】
: 愚昧,这正是你要注意观察揣摩学习的最好机会。
m***z
发帖数: 108
23
不错,写的很中肯,比programming版整天吹牛皮的那帮人说的好多了
s*****e
发帖数: 1679
24
Regular expression这里说的一点不错。赞lz
s******3
发帖数: 344
25

CS
,

【在 g**********y 的大作中提到】
: 欢迎做系统设计的大牛们出来谈谈感受。
: - 最重要的能力不是你现在会什么,而是学习新东西并且很快可以举一反三。上了CS
: 的船,就注定不停地要跟新的,不会的东西打交道。如果没有参照,我以为自己学新东
: 西很快。工作上碰到牛人,才知道什么是更快。很明显,他们跟我一样没看过的code,
: 他们能够很快地zoom-in, zoom-out。我的认识是:一,他们的思维很快;二,他们对
: 系统对概念很清楚,知道这个系统输入,输出,有那些子模块,各自完成什么功能。有
: 这些知识在心里,他们能大致猜测系统是怎么布局的,因为主线在心里,他们一边找,
: 一边验证自己的假设。三,design pattern,对于大规模的代码,design pattern必然
: 反复出现,而且命名都是有规可循。一旦看见那样的命名,他们就知道相应的class,
: interface必然有定义/实现。知道要找什么东西的时候,大海捞针就容易得多。

n****e
发帖数: 2401
26
那就继续练武术气功,即使成为武术大师,在枪炮前还是不堪一击。

【在 w**z 的大作中提到】
: 对学这没啥兴趣。
b*********e
发帖数: 21
27
好文必须顶!
b*******g
发帖数: 757
28
ding
1 (共1页)
进入JobHunting版参与讨论
相关主题
也来谈谈刷题挑战bug free
每次刷题都有新发现谈一点找工作面试的感受和建议(cs entry level)
面试时,为什么题做出来了,还是不让过?发现CC150有很多错误
哪些网站可以提交代码刷题的?郁闷死了,顺便贴个Amazon电面面经
面试遇到自己准备过的题分享一个LeetCode解答的网站
面试一个老中马工题目太多了,做完就忘。。。。
刷题其实也没什么, 有问题的是公司的面试设计请教GitHub上放什么比较好?
刷题可以提高智商,尤其是改行的刷题究竟要占多大比例
相关话题的讨论汇总
话题: 代码话题: cs话题: 语言话题: 知道话题: 东西