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

ww13142010


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

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

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

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

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

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


架构师交流圈


毋庸置疑的:会。

我自己在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


当你有了一定的经验之后,并且短期的目标是明确的时候不会,反而会比在大厂快一些

90%的程序猿的工作,都是增删改查,在大厂也同等,只不过大厂因为要面对海量用户和数据,这种场景下,通常会超越一般的开源软件的系统设计和性能瓶颈,因为开源软件是一个普适的设计,大厂没有办法,只能从开源里面脱离出来,你自己学习是不太可能会去研究这方面的,所以这点,你不如大厂

但前面的问题,其实也一样,如果你没有深厚的基本功,你想也别想,肯定没你的机会

对上面的问题,如果你找到一个专家级别的人指导你,你然后去自学,你就拥有了大厂的背景,而且是一个负责整体设计的人给你带来的经验,这会更加深刻,这样你自学半年,绝对会赶超一批大厂程序猿

基本功其实不只是leetcode,还有计算机基础,并发、操作系统、分布式理论这些,比如并发情况下,我怎么优化链表,提高并发?比如操作系统方面,如何利用磁盘的顺序写,提高性能?


编码大棚


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

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

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


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


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

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


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


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


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


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


非著名程序员


首先,这样的情况是无法断定的,因为具体得看学的质量怎么样,以及做的git项目的质量怎么样。不过一般情况来说,仅仅是问题中的描述的话,成长还是相对会比较慢的。以下给大家具体讲一讲原因:

第一,经验。程序员不论是否在大厂工作,通常都需要通过不断的工作或者项目来促进开发能力的提升,这个也是最为重要的,程序员要尽可能的接触到不同需求的项目或者工作,在不断的完成之后,会有所提升,得到的经验相比于自学还是会比较多的。

第二,信息资源。对于程序员来说,比如从事大数据、人工智能方向的程序员往往都需要大量的软硬件资源作为研发的基础,而自学者很难能够获得这些资源。另外,大部分程序员的工作需要多个角色进行配合,在配合的过程中也能互相促进,不少应用级程序员就是在合作的过程中逐渐成长为研发工程师的。所以,交流对于程序员的成长往往会起到更加重要的作用。

综上所述,对于初学者来说,自学在短期内应该是有一定效果的,且效果提升应该也是很明显的。但倘若想要继续深入,还是要通过工作尽可能的给自己压力去学习。大家对此有什么看法吗?


朝阳黄明律师


首先给出答案:会比大厂在职的程序员成长慢!其次,不建议辞职自学编程!

有编程基础的情况下,每天自学四小时编程当然是能进步很快的,但是想同大厂在职的程序员相比,显然还是不够的。

互联网大厂里的牛人大神非常多,普通人也多,虽然不是每一个人都能达到超群绝伦的技术水平,但毕竟平台大,接触的人都是这个行业里的翘楚,所以他们的眼界都是很宽阔的。并且大厂对程序员的代码要求很严格,所以即使是普通程序员也会潜移默化提升自己的代码功底,并且身边有大神可以交流,提升的速度那就更加的快了。

而如果选择辞职在家自学编程,那么以上的优势都不存在,只能通过书本、文档、教学视频或开源项目来提高自己的编程能力,而这些经验在实际的项目开发中是远远不够的,因为你在自己的项目练习中,可能并不会面对大量用户访问的高并发请求,不用考虑那么多的前端性能调优,也不用考虑一个项目的前后端架构设计等等。

为什么不建议你辞职来学习编程呢,因为你对产品项目开发可能还没有一个简单的了解,或是一个系统的学习过程,等你完全的了解现在开发的环境,市场需求,技术走向,有了一个简单的基础之后,需要全身心的产出或完全需要准备面试时再辞职。辞职不一定就能学好,不辞职就不能学好吗?也不一定。辞职之后,过度的自由会让你失去生物作息的控制。当然也有一个前提,在你的本职工作之外,确实有自己的业余时间,比如晚上8:00-12:00点,早上6:00-7:00点,周末2天。这个时间段完全可以利用起来,早上可以看看书,晚上可以敲敲码。

每一个程序员都有想进大厂的目标,而互联网大厂最看重的是程序员的计算机专业基础知识,所以建议你自学的同时,可以看看计算机网络,计算机组成原理、编译原理、数据结构和算法。


Neeky


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

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

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

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

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

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

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

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

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

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


麦子君


前言

介于自己从事软件开发行业已有几年的时间,自己以前也曾思考过类似的问题。所以,就此问题,谈谈个人对此问题的看法,希望个人观点能更有助于有类似疑惑的小伙伴做出自己更好的选择。下面,我们就从时间,资金和视野三个方向来探讨这个问题,并余留一点点思考给到大家

时间

辞去公司职务,我们就不需要关注公司业务的细节和工作任务的进度。同时,也不需要维护复杂的办公室关系。这样注意力能更加集中。我们也就有更多时间放在自学编程技术上。但是,能不能把时间有效地转化到自学编程技术成果上,这期间就需要我们更自律,更加严要求自己。只有我们变得自律的基础上,充足的时间对我们而言才算是有意义的。

资金

大部分人选择上班,我想其中一大好处就是,有一笔稳定的资金来源可供自己生活,从而无需担心自己生存的问题。但是,辞去职务之后,我们的生存问题能不能得到保障,我想这个问题必须得在我们自己内心好好过滤一遍。如果生存问题不能解决,那么谈论自学编程技术是没有任何意义地,因为经济基础才能决定上层建筑。

视野

进大厂,除了有一笔稳定的资金外,我想更重要的一点是,能让我们的视野更加宽广。除了技术上的挑战会历练我们之外,也能让我们明白一个产品是如何从需求转到最终落地的。

思考

自学编程技术,只是我们学习一门技术的一个过程,至于我们自学编程技术的最终目的是什么?这就需要各位小伙伴自己好好反思一下,从而能帮助自己做出更好的选择。如果你喜欢文章的观点,记得点赞关注。如果有不同意见,也欢迎大家拍砖留言。


关注我,不定期分享好玩的科技知识,一起探索科技的魅力。


drinkingcode


这个问题不太好回答,因为对比的对象是大厂在职的程序员。而大厂在职的程序员其实是分很多种类,并不能够一概而论,所以这个问题让我稍稍的有点点为难了。

在大厂的程序员可以粗略的分为两类吧,一种是领导者,一种是干活儿的。作为大厂的技术领导,其平台、眼界都不是中小型的互联网公司可以媲美的,遑论你这自己自学的人呢?正常情况下,除非你是绝顶天才,否则和这样的人几乎没有什么比较价值,因为差距实在是太远了。

那么比一般干活的程序员呢?说实话,也看具体情况。如果这个程序员在一个岗位上兢兢业业的干了十年CURD的工作,那么很可能你稍微努力一下,就比他厉害了。但是如果这个程序员在自己的岗位上努力工作,还不断的利用平台资源进行学习,那么你不太可能超过人家的。

简单来说,对于一个开发工程师而言,自己的努力固然是十分重要的,但绝对不可以忽略了平台的重要性。因为不一样的平台,看到的世界是完全不一样的。

举个例子,一个小公司的运维人员,可能就是管理着三两台的服务器,面对的也就是每天几万流量的负载。在这样的环境中成长,自然不可能接触到那种千万甚至亿万流量的压力。对于服务器集群均衡负载等这些领域,自然是接触不到,只能通过自己的臆想来进行揣测,和大厂的运维所面临过的真实情况,差距就是云泥之别了。

所以,我给你的个人建议是,通过自己的努力学习,赶紧为自己找一个相关的工作。无论公司大小,有平台就是好的。在能够胜任小型的互联网公司的开发任务的情况下,不断的往优秀的公司跳槽,提升自己到一定的级别,才能看到更加精彩的世界。

同样是卖东西,小卖铺是卖,大型连锁超市也是卖。原理无非是进货卖货结算而已,但是世界解决的问题,是完全不一样的。

战斗吧小伙儿!你的前途很光明哦!

感觉我说得有点道理,就给我点个赞,留个言,顺手关注一下人家呗!~谢谢!


分享到:


相關文章: