萧井陌回答

优秀的程序员会告诉你打根基的重要性,会劝你在厚积薄发前要隐忍。

+++基础的分割线+++

编程语言,《程序设计语言-实践之路》《concepts of programming languages》

计算机通用知识,《csapp》

算法、数据结构,《算法导论》

程序设计、结构,没有书推荐

软件工程,这个词大家理解不同,我以为,《人月》《代码大全》《the pragmatic programmer》《sicp》、讲测试讲重构的都是软件工程,其实上面设计模式也是软件工程,哈哈

这些书,初时读来感觉全无作用,而且要读多次才能体会其中意味,所以叫它根基也是十分合适,你根基越深才能爬得越高嘛。

+++方向的分割线+++

你想自己选自己的方向还是被人忽悠方向?

我的想法是自己都尝试玩玩,然后做自己喜欢的方向。当然,程序员的生态金字塔是上面做工具、基础设施给下面人用来给普通人编程序,所以你选方向可以参考一下这个金字塔模型

+++爬坑的分割线+++

方向定下,然后就是做事了,一大误区就是 【追求最好的东西】,于是非得弄清楚:

如果你是一个*nix世界的玩家的话,你应该知道有一个jargon来上面的毛病,叫yak-shaving,我以前提过几次yak-shaving,但是很多人看不懂,它的字面意思是Any seemingly pointless activity which is actually necessary to solve a problem which solves a problem which, several levels of recursion later, solves the real problem you‘re working on.

对了,像是不同范式的编程语言、不同的开发环境是应该尝试体验一下的,不过这种建议书上都写了,我这里说显得有些废话了。

所以说,不能被无关的东西弄偏了目标,要专注,坚持。

等你学深了一门语言,就算是学另一们其他范式的语言也不会太难,你学会了opengl,dx也就看看就能写了。

所以求多不如求专,深度到了,再花20%的时间去扩展一下广度即可。

+++重要的分割线+++

包装自己的第一步是提高实力

包装的第二步是定位

程序员的包装定位,无非稀缺和独特这两点。物以稀为贵,稀缺就是要做到不可替代,这很好理解,比如你知道世界第一高峰是珠穆朗玛峰,如果没看过禅师精选集你很难知道第二高峰是乔戈里峰,但文青特别偏好乞力马扎罗山,不爬不跟你结婚,为啥?独特性嘛。。。我不跟你比高,我和你比文化底蕴,于是就赢了。

由于你有实力,所以你应该尽量把自己的实力包装成稀缺属性,你是专家嘛。。然后你实力多,应该把独特的实力包装出来,避免和他人共同曝光,以免被人压在身下。

包装的第三步是推广

推广就是让人知道你做得好,强化你的个人品牌,可以用博客、知乎、mailing-list、github等,通过写文章、参加线下聚会演讲、回答问题、帮助他人等方法。这个用好了是门学问,用不好就是装逼,不展开了。。。

记住不要匿名,匿名你基本啥也得不到

有人明明技术实力强,但是由于没有包装好,或被埋没了才能,或被贴上了各种不应该有的标签,或被人偏见看待。比如 赵劼 的c#和 vczh 的微软标签

有人明明实力一般,但是善于鼓动小白,包装得好,所以有一批忠实粉丝,这种人我都不太敢说名字了,呵呵。。

+++结尾的分割线+++

要想优秀,得有巨大的推动力,你为啥想成为优秀的程序员?你的推动力是什么?

本科生应该学好啥?

我觉得本科生具体应该学好的知识如下 :

  • 语言:C和scheme,两个极端范式足够了
  • 数据结构和算法,《算法导论》
  • 计算机系统,《csapp》
  • 软件工程,《sicp》

以下任意内容可加分,具体加多少分看别人喜欢哪点:

  • 并行算法和数据结构
  • 编程语言理论
  • 数据库、网络、编译器、图形、操作系统
  • 测试

完。

如何进微软?

  • 开拓视野,无论是编程语言、工具还是领域,都应该广泛尝试
  • 多写、多读代码,感兴趣的都可以写、读
  • 理解透彻,你经手的代码,要保证你从上层设计到底层实现都了然于胸,能在脑中回放数据在网络->内存->缓存->CPU的流向

要做好以上几点,必然要读好、学好这本书——《The Pragmatic Programmer》,程序员入门书,终极书,DRY,KISS。。。从做人到做程序员,包括上面说的几点,这本书教给了你一切,你所需的只是遵循书上的指导。

另外推荐你几本入门书:
程序设计语言-实践之路》,程序语言入门书,这本书你现在就可以看,会极大扩展你的眼界,拉开你与普通人的差距。
《Structure and Interpretation of Computer Programs》,软件工程入门书,这本书请务必看完,可以不做完题,效果同上。
《Computer Systems: A Programmer’s Perspective》,计算机系统(软硬件)入门书。
龙书作为一本入门书,写得实在太过糟糕,据说Coursera上的斯坦福编译器课比较好,应该可以让你不用从龙书入门。
《The Design And Evolution Of C++》,你逃不掉对C++的学习,看这本书可以让你选择是成为守夜人还是守日人。。。。
《Code Complete》

特别推荐《the art of doing science and engineering》

进谷歌?

我觉得你得先找到一个技术方向,树立一个以此技术方向为首要目标的原则,做好这个方面的事情,对这个方面的所有技术细节都务求深入了解
这是做好自己的本职工作,在做好这些事情的同时,你能力也就提高了。
总之就是不能三心二意,要专注。

然后呢,业余写些自己的小项目,就一直写啊写,写出来和别人的比比看,看看别人的设计和代码,然后改自己的,再写再改,如此再三,循环往复,设计能力和对编程原则的理解程度就逐步提高了
为什么要写自己的项目呢?因为公司的工作它偏业务导向,且你未必能全部参与,业余项目可以来点纯技术流且全部由你一人完成,一来补补缺口,二来磨砺一下技术,你可以不断改啊改啊,公司里的事情可不是你想改,想改就能改。

我觉得编程就这两方面比较重要:

  • 通过对细节的追求了解提高编程能力
  • 通过循环往复地写程序改程序提高设计能力和对编程原则的理解程度

我为什么要标黑呢?大道理软件工程讲了无数遍了,哪个不是张口就来?哪个人不说自己很重视软件工程?但大部分人对于编码规范,最佳实践都是一副“我们是在搞工程,我们是创业公司,我们求快,我们不拘小节,我们要的是代码不是测试”的态度,我没在这种地方待过,不知道大部分半夜加班到底是修bug多还是加新功能多?

人生道理小时候就学光了,小学就学了今日事今日毕,中学就学了卖油翁,伐薪烧炭南山中,酌油沥孔钱不湿,惟手熟尔,可知乎上还不是天天有人要捷径,有人找捷径找了几年了都。。。
所以呢,你要多写,多被艹艹,体验之后,道理你就懂得深刻了

当然广泛交友扩展视野多尝试一些新玩具之类的事情,书上都写得很明确所以我就不重复了。。

哦对了。。。。面试前1个月开始刷算法和数据结构,刷一刷还是有必要的,很多东西久了之后虽然你知道但是裸写起来还是会磕磕绊绊,别人都刷你不刷,在面试官眼里你就是傻逼了。当然你不刷也能碾压别人的话,不刷也是可以的。。

时间: 2024-08-05 10:34:52

萧井陌回答的相关文章

知乎萧井陌大神《编程入门指南v1.3》思维导图

??毕业之后才发现大学的基础课程是多么的关键,有幸在知乎上看到萧井陌大神的文章,打算将涉及的内容学一学,下午花了1h用思维导图将文章梳理如下,希望对大家有帮助(图片太大,因此进行了分割):

萧井陌WEB前端课程

详情请交流  QQ  709639943 00.萧井陌WEB前端课程 00.微信小程序 美甲商城 00.微服务的入门级微框架Spring Boot快速入门 00.基于java的微信公众号二次开发视频教程 00.leetcode 算法 面试 00.北风网 零基础到数据(大数据)分析专家-首席分析师 00.快速上手JMeter 00.Jmeter 00.2017年Java web开发工程师成长之路 00.R语言速成实战 00.R语言数据分析实战 00.Python+Django+Ansible Pl

这是我看过最精彩的回答

或许我没见过世面,但是这却是我看过对“怎么成为一个优秀的程序员,而不是一个优秀的码农?”最精彩的回答[全部复制粘贴] 其实我的心一直因为现在的工作[餐饮服务]而动摇,忽而想学网站,忽而c语言根基,忽而c#忽而java Android方向,然而当读到这个问答时,我坚定我所喜欢的iOS,不管结局如何(一辈子餐饮服务,一辈子底层,一辈子没法从事软件行业) 优秀的程序员会告诉你打根基的重要性,会劝你在厚积薄发前要隐忍. 优秀的码农会告诉你学啥底层.啥啥啥一拖就好了,学了python还要啥自行车啊,数据结

【知乎】怎么成为一个优秀的程序员,而不是一个优秀的码农?

怎么成为一个优秀的程序员,而不是一个优秀的码农? 9 条评论 分享 默认排序按时间排序 98 个回答 3844赞同反对,不会显示你的姓名 萧井陌 微信公众号:炼瓜研究所 技术社区 - 3844 人赞同 优秀的程序员会告诉你打根基的重要性,会劝你在厚积薄发前要隐忍. 优秀的码农会告诉你学啥底层.啥啥啥一拖就好了,学了python还要啥自行车啊,数据结构排序函数二分搜索这不都内置了吗?工作中永远用不到,学算法有啥用啊?成为高手有很多种方法汇编是个屁啊? +++基础的分割线+++ 列举几个我认为比较重

如何系统地自学 Python?

最近开始系统的学习Python,以及整理的一些资料.github记录着个人自学 Python 的过程,持续更新.欢迎大家一起来完善这个自学Python学习的项目,给后来者一个参考的学习过程.github项目地址:shfanzie/Systematically_self-study_Python 如何系统地自学 Python ? 网上 Google .百度文章一大把,不知道从何学起,只会使初学者更加的迷惑.首先,我推荐一篇 彭猫 在知乎上的回答:如何系统地自学 Python ?希望能给大家一个系统

为什么计算机能读懂 1 和 0 ?

问题:为什么计算机能读懂 1 和 0 ? 从小到大,我们被告知的都是,计算机只能读懂1和0,但我好奇的是为什么计算机它就能够读懂1和0呢,它是怎么读懂的?读懂后,又是怎样进行工作的呢?嗯...我想问的就是,最最基本原始的那个工作原理 回答: 萧井陌,私信问题不回,请提问邀请 玉来了 既然是问最最原始的那个工作原理... 从小到大,我们被告知的都是,计算机只能读懂1和0,但我好奇的是为什么计算机它就能够读懂1和0呢,它是怎么读懂的?读懂后,又是怎样进行工作的呢?嗯...我想问的就是,最最基本原始的

为什么有些大公司技术弱爆了?

[转载自互联网 http://blog.jobbole.com/96190/ ] 本文整理自知乎上的同名讨论帖:<为什么有些大公司技术弱爆了?>,有网友提问: 今年年初,到一家互联网公司实习,该公司是国内行业龙头.不过技术和管理方面,却弱爆了. 那里的程序员,每天都在看邮件,查问题工单.这些问题,多半是他们设计不当,造成的.代码写的一团糟,全是复制粘贴,连作者都没改,大家普遍不写注释,也不格式化,代码歪歪扭扭. 一个项目里,httpclient竟然出现了四种.一种是该公司研发部写的,一种是老版

计算机开放电子书汇总

转载来自 https://ruby-china.org/topics/29354,如有侵权请及时联系我. 开放书是指协议为Public Domain.Creative Common,以及一些开源软件协议(MIT.Apache.GPL等等)的图书.我在平时逛论坛或者刷github时,看到好的开放电子书时会将链接存 到博客的某个页面上.但是链接一多起来,查找就特别不方便,于是就单独做了这样一个网站. 目前这些书主要来源于github.gitbook.极客学院wiki和kancloud.一些我认为比较

我收录整理的优秀OC技术类文章

自定义导航按钮UIBarButtonItem 关于导航栏的六个小技巧 ios开发的一些小技巧篇一 制作一个可以滑动操作的 Table View Cell - IOS - 伯乐在线 一个iOS开发者的修真之路 - IOS - 伯乐在线 iOS性能优化 - IOS - 伯乐在线 block没那么难(一):block的实现 - 作业部落 Cmd Markdown 编辑阅读器 ARC 下内存泄露的那些点 - 作业部落 Cmd Markdown 编辑阅读器 产品经理日常工作职责分析与整理 - 大宝 - 博