有编程基础,辞职每天自学四小时编程,做git项目,刷leetcode。会比大厂在职的程序员成长慢吗?

ww13142010


比不上哦,原因是别人都在平台上一起交流学习,所以考虑的东西比编程这种工具的应用要深一些。而且4个小时时间不算多哦。其次决定你实际成效的是思考的深度,而不是做题的多少,虽然实践能够加深或者矫正你的认知。你可能以为会做这些题目就可以进大厂了,但事实是基础好只是能进去的前提之一,别人还要看你做的项目,这能反应你解决问题和创造价值的能力。你现在能力还不算强,看不到全部的情况,所以会被假象欺骗,也因此希望能够进入大厂给自己加资历,但事实是你越这样想越进不了大厂。给你个建议,请试图解决自己领域内最难最麻烦,别人都不愿意解决的问题,这样你就不至于看不到全部的世界,并开始朝着大厂的人走的方向去努力,你会自己去创造价值,并学习有意义的东西,而当你做到这些的时候你就发现你不需要进入大厂来给自己镀金了,你自己就是金子。你会发现你在做你爱做的事情,这件事情给你带来了钱和荣誉,而且它解决了现实中的问题。为此你必须跨过几大障碍:懒惰、时间的坚持、延迟的奖励、忍受暂时不喜欢的环境。最后送你一个亲切的问候,mua~


mxmxlwlw


毋庸置疑的:会。

我自己在it行业已经混了十年,给你讲个真实的例子:我公司以前有个哈工大的研究生,在做行政工作的。觉得编程工资高,有前途,就自己自学java编程,据说自学了有2,3年。然后来公司的时候,技术总监面试摸了一下底:能干活,就是初级工程师的水平,在公司java开发水平属于垫底的。如果不是老板介绍来的,估计都没有面试机会。如果在公司上班的程序员,3年如果项目成长够快的话,都可以成为高级程序员了。

为什么会有这么大的区别?编程是一门实践科学,需要不断的去解决现实中的问题,才能不断获得成长。自学练手的项目做出来就好了,并没有什么实际的用户去使用,给你提各种奇葩的需求。实际项目给客户用之后会出现各种各样你想不到的问题,产品,客户,测试,项目经理,运维,甚至客服都会对你的项目产生各种影响。大厂的程序员的项目都是影响千万用户,甚至上亿用户体量,一点点细节没注意到,就是成千上万用户被影响。就像玩游戏一样,你一直在新手村砍些什么花花草草怪物升级,轻松经验少,别人已经在下大副本,过一次副本经验值够你刷新手村怪物好几个月。时间久了,差距自然就天壤之别了。

所以,要进步快就是准备个差不多,就赶紧去面家公司上班,去实际的项目中去锻炼成长,会比自己闭门造车效率高多了。


子安之路


本人是一个前端工程师。我的观点:自学比大厂在职成长更慢。


分析一下,github项目应该是指参与到开源项目的开发。这个我有一点发言权:我参与了harbor的一个较为独立功能的前端开发。

我学到了什么呢?PR的分支管理?前端代码的整体架构?还是说变量函数的命名规范?emmm....其实都有学到一点东西。学到最多的估计是熟悉了Angular的代码并进行开发,毕竟在此之前,我都是Vue阵营的。整体来说,开源项目和实际项目有一定的差距。而且开源项目的逻辑复杂度并不一定不会比实际项目高。就算harbor有多语言配置、各种组件高度抽象。

再一个非常现实的问题,如何参与到开源项目?我的经历估计没啥可复制性:我司后端在工作项目中用到了harbor,然后根据业务需求提出了新的特性反馈给社区,然后我参与到了其中。emm...开源项目经验也是来自于实际工作,就很现实。据我个人了解,开源经验一般是解决issue、完成feature、或者是在某个生态圈自己产出项目。这里面对开发者的要求也是一步步往上升。


leetcode我不是很熟悉,不过在类似的学习平台上也做过些算法题。工作中作用蛮大的,建议去刷,过程中要着重看下别人的思路,涨见识!


最后说下,我为什么认为大厂的在职员工成长更快。

1.同事间互相补充,沟通更方便。项目有需要用到的新框架,新组件。可以直接在群里发个消息,基本上会有人知道,然后可以很快上手,解决问题。比如我之前调研了xterm,实现了浏览器的shell功能。同事在其他项目里或新需求有用到,就不需要再去从头开始了解。比如我想把ts引到项目中来,有个同事之前在另外的项目实践过了。那我就可以少踩很多坑。


而一个人的话,碰到坑,基本只能去论坛、社区里求助;新知识需要一个人找资料、再去消化。当然,这样的获益会大一些,只是时间成本会大更多。


2.项目督促学习。每个deadline,需要我们有完成需求,或者有文档产出。举个例子:我接手的项目需要我去调研openShift的UI项目。迭代出调研报告。那我就得去好好看,我还得思考怎么和实际项目结合起来。

自己学习的话,说实话,这里是非常大的坑。很容易没有重点;或者说学到了东西,没有实践的机会,知识学到了也很容易遗忘。


ps: 工作的成长快,其实也有个大前提:不能只做一些重复的业务工作。


Humiliter


刷 leetcode 我知道,你在 leetcode 上做算法题,刷算法,可能想通过这种方式来提高自己的算法能力,毕竟程序员面试的时候,算法是比较重要的一环。

但是做 git 项目是什么鬼?git 是什么?是代码管理工具, 是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。题主貌似没明白什么是 git 吧?这样的话,在家自己学习容易误入歧途啊!

你应该想说的是在 GitHub 上学习一些开源项目吧?GitHub 是一个开源项目的社区,是可以进行代码管理,里面有很多开源项目值得学习。


建议你在自学编程期间一定要搞清楚各种工具和技术之间的概念,概念都搞不清楚的话,容易学着学着就走错路了,就跟古代武侠上的人一样,闭关练功,容易走火入魔


一个人的成长和学习,无非这两条道路,一个是自我主动学习,一个是在工作实践中提升自己

但是一个人真正的提升,是坚持两条道走路,而不是只坚持其中一个。


自己在家学习,自学当然不错,但是自己学的时候,其实成长和提升的都比较慢,并不是自己在家学习的时候,很难控制自己的时间,无法控制懒惰,也无法合理管理时间,抛出去这些因素之外,更重要的是自己学习,是一个相对缓慢的过程,自己学习很容易误入歧途,在学习的过程中会经常走弯路,所以会缓慢,有时候,会跟实践脱节。一旦这样的,你学习的成本会大大提高,学习的效率会大大降低。


而在工作和项目实践中学习提升的话,是结合实践的,实践是检验真理的唯一标准,实践也是矫正你学习路线的一种方式。在项目实践中,会经常遇到一些现实性的问题,实践性的问题,而这些问题,可能会让你攻坚克难,你一旦把他们克服了,提升有可能是质的改变。这是自主学习不能相比的。


自学,往往都是一直在学,而不是在克服困难,学的时候,看别人讲,看书都觉得对,但是只有实践的时候,才知道你自己有没有掌握。而实践真正的项目,往往会遇到很多问题,解决问题才会让自己有质的飞跃。不仅让你学习了,而是也提高了自己的解决问题的能力。


尤其是编程这个行业,我感觉编程重要实践,所以在项目中历练比自己学提升的更快,更好。


非著名程序员


我自己在一线互联网行业也从业3年了,也是从小白一路走过来的,这个问题还得的从自己的现有实力出发来分析。

如果是新手:

推荐去大厂工作。新手什么概念呢,就是知道一些编程语法和熟悉一些编程框架,比如Java常用的SSM(Spring+SpringMvc+mybatis)等,没有太多的实际开发经验。对于新手来说,编程知识可能给不是他们最缺的,而是实战经验。因为很多实战经验是光靠学习基础知识、刷题是体验的不到的。虽然刷leetcode对程序员锻炼思维和算法能力有很大的重要性,但是在实际开发中用到的还是相对较少。另外就是做git项目,github上顶级项目基本都是根据实际业务场景研发的,脱离了业务场景这个顶级项目就没有灵魂了,对于一个新手来说,连业务场景都不清楚怎么能参与github顶级项目呢。参与github上的普通项目其实对自己成长和经验来说提升真不如去大厂工作来的快。而且在大厂可以多请教一些公司的大佬,会得到不错的成长。

如果有3-5年工作经验:

推荐先刷leetcode等然后再去大厂实践。这里3-5年的工作经验并不是仅仅指具体的3-5年工作经验的同学,实际上指的是有工作经验接触过不少业务场景,但是对一些技术原理、算法等并不是很了解,又想进一步提升自己的人群。这部分人群如果在公司继续做项目有成长但是不大,大部分工作都是基本的CRUD。所以想提升自己就要从底层、原理入手。这时候刷leetcode可以提升算法能力。同时可以参与一些在工作中实际应用过的github开源项目,如zookeeper等,这样不仅可以提升自己对技术原理的掌握,还增加了自己参与顶级开源项目的经历(这个对找工作来说很重要)。从底层原理提升自己后就可以去大厂实践下,看看大厂是如何将这些底层技术用到实际业务中去的。

总结:不能盲目的去说哪种方式提升更快,而是从自身具体情况出发。新手建议去大厂工作提升自己。有开发经验但是想提升自己对底层知识认知的同学,可以先刷leetcode算法、了解相关技术原理、参与一些gittub开源项目提升自己,然后在去大厂实践。


Java读书笔记


慢!而且这本身就是一种错误的学习方式!
自己学习编程和企业实际开发完全是两回事,自己学习永远固定在自己的思维当中,你并不了解企业开发中的技术是什么。

最近几年我在面试Java程序员的过程中发现一个严重的问题就是,刚毕业的学生和培训班出来的程序员严重与企业开发所要求的的人才脱节。这些人技术可能真的不错,Git开源项目也学习了很多,leetcod的题也刷了很多,但是唯一缺乏的就是对某一实际业务场景的思维理解能力,无法将学习到的技术融会贯通,在被问到某一个实际的业务场景中,面试者并不知道该使用什么技术去解决问题

。就像我们学习了很多英语单词,但是当与老外对话的时候,我们常常忘记改使用什么单词与他沟通。

所以,长期自学编程并不是一件明智的策略,我的建议:

不管学习什么语言,只要掌握基础内容,就应该找一个公司去实习,从初级程序员做起。当你参与公司的项目中,你会发现你的技术会快速成长。在企业项目开发中,你才会学习到企业真正需要的技术,通过接触不同的项目,你才会有实际开发的经验,才能锻炼你的思维能力,才能锻炼你的团队协作能力
。而自学编程这种封闭式学习模式,是最不可取的。


阿迈达聊技术


如果你的做git项目是指参与到大型项目的开发中的话,那完全不会,在国内有莫名其妙的大公司情怀,其实国外很多大神都不是在所谓的大公司,都是出名后被大公司挖去的。

你可以给自己制定好规划,找一个现在流行的框架,比如kubernetes或flink,加入社区,前期先从contributor做起,后面努力下成为PMC,有志者事竟成,只要目标坚定,一定能成



机械视角


首先需要明确一点,业务驱动的作用是自学给予不了的。业务会带给你对技术细节研究的深层次驱动力。

你通过文档学习技术,按照demo部署,然后跑通几个例子。这些太简单了。

比如你用k8s,但是你只会本地搭建,跑几个例子,用istio,跑几个例子。这个是没什么技术提升的。你需要深入到源码的世界里面,结合公司的业务,设计出适合的架构出来。这个的提升是指数级别的。

git项目是可以做的,国内很多大厂也在做,但是国内气氛没有国外好。你会遇到很多问题,时间成本是很高的。建议先成为大神,再去做github项目。这样github会给你一些想不到的东西。你会考量通用型,易用性,兼容性。而不是在公司只做一个适合当前业务的产品。

letcode是要刷的。基本功,但是你还要学习操作系统原理,编译原理,数据结构和算法,网络通信原理,等等基本原理。这样你的成长结构将是非常稳固的。以后所有来的新技术,对于有原理知识傍身的开发,都是很容易的。应用级是很简单的。理论深度上不来,你是不会走多远的。年龄变大的速度绝对超过了你这样操作的成长速度。


位加


肯定会慢的,纸上得来终觉浅。不要说大厂了,可能比不过很多学习氛围比较好的中小型公司,只有自己去做商业项目才能明白用户需求,只有自己去把技术运用到实践中才知道突破点在哪。

闭门造车只是在原地踏步,如果是初级码农的话可能还有效果,但是到了中高级的时候,不是单纯的写代码就行了,后面你还要懂设计模式,跨部门的交流,厉害的还要在甲方提需求的时候挖掘潜在需求,这样就不要一天到晚改需求了。

然后如果想往技术深耕的话,除了架构师其实还有现在比较热门的人工智能行业,这是我们一个新的进阶路线,很多人都在说学人工智能就是转行,其实不是,我以前的目标就是架构师,后来我脱坑了。

人工智能核心就是算法,算法就是一个有智能的程序,我们本身就是搞程序开发的,我感觉就是我们技术深耕的另外一个方向。

知道我为什么现在有时间和你们在头条、问答上面闲扯吗?因为我训练模型的时候可以自由活动,搭建一个模型就几百行代码,然后看着计算机训练模型就行了。

如果有想往这个方向发展的小老弟可以找我私聊啊,我告诉你我的上岸经验


架构师交流圈


辞职自学这条路我认为走不通,会被那些在大厂工作的人拉开不小的距离。

实践出真知,编码除了理论要掌握之外,我认为最重要的还是要去项目中实施,试错,然后才能编码水平才能有一个质的飞跃。

下面就几个方面简单阐述一下其中缘由。

正常工作的编码人员为了解决项目中遇到的各种问题也在自学

身在程序员这个江湖,很多时候身不由己,同时分你几个新项目也是常有的事情。项目急着上线,要同时get几种新技能(语言或者框架)。这个时候就考验个人的自学能力了。在这种高压情况下的自学速度,可以说完胜那种辞职在家悠哉悠哉的自学速度。

程序员这个行业,知识更新换代很快。需要通过不断学习跟上时代发展,才不至于被淘汰。自学能力要强,是能在程序员这个江湖混下去的基本功。

所以说,想通过自学来提高自己,完全没必要辞职。工作中同样可以。

辞职在家自学需要很强的自制力,很难坚持下去

懒惰是人性,一个人在没有学习环境的前提下,很难做到完美的自制。除非自己制定一套很详细的学习计划,而且要雷打不动的坚持下去。如果没有这种自学,最好还是不要盲目的去尝试。

我感觉边工作边自学是最理想的状态。有工资拿,还能不断的提升自己。为什么非得要辞职才能去学习呢!


分享到:


相關文章: