购物吧

您的位置:网站首页 > 经验交流

「代码家」的学习过程和学习经验分享

作者:habao 来源:未知 日期:2020-10-30 5:50:27 人气: 标签:经验交流结束语
导读:每天,都会有人在微博上私信我,问我关于学习和成长的问题。这种问题我一般都不会回复某个j,毕竟每个人的情况不一样,每个人对待事物的性格也不一样,我不能夸下…

  每天,都会有人在微博上私信我,问我关于学习和成长的问题。这种问题我一般都不会回复某个j,毕竟每个人的情况不一样,每个人对待事物的性格也不一样,我不能夸下海口的说,你看某本书几个月就能如何如何,我能做的多数时候只是鼓励鼓励,其次我也从不认为我已经成长到一个多高的境界上,让我去给别人做指导,我还是当之有愧的。

  最近晚上有空,就想写写自己从第一次接触程序,到一颠簸学到今天的一些故事和经验,希望对大家有所帮助。

  我在快上高中的时候,开始接触的程序。那会儿家里有一本VisualBasic的书,30多页左右,也是家里唯一一本计算机类书籍,是我哥学校发的一本课外书,他对计算机貌似没有什么兴趣,就一直堆在家里,直到无意中被我翻到。

  书里的程序格外的简单,几行简单的英语代码,就能让计算机弹出一个对话框,当时看到简直神奇极了!跃跃欲试的在老妈店里的电脑上一步一步的敲下代码,弹出一个简单的对话框,那一瞬间,感觉像是推开了新世界的大门,从此一发不可。

  实践完VB后,又在小书摊,看到了一本《黑客X档案》,看着各高深的入侵,木马,盗号,试图努力学会这些技能,然后去跟朋友们炫耀,但一直都无法入门。因为需要太多计算机的基础知识了,不是写个弹框,或者计算器水平的人能搞定的。

  一旦开始买书,就进入了学习的第一个阶段:消费者阶段。当个消费者其实是个挺轻松的事情,对着书本照猫画虎,一会儿就能跑起来一个看着很有趣的程序。

  那会儿,疯狂的买各种书,但是由于周围没有人指导,买了很多类似21天系列的书,那会儿真的有这种书,我还抱有幻想⋯⋯觉得21天后我就⋯⋯

  现在想想国内的图书市场简直恶劣到一定程度。很多高校,教师升职评比需要考察发表书籍情况,导致国内一大批烂书其实都是高校老师发出来的。我现在依然认为国内95%的技术类书籍是不值得买的,除了像侯杰老师这种文笔很好的技术人以外。

  很多作者总是做不到『以读者能理解的顺序,而非自己认为的顺序』写文章,了不少对计算机有兴趣的同学。我一直很侯杰老师的另一个原因是侯杰老师的书,总是能把你最想问的,如同庖丁解牛,深入浅出的解答出来。就如同MFC框架(很早前的一个WindowsSDK框架,现在已经用的很少了),MFC是很复杂的一个框架,所有初学的人,都会问一样的问题:这玩意儿是怎么工作起来的?!,但所有国产的VisualC++的书,都避而不答,让你照猫画虎的做,就能弹出一个窗体。当初国内只有《深入浅出MFC》一书,讲明白了背后的一切。

  学完一些基础知识后,就进入了学习的第二个阶段实践者阶段阶段。所谓实践者,就是开始用自己所学,去开发程序,成为一名专业或非专业的码农,很多人的职业生涯,也就停留在了这个阶段,过上了小富即安的程序员的日子。

  我从消费者阶段过度到实践者阶段大概用了三四年的时间,其实已经挺长的了。我一直都认为我是一只笨鸟,无意中起飞,却飞了很久的那种。

  第一个是个学校的匿名聊天系统,就是所有人都可以登录学校的站点,然后会匿名匹配到一个异性,开始聊天,当时用的的开发,配合ajax+jquery,但由于当时技术太差,导致很多人聊着聊着就断线了,导致小产品不告而终。

  第二个是给我们信息学院开发的一个官网,用的PHP。在做这个网站的同时,我选修了一门叫《网络安全》的课程,这门课的老师叫陈,我曾当着老师的面儿,夸下海口,我开发的官网,...(大概这个意思)陈老师知道了我做的网站,随即下达一个作业:“谁能攻陷我们的官网,一个漏洞加五分...”,后来,咳咳⋯网站数据没有了⋯⋯有个同学用一个很通用的扫描工具,在他也不知道发生了什么的情况下,工具把网站内容都删除了⋯⋯恩,我犯了个超低级的错误⋯⋯GET请求可以删除数据,外加身份认证代码有误⋯⋯

  幸好,查看Apache日志的时候,发现删除请求到来的前几分钟,Google爬虫来过(那会儿Google还能用),随即马上去Google的缓存里找回了所有的数据。

  后来陈老师被学校了一顿,的是『鼓励学生校园网络』,我其实是极力跟学校执事说明这个错误是我犯的,陈老师做的并没有错,而且我到现在还是很喜欢陈老师这种教学方法,毕竟实践出真知。

  可能现在陈老师在教《网络安全》课程的时候,会以“当年有个学生....”作为开头,有时候想想也挺有意思的。

  再后来我花了很多实践学习Web安全相关的知识。写各种Web程序时,都会最大程度的考虑安全问题。

  网站攻陷后没多久,Android出来了,我买了第一部Android手机,然后自己照着文档开始学Android,动力的源头,是我听说写App能赚钱。赚钱真是学技术的很强的动力,之前写网站零零星星的赚了六七千块钱,作为同学里的小土豪,我又把目光转到了刚出来没多久的Android上。

  当时先定了一个目标,写一个图片类App,打算叫『无尽画廊』。因为很喜欢WeHeartIt(这个小众文艺图片网站。随即计划利用正则解析图片地址,然后再把图片呈现在App上。那会儿Java和Android完全零基础。

  自己在入门Android的时候线点起床,然后开始悄悄下床(不能吵着舍友),打开电脑开始研究加开发。到早上7点半左右就和舍友一起去吃早饭,然后上课。中午回来也不午休,开发到快上课,晚上基本都会熬到12点左右。持续了1个月左右,终于从零基础到开发出一个粗糙的1.0版本,发到了国内的几个App市场。反馈不是很多,但是都挺积极,随即决定开发2.0版本,还加入了广告积分墙。就这样超拼的持续了3个月左右。现在网上能看到的基本都是2.0版本。我从这个App里,也赚到了一些广告费,大概几百块。但是因为广告服务商倒闭了⋯⋯钱到现在还没取出来⋯⋯心痛⋯⋯持续更新那个App到快毕业的时候,选择了保送到北师大。

  暑假的时候去上海一家小公司去实习了,在实习的这家小公司,我做了一个到现在来看依然很屌的功能。现在来看是一个相当不错的GrowthHacker的一个案例(那会儿可没有增长黑客这个概念)。

  实习所在的公司,是做类似小米盒子的东西。当时的盒子,最重要的当属内容,版权还处于蛮荒时代的时候,大家纷纷解析优酷、土豆这类的网站,以最少的成本,优酷的带宽。简单点而来说,就是做视频聚合。视频聚合最麻烦的就是提取视频的真实文件地址,这样能为所有的创业公司免去版权纠纷,同时解决带宽费用问题。

  我去那家公司实习的主要内容,就是用Node语言做视频地址解析,费劲功夫搞定了几乎所有的视频网站,各种黑科技都用上了,抓包,逆向,HeadlessBrowser等等。搞定所有网站后,也算勉强跟竞争对手站在同一起跑线。实习第二周的时候,已经有些没事儿干了,就在这会儿疯狂的想法出现了!

  可能很多人还记得当年伟大的迅雷云播,解救了不知道多少个少男寂寞的夜。我们疯狂的想法就是要让我们的小盒子,能够流畅的播放用户从电脑上推送的任意种子文件,无需等待。在那会儿TV上,这种功能简直就是创举!

  想法出来后,我抗下大旗,开始用代码模拟迅雷云播的全套流程。开发的过程十分,得从不同平台的迅雷上抓包,寻找蛛丝马迹。优先从Web端模拟登陆和提交种子文件,这些都相对容易一些,最难的是如何提取到视频的真实地址。花了大概一周时间攻陷了所有的流程,然后公司买了10几个迅雷会员,又和各BT网站开始合作,了浩浩荡荡的用户增长之旅。具体增长了多少新用户,其实我心里没有数,但是看见旁边的小朋友,每天都在加服务器,优化Socket连接数,我猜那一周得新增了5-10万用户,更为壮观的是每到夜里,所有的迅雷账号里就瞬间塞满各种不可描述的日本电影,全部清空后,又被瞬间塞满。以至于后来,实习到第十七八天的时候,我的老板和CTO喊我过去,直接送了我20万期权,那感觉也是蛮爽的。后来微博上,这个功能也是火了一阵子,不过很快就挂了,起因是有用户在微博上at了小米电视和迅雷,让他们跟我们学着点儿⋯⋯然后,不超过半小时⋯⋯服务就挂掉了⋯⋯不过挂掉没几天我就去帝都准备研究生报名了。

  还有一件很爽的事,就是我上了研究生后的半年里,那家公司一直给我支付着工资⋯⋯每个月轻轻松松就有几千块钱零花钱⋯⋯再后来的后来,那家公司倒闭了⋯⋯

  快从上海实习结束的时候(实习一个月),我又认识了少楠,加入了AT!组织。AT!组织是一个分享优质原创动画的小团队,从此我从一枚野生开发正式晋升为一枚正规军。少楠是一枚非常优秀的产品经理兼设计师,跟着他学到了很多产品的知识和团队协作的技巧,也让我最后真的开发出了近百万用户的App。AT!组织到现在都是我爱的组织,大家虽然从事不同行业,但就跟亲人一样。每次都是一年一度最嗨皮的日子,都是我经历过最真诚的聊天。从后来做了AnimeTaste再到EverMemo,我第一感觉到团队的重要性,第一次见识到优秀的设计师和iOS开发者。

  实践者阶段之后,自己开始尝试创造。也是我认为学习的第三个阶段—创造者阶段,这个阶段是没有结束节点,就一直这么存在着。

  我大致是研究生一年级的时候开始摸到创造者阶段的门梁,大三的时候接触的GitHub,感觉是我学程序来,打开的第二个世界的大门(第一个,算是那个VB程序的弹框)。接触到GitHub让我第一次开始学习和研究脚本语言(Python,Node,PhantomJS等等),第一次开始接触真正的生产工具(类似Less,Sass等等),GitHub简直是求学者的宝库,你会很期待明天的Trending榜单上会是什么新东西冒了出来。

  那会儿在研究生阶段,每个月有了公司发的几千块钱,也开始入手了人生第一台iPhone,一台土豪金版的iPhone5s,买App太贵便起了越狱(现在都是买App了)。装了一款越狱后的Store(我忘了叫什么了),那个Store,在下载一个App的时候,有个超漂亮的进度条,我每次都会认真的的盯着那个进度条,一边看,一边感叹,一边也暗许自己也要在Android上实现一套,这也是我开始第一次开发自定义组件的初衷,也是NumberProgressBar诞生的最初原因。

  啃下第一个自定义组件,对很多人来说都是很痛苦的,我也一样,那会儿的Android组件少的可怜,不断的看文档,看源码,读别人的代码,试图搞清楚更多更底层的东西,不断的尝试运行,了一周左右(每天超过10小时投入),终于做出来了,照猫画虎的写好文档,做好测试,小心翼翼的发布到GitHub,然后发表到当时为数不多的GitHubAndroid分享社群里。

  再到后来的几个月,又陆续写了一些其他的库,发到GitHub上,其实我根本没想到会有那么多人去Star,百里挑一关昕和刘硕可能跟下手比较早有关,恩。

  创造者阶段,就是努力创造那些没有的,源自你脑海里的东西,而不是别人安排给你的。努力做到让更多的人用到,可以是一个App,可以是一个帮助人们提高效率的Chrome插件,也可以是一个简单的组件。创造是最挑战你对一个行业的热爱程度的。

  就我身边而言,我最的创造者是尤小右,将一个小的Framework,一点点的做大,再到做出国际影响力,真是个不得了的事情,也是很多技术人梦寐以求的事情。

  总而言之:如果你忽然觉得自己这几年一直处在一个很稳定的状态中,觉得自己没有提升,那你得想想是不是我卡在了某个阶段,一直无法突破,你是否需要做些什么,突破到下一阶段去。随后的文章我也总结了一些误区和突破方法。

  当年,有一本书刊特别流行,叫《故事会》。《故事会》后来销声匿迹了,在我眼里,取代《故事会》的是知乎。对,就是那个知乎。

  我其实一直很反对一个论调:“上知乎,学知识”。醒醒吧。知乎明显就是现代版的故事会好吗?!我不否认知乎存在有价值的知识,但,根本不值得你花那么多时间,去发现那少的可怜的知识。去读书吧。用最系统的逻辑,去学会一项技能,哪怕你去《硅谷百年史》里去读那些振奋的仙童半导体的故事,也比你不断的知乎看着水的一笔的帖子要强的多。现在,最的是大家在知乎上消费着垃圾,却依然觉得自己在吃着奶酪,学习的过程都是伴随着思考和痛苦的,如果你边笑边学习,那你真的得醒醒了。

  我在大三下半学期被保研后,开始了另一个小项目,一个叫“小熊词典”的App,起因是因为在学英语的时候,所有词典类App想要获取最全的词语解释都需要联网,流量消耗大不说,电量是最大问题,自习一早上电量就没了。所以,自己想动手写一个词典App,主打离线词库和快速查询。

  但最后的时候,小项目胎死腹中。说实话,整个App,已经开发到95%了,抓取了非常多有名的词库的数据,并且整理成了规范格式。但项目最后还是放弃了。即便今天来看这个词典依然很酷!(最丰富的词库和最快的查询速度)

  现在想想,当初一个人开发的时候,每次想到一个很酷的功能,就决定加进来,项目进度遥遥无期。完全没有项目管理的思,也没有意识到这样会很快拖垮我的体力,掉自己的意志和热情。

  对于很多初学者来说,总是抱着书学,其实也是同样的后果,你无法获得任何的反馈和激励,以至于觉得一件事情越做越难。学习的过程,最好能定一个简单的目标,比如:“我即便现在什么都不会,我就要做个小游戏出来,这个游戏应该是这样的一个玩儿法,blablabla。”,做出来后,快些去找用户,可以是你的朋友,也可以是你的父母,最好是那些不吝惜赞美的朋友们,让他们无形之中给你一些动力。

  我认识的朋友中,他们都有各种稀奇古怪的想法亟待实现,但最后,以信誓旦旦开始Sideprojects,最后却都销声匿迹了,这是不无原因的。因为很多的开发者在刚开始的时候,缺乏清晰的计划,却想一步登顶完美的境地。这是很的想法。就好比,我一个很少登山的人,却在第一次的时候,就决定登顶珠峰,结果自然可想而知。在实践自己想法的时候,最好能考虑以最低成本去展现你想法的核心部分,而非一个大而全的方案。

  从最小成本的想法核心,一步步的去验证自己的想法,去收集反馈,调整策略。最终抵达一个正确的目标。

  不得不承认懒惰是人的共性,当你看到别的朋友做出来很酷的小游戏的时候,你是否也有几分钟冲动的想要去学习游戏制作。不要等!快去买两本书抓紧学起来,哪怕你知道你这个热情的苗头很快会熄灭,但请不要放弃任何发现新的机会,在学习冲动消失之前,去入个门先。

  我每次跟人互相分享初高中生涯的时候,我总是能想起来我初中时候的一位语文老师,微胖,性格和蔼。她在一次复习准备期末考试的时候给我说:“你复习,不要局限在课本上,你背会24节气都是很有意义的,想看什么书,就去看,不要等,不要担心自己学不会。”

  这话对我学习新东西影响特别深,现在我基本上想学习什么东西,立马去学,即便可能一周后气馁了,放弃了,但是从来不会怀疑学这些零碎知识的意义。

  我学过吉他,写过毛笔字,写过Delphi,用Sketch画过icon,用Blender画过3D保龄球,写过Unity小游戏⋯⋯很多我都没下来,但给我带来的最大改变就是我不会去接受新事物,思考问题的时候总是能把很多场景考虑到。也能慢慢的找到自己最爱做的那件事情,更清楚的定位自己。

  我做Gank以来,很多开发者都过,以至于现在后台还挤压着2000多个没有处理。看过这么一圈而后,我开始不主张去看别人写的技术类文章。看别人的文章,你看到的是他想讲给你的,而这些可能只是他在自己的项目里用到的,而不是一个客观全面的角度。时间一长,以至于你只知道这个东西的一两种用法,更的是你可能已经对思考兴趣,总想走捷径,可能这样前期学习效果显著,但是后期会很快到达瓶颈。我想如果你经常读各种语言的文档,总是会有“啊哈!这样都可以,我以前都不知道还有这种方法存在。”的感叹,但你看别人的文章,却很少有这种感觉。

  至于主张看优秀的代码,其实是希望学习一个技术细节,是伴随着思考的。其实,评价某一种方案好与不好,是没有意义的。只有多积累其他人解决同一问题的方法,才能在下一次做决策的时候,找到适合当前场景的最优解,很多时候,也能触类旁通,给解决其他问题提供思。

  技术提升这个过程,其实是你对二手知识减少依赖的过程。二手知识是什么?就是那些经过别人翻译,总结的文章。一开始入门,大家看到的都是二手知识(也可能是三手,四手的知识),但,想要提升自己的能力,自己多去看些更的文档,体系化去学习。这个过程是很消耗体力和脑力的,但多,一定会有明显改善的。

  很多人看到不错的文章,总要@我的印象笔记⋯⋯我之前也会这么干,经常把一些不错的文章,存到Pocket或者Readability里,但,真的回顾去看那些文章的机会太少了,而收藏这些文章给我带来不少压力。有的文章,我只是浅显的读了读,脑子里总是得记着有时间了再去读完剩下部分,正如大多数人一样,再也不会去读了。久而久之,拖延症也就变得理所应当。

  有可能你会说万一哪天用到呢?其实我觉得再Google一次就好啦,可能会找到比这篇文章更好的。就这样。

  现在,看到一篇不错的文章,首先从标题推测下内容,再扫一眼,如果跟我猜测的不离十,我基本就关掉了。如果有跟我的推测大相径庭,我一定会一口气读完,而不是收藏起来以后再读。

  之所以我说收藏什么也改变不了,是因为读别人的东西,思考的过程是别人的。努力去减少从别人文章里阅读学习的频率,多去读一手资料然后自己总结。

  你有没有在PM说了要实现某个效果或者功能的时候,你站出来反对,说这样并不合理。如果你有过,那么我想你也是一个有理想的开发者,而不是一个“码农”。聪明人喜欢跟聪明人合作,大家一开口就互相明白了。没有人是天生聪明的,只是看的多了,想的多了,就显得聪明了。

  看些什么呢?看看一个优秀的App早起的冷启动是怎么做的,看看AppleStore或者GooglePlay上最近有没有什么新奇的App出现,看看TechCrunch上最近又有什么天马行空的项目融到了钱。

  想些什么呢?想想一个产品功能的存在有没有意义,他的下个阶段又会怎么发展,想想某段文案是否会降低产品某个功能的转换率,想想某个动画效果是否是很恼人的存在,如果你可以对微信加一个功能,减一个功能,你又会作何选择。

  我在西安读大学那会儿开始,就有一个小本子,记录着突然冲入自己脑海的一些靠谱或是离谱小想法。会写着类似:

  做个Everybigmoment,用手机记录自己的每个值得纪念的瞬间,然后打印成相册发给我或者放在网上当做自己的Profile。

  程序一旦崩溃,直接发送操作记录和堆栈信息到Dashboard,而不要让测试人员努力重现,写个SDK,搭建一套服务,一定会很好用。

  很多的Bug追踪服务,为什么不在错误堆栈旁边,展示出来这个Bug的解决方案,哪怕是一个StackOverflow的链接也好,这样我就不用去自己搜索了。

  那个小本上记录了自己好多做产品的想法,有不少,后来市面上都出来了相应的产品。也有一些现在看来很可笑,有的想法今天再翻看的时候,仍然会冲动的想要组团队去实现。

  另外,不要把自己的idea当做一个秘密,多和人去讨论自己的想法,在不断的否认和肯定中,完善自己的想法,idea是不值钱的,只有实现它才是有价值的。

  我在西安一个叫西北大学的地方读的大学,是一个普通的211。计算机专业客观来说比较一般,在来师范大学读研究生之前,我甚至没听说过ACM。

  Python、Ruby、Node这种编程语言在我们的计算机系,根本连影子都没有,所以正统的计算机技能点基本都是C,C++这样,这并没有什么错⋯⋯但子就变窄了很多,学长毕业去个腾讯、阿里,已经能被大家推上神坛。

  本科学校大二会给计算机系开一门日语课。为什么会给计算机系开日语课呢?因为很多外包来自日本。这个逻辑我一直都接受不能。这都什么年代了,我们早都不需要用外包支撑我国的IT产业了。

  学校给学生的定位更多是一个学校展示就业率的棋子,你会什么不重要啦,只要你最后有个工作就好了,不要拖累了学校的名声。

  来师大后,感受到了前所未有的转变。学校整体的气氛相当,很多老师们,都是各自领域的专家,你问一个问题,他们能给你引导出很多有意思的点。久而久之,你也会被这些感染到。有时候,我也会想,以后稳定下来之后,要不要去申请个美国名校读一读。

  目前能想到的一些学习的技巧和陷阱,大致都列了出来。都是我个人的一些学习的经验,如果对你有帮助,想必也是极好的,如果你觉得我写的有不合理的地方也欢迎指出。着去实施提及的一些方法,一定会对你的生活和职业带来改变。

  

下一篇:没有资料
共有:条评论信息评论信息
发表评论
姓 名:
验证码: