send_linux 发表于 2013-08-14 14:40

没有天赋一样可以成为顶级程序员!像程序员一样思考!(获奖名单已公布-9-11)

获奖名单已公布,详情请看:http://bbs.chinaunix.net/thread-4098339-1-1.html

你是否在编写程序时感受到挣扎,即使觉得已经理解了自己所使用的编程语言?
你是否阅读了一本编程书籍的某一章并能够顺利理解,却无法把自己所读到的东西应用于程序中?
你是否能够理解自己在线所阅读的一个程序,甚至能够把每行代码所完成的任务告诉其他人,但是自己在接到一个编程任务后,却面对文本编辑器的空白屏幕大脑一片空白?

这就说明,你的程序员思维还没用完全运作起来!什么是程序员思维,就是以程序员的思路来考虑事情。
也许下面这个小故事能够帮你理解什么是程序员思维:
老婆给当程序员的老公打电话:“下班顺路买一斤包子带回来,如果看到卖西瓜的,买一个。”当晚,程序员老公手捧一个包子进了家门。。。老婆怒道:“你怎么就买了一个包子?!”老公答曰:“因为看到了卖西瓜的。”

没有超常天赋对于成为程序员而言并不是致命的。程序员的技能和思维都是可以训练的。

本期话题:
1、您平时是如何训练您的程序员技能和思维的?
2、举个例子,说明您在程序设计中遇到的问题并如何运用程序员思维来解决的。
2、作为老鸟,你对程序员新人有何好的建议?(别说转行啥的啊:)

本期嘉宾:
ChinaUnix论坛Linux编程环境版版主:duanjigang
ChinaUnix论坛Linux编程环境版版主:crazyhadoop

活动时间:
8月13日-9月3日

活动奖品:
分享内容最有价值的Cuer,可获《像程序员一样思考》一本,共五本!

奖品简介:
http://images.china-pub.com/ebook3765001-3770000/3768002/zcover.jpg
    原书名: Think Like a Programmer
    原出版社: No Starch Press

    作者: (美)V.Anton Spraul   
    译者: 徐波
    出版社:人民邮电出版社
    ISBN:9787115316585
    上架时间:2013-5-30
    出版日期:2013 年6月
    开本:16开
    页码:238



oyj281643 发表于 2013-08-14 16:15

书呢?怎么没有看见啊!

rover12421 发表于 2013-08-14 18:01

1、您平时是如何训练您的程序员技能和思维的?
   写代码的时候,我会经常的想有没有更好的解决方法,有没有减少代码量的方法,能不能提高重用性,用抽象还是接口,怎么命名比较合适,参数数量怎么处理,在处理容器插入删除等操作时,会常常想是否加个临时容器、是用for还是用while等等这些,都渐渐的形成了一种习惯。有时候只是在脑海中短暂的思索,但有时候却能困扰我几天。
   游戏算不算?我比较喜欢玩数独,推箱子这一类的,哈哈
2、举个例子,说明您在程序设计中遇到的问题并如何运用程序员思维来解决的。
   统计log中的用户数。有一个应用会纪录用户的关键操作,并上传到服务器,服务端按天写入log。现在需要统计某一天有多少用户使用了应用。
   已知log里有很多信息,现在只需要提取用户标记,并去重就行了。怎么提取用户标记?首先看看log中有那些纪录是带用户标记的,通过比较选择一条有规律的纪录,写成正则表达式。
   用正则表达式提取所有匹配的纪录。提取的可以是整行匹配,也可以是只提取用户标记。考虑是提取整句还是标记。
   看看使用的纪录规则,最前面都带有时间,而且是精确到分钟的,而这个规则同用户可以出现多次,意思就是必须去重。去重当然是使用用户标记就行了,带了时间反而麻烦。
   所以提取只提取用户标记。
   提取之后用什么存储?Arraylist?Verctory?String[]?这些都是需要再次对存储结构去重复的。想想还有一个HashSet,自动去重,如果用HashSet的话,提取完用户标记就知道结果了
3、作为老鸟,你对程序员新人有何好的建议?
   在没有思路的情况下,尝试列举问题中的已知量和未知量,看看他们是否有联系,尝试推导,和反向推导。尝试写出解决问题的步骤,写完后看看是否可优化,可改进的地方,最好写出多种解决方案,对比那个最好,最合适当前的要求。多讨论。

rover12421 发表于 2013-08-14 18:03

本期话题:
1、您平时是如何训练您的程序员技能和思维的?
2、举个例子,说明您在程序设计中遇到的问题并如何运用程序员思维来解决的。
2、作为老鸟,你对程序员新人有何好的建议?(别说转行啥的啊:)

两个“2”哦:mrgreen:

forgaoqiang 发表于 2013-08-14 18:14

本帖最后由 forgaoqiang 于 2013-08-14 18:43 编辑

作为半吊子山寨程序员 发表下自己的看法吧 慢慢编辑内容 先抢个地板坐坐 请不要急哈~~
话说这次活动也不算是试读吧 又是没有样章的样子

1、您平时是如何训练您的程序员技能和思维的?
    个人是个经验至上论主义者,经验是最重要的,什么新的技术或者算法,哪怕是空无虚渺的思维方法都要去试一下才知道好不好,因此我认为最有效的方法是不断的尝试新事物,并作笔记,不断地整理,利用思维导图的方式,整理再整理,并书写每日技术总结,最终一些经验结合在一起,经常会对某些技术问题有茅塞顿开的感觉。
    自己摸着石头过河那是不靠谱的,湿鞋事小,掉河了溺水就歇菜了,因此要去学习一些别人的经验,图书是很好的途径,比如《程序员的思维训练--开发认知潜能的九堂课》这本书就很好的讲解学习的方法,程序员的思维问题【Ad:关于思维训练博文】,《黑客和画家》已经超越了程序员思维的范畴了,讲解了创业以及对待时代事物的看法,也是难得的指导书籍之一。


2、举个例子,说明您在程序设计中遇到的问题并如何运用程序员思维来解决的。
    程序出问题,需要使用程序员的经验和思维来解决,一定要理清问题的逻辑顺序,这样才好一步一步的解决问题,比如今天我看到的关于 shell 的处理问题,一个shell文件接收一个参数,然后输出处理后的结果,然后在bash中直接调用没有问题,但是写到程序中的时候,就出现对参数内容截断的问题。

为了解决这个问题,就开始考虑替换传入的参数,发现传入的参数只要不包含空格,就能正常处理,于是就明白了问题所在了,开始想出多种解决方法。
①使用IFS更改定界符,不再是空格即可,比如 IFS='|'
②使用环境变量,先将要传入的参数export 成为环境变量,然后改掉程序,让程序从环境变量中读取参数,而不是直接 $1 传入
③对传入参数加上新的定界符,比如 本来 a="i like" 做 $a="'$a'" 这样的处理也能解决问题
④使用xargs -0 选项,保证空格不被当做定界符来处理
....

总之遇到问题后,找到根本问题所在,并且提出多种解决方法,这样有利于扩展思维,而不紧局限于一种解决方法。


2、作为老鸟,你对程序员新人有何好的建议?(别说转行啥的啊:)

哈哈 这个问题我说出来可能不太有说服力 本人是山寨出身,而且一直在做山寨的程序,目前也只有3年左右的程序经验,完全算不上老鸟【novice而已】而且语言非常混杂,完全是为了功能需要,一个程序中混杂3、5种语言都是正常的。

个人见解是,程序员总会走到头的,趁年轻多学东西,等有家庭之类的”套牢”之后估计就很难学习新技术了。做好转型准备吧,技术虽然有意思,但是也挺累,PM虽然遭众人恨,但是也是“嫉妒羡慕恨”,一个技术出身的PM也许没有那么糟。

楼主的转行标题倒是提醒了我,这个也是挺不错的选择,只是程序员眼中容易出现非黑即白的观点,转行要注意自己本身的态度,很多东西其实没有对错或者说对错根本无关紧要,可能我是非科班出身吧,和程序员讨论的时候发现他们总是要分出个谁对谁错,很容易影响人际关系。

PS:本人大学生物技术专业。。。大家不要笑 :curse:






forgaoqiang 发表于 2013-08-14 20:09

2 2 更健康嘛~~:evil:

回复 4# rover12421


   

jieforest 发表于 2013-08-14 22:53

天赋这种东西对于程序员来说,主要是指逻辑思维能力。
数学差一点的人,逻辑思维会相对弱一些。
其实程序员这个行业,涵盖范围太广了。
如果你是在大型的外包公司,程序员可能只是软件流水线上的一名蓝领程序员,按照严格的规范和要求编写符合规范的代码,仅此而已。
如果你是Web前端程序员,你整天打交道的是HTML或HTML5、CSS3、JavaScript,还有各种素材图片。其中,除了JavaScript会用到一丁点逻辑思维,基本上用不到多少“天赋”吧!

这里我想反问一句,什么是“顶级”程序员?“顶级”程序员的衡量指标是什么?
用钱、薪水来衡量?用出书的多少来衡量?用发明了某种语言、某种框架来衡量?
我个人感觉,没有放之四海而皆准的标准。你们同意吗?

jieforest 发表于 2013-08-14 23:00

不管怎么样,书还是值得一读的。这里我亲自整理了一个试读版,见附件:

fergon 发表于 2013-08-14 23:12

这种书多半是泛泛而谈的吧?作为正式学习程序语言前的热身,象一些概论什么的。

send_linux 发表于 2013-08-14 23:34

fergon 发表于 2013-08-14 23:12 static/image/common/back.gif
这种书多半是泛泛而谈的吧?作为正式学习程序语言前的热身,象一些概论什么的。

这个应该是这样的,不过是方法论吧,有的时候看看方法论还是挺有用的恶哈
页: [1] 2 3 4 5
查看完整版本: 没有天赋一样可以成为顶级程序员!像程序员一样思考!(获奖名单已公布-9-11)