人文艺术 > 有编程基础,辞职每天自学四小时编程,做git项目,刷leetcode。

有编程基础,辞职每天自学四小时编程,做git项目,刷leetcode。

2020-07-25 22:27阅读(75)

有编程基础,辞职每天自学四小时编程,做git项目,刷leetcode。会比大厂在职的程序员成长慢吗?:肯定会慢的,纸上得来终觉浅。不要说大厂了,可能比不过很多学习

1

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

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

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

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

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

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

2

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

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

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

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

3

首先,对于程序员来说,岗位提升和自主学习是两个主要的成长手段,但是岗位提升往往会起到更重要的作用,所以并不建议已经具有编程基础的人完全通过自主学习的方式完成提高。

程序员不论是否在大厂工作,通常都需要通过不断的岗位提升来促进开发能力的提升,不论是从事业务功能实现的应用级程序员,还是从事平台设计的研发级程序员,都需要不断突破岗位瓶颈从而获得成长。

对于程序员来说,能力的提升不仅仅包括做项目刷代码,更重要的是岗位往往会给程序员带来更多的资源,比如从事大数据、人工智能方向的程序员往往都需要大量的软硬件资源作为研发的基础(比如深度学习对于运算资源就有较高的要求等等),而自学者很难能够获得这些资源。另外,大部分程序员的工作需要多个角色进行配合,在配合的过程中也能互相促进,不少应用级程序员就是在合作的过程中逐渐成长为研发工程师的。所以,交流对于程序员的成长往往会起到更加重要的作用。

最后,对于初学者来说,通过做Git项目是会获得一定提高的,而且短期内的提高还是比较明显的,做Git项目一方面会促进自己的代码规范性,另一方面也会积累大量的编程经验,通过Git也可以完成一些交流,这些对于初学者来说都是有较大帮助的。所以,不少在职的程序员也会参加一些自己感兴趣Git项目。

我从事互联网行业多年,目前也在带计算机专业的研究生,主要的研究方向集中在大数据和人工智能领域,我会陆续写一些关于互联网技术方面的文章,感兴趣的朋友可以关注我,相信一定会有所收获。

如果有互联网方面的问题,或者考研方面的问题,都可以咨询我,谢谢!

4

从事软件开发多年,编程学习最快的方式就是实战做项目,无论是在学校还在培训机构亦或是自学都无法抵得上经历几次实际的项目来的靠谱,对于新手程序员来见最刺激应该是第一次真正经历项目,而且由于在项目中需要配合工作,如果自己做的模块对整个系统带来副作用,这种场景会让一个技术人记忆终身,所以实战项目种最刺激进步也最大。

现实中leetcode有什么好处

无论是leetcode还是ACM对于理论的基础的拓展和纵向的挖掘有着极大的好处,特别是对于互联网公司的面试好处极大,很多人刷几遍leetcode就能轻松过互联网公司的面试,这也是在国内存在的最大意义,对于一个普通程序员来讲在闲暇之余可以刷刷题目练习下基础,对于夯实基础有着极大的好处。

对于还在编程入门路上的小伙伴,leetcode有助于提前了解面试官考察的题目,提前预热面试官要问的题目,leetcode和基本项目实战还是存在一定的差异,毕竟对于做产品或者项目需要解决实际的问题,而且为了实现一个功能采用的招数套路很多,优秀的程序员往往能够用最简短的代码解决硬骨头,初级程序员可能在代码弄上一堆,未必真的触及到问题的根本。

有一定的编程基础如何再去提升自己的能力

如果有基础可以在刷下leetcode题目,直接投简历找工作用最快的时间找份工作,在工作中提升自己的技能,不同的羡慕或者产品对于个人的提升方向也不一样,经历一次实战项目。编程项目属于实际解决问题能力以及抗压能力,很多人能力很强遇到困难就不相信自己能够做好,首先保持一颗平常心遇到问题用理智平稳的处理,解决实际问题不一定非要从技术的范畴出发,解决客户的问题或者提出的功能为导向,同时不能因为功能的增加而把项目框架弄得千疮百孔。

要达到这种能力最快的捷径是不断经历这种实战,在现实种模拟实战距离真正场景还是有差距,老的程序员的经验就是在经历了多次的项目之后得出的,这也是很多程序员在面试时候最值钱的地方,面试官经常提到的几句话做过什么项目,在项目种遇到一种场景的问题该如何解决等等问题。

但对于还没有踏入工作岗位的程序员,如何做才能提升编程能力是一个初学者都遇到一个话题,最直接能做的就是夯实基础,在实践机会来临的时候不再需要临时抱佛脚,多做练习。

自学编程和在职的程序员无法比,不具备可比性,大厂的程序员天天做的都是实际的产品或者项目,模拟再多也仅仅是演练,和真实的场景就是有差距。踏踏实实打好基础,刷刷题目,做做练习是当前可以力所能及做的事情,有机会就去参加下技术面试,找找自身的不足,技术的需要长期的积累,希望能帮到你。

5

毋庸置疑的:会。

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

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

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

6

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


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

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

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


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


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

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


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


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

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


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

7

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

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

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


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


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

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


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


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


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


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

8

每天自学四个小时,刷网上的项目,也只能说可能会比那些混日子的在职程序员成长快一些;至于和大厂的在职程序员比(正常工作),我认为是赶不上的。


编程的实质是解决实际问题

  • 敲代码不是闭门造车,很多时候还是要结合业务场景来做开发;

  • 如果一个程序员开发一个需求,我认为需求分析和设计的时间应该占50-60%甚至更多,实际敲代码可能只有一小部分;

  • 网上的大部分项目,很少有复杂的业务场景的,这个对程序员分析问题、解决问题是没有任何帮助的;

  • 相当水平的两个程序员,放到不同的项目组中,一个项目高峰期一万个用户,一个项目高峰期一千万个用户,他们的成长速度肯定是不一样的;很多时候程序员都是被业务逼着成长的!

编码只是程序员的能力之一

虽然编码是程序员最重要的能力,可以算作程序员的核心竞争力,但是程序员的成长,单单提高编程水平是不够的:

  • 沟通能力:一个项目不可能完全由一个人负责,在开发过程中需要和需求人员(产品经理)、测试、运维、其他项目的开发人员做沟通;彼此说的话,对方是否可以充分理解,这都是非常重要的;

  • 架构设计的能力:程序员成长到一定程度的时候,肯定会参与架构设计方面的工作;通常这些架构设计,都是结合业务场景做的;(有一次提到了业务场景)

  • 管理能力:咱也不能当一辈子一线程序员不是,从带几个新人,到带一个项目,再到管理一条产品线,都需要管理经验的积累。

个人建议,不要辞职,在下班之后自学编程,同时骑驴找马,去找一份程序员的工作,并且不要挑公司的大小,尽量不要在乎工资得高低。

如果有公司原因招聘你,果断跳槽,然后工作中成长,同时保持下班后自学,再过几年,说不定题主可以找到一份大厂的工作。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

9

感谢邀约,如果你要和大厂里那些不是混日子的,懂得学习的程序员想比的话,你的这种方式肯定会比他们慢,毕竟我们这一行业的人要多实践,才能不断的提升。不知道大家是否有这种感受没,如果让你大半个月不写代码,你就会觉得手很生,无从下手。不到万不得已,千万不要辞职在家自我学习,除非你觉得现在的工作岗位太忙,天天都是重复性的工作,根本没时间提升自己。


既然你这么问,我觉得你是想通过一种快速提升自我的方式,进入大厂,要不你也不会辞职,提出这样的问题,以下是我针对你的问题,结合我的自学经验和你分享下,怎么能更快的通过自我学习提升自己,以下是我的个人观点,仅供参考,欢迎大家指正和补充:


明确目标,制定计划

首先要搞清楚,你辞职学习,想到达什么样的效果,别漫无目的的学,如果你要深入学习算法、数据结构、设计模式这几门理论课,你要啃上半年也是不够的,这是编程的思维需要不断的在实践中去运用和体会。你要制定一个短时间内能够达到目标的学习计划,你可以针对你想去的目标公司,看看这些公司的招聘需求,看看自己还缺少哪项技能,然后针对性的进行提升。比如手机端开发,目标公司使用 flutter 技术开发移动端,或使用混合开发,要求你熟悉掌握 Vue 或 React。在提升之前,建议你先咨询下专业人士相关的学习路线图,知道每个阶段要学习什么,查漏补缺,然后制定切实可行的学习计划目标针对性学习。


自律性要加强,要有激情,静下心来,战胜自己

自我学习,最重要的是加强自我的管理,毕竟不是在学校期间,有老师监督你去学习,这里完全的靠的是自己,学习一定要自律,按照自己制定的计划严格执行。学习这个过程是持久见效果的,因此你不能急躁,要静下心来,学习本来就是辛苦的事情,时刻保持一种激情,战胜自己内心的急躁和恐惧,坚持下去。如果你觉得学习孤独的话,建议你可以去找些图书馆和书吧去学习,在一起学习的人多了,就没有孤独感了,呵呵。


建议看书,系统性的学习

虽然做git项目,刷leetcode,也能提高自身的能力,但是知识还是比较零散,不如看书比较系统,所以我建议还是根据自己的学习目标,找些行内专业人士推荐的书籍进行系统学习,这样你学的知识才比较扎实,知识体系也更加全面。


养成做笔记分享的好习惯

俗话说的好,再好的记性比不过烂笔头,因此我们学习的过程中要像我们高中、大学学习那样,养成记笔记的习惯,只有通过自己思考梳理的内容印象才深刻,建议你开通个头条号或公众号,把自己的学习成果分享出来和同行进行交流,通过交流你会发现自身的不足,同时又可以结交更多的同行,说不定同行还会给你介绍内推的工作机会呢。


一定要动手实践

虽然是在家学习,不能光看书,不去动手实践,这样你学的知识是不扎实的,不会应用。你也许会问,不知道做什么项目,其实项目很多,只要你静下心来思考。你可以找些和自己学习目标比较接近的案例动手实践,比如你学习 Flutter 开发,你可以去模仿一个自己感兴趣的 APP 亲自动手实践下,先把项目的需求梳理出来,然后根据需求,沉下心来动手实践,实践过程中会锻炼你的思考,帮助你发现学习过程中问题。


找一些社区多交流

可以加入一些技术论坛和社区,或微信群等等,看看同行们都在聊什么,有什么问题,同行发布了哪些人气比较高的文章,你也可以去学习学习,你在其中也会不知不觉的有所提升,要主动和同行的人进行交流,交流的过程也是一个提升的过程。


自我学习也一定要有个期限,要出去找工作

不要把学习计划定的太长,如果太长,你在去找工作的话就很难适应和不习惯,建议你制定个短期的学习目标,最多3~4个月,时间太长,不利于你的职业发展。学的差不多了,你可以尝试性的投简历,面试也是个学习的过程,不要怕被拒绝,而否定自己。尽快到工作中去提升自己的学习能力。


小节

今天的分享就到这里,这里我来做下总结,不建议辞职去提升学习,建议边工作边学习,如果你确实发现在原单位无法提升自己,自己的自制力又强,又有清晰的学习目标,只要方法得当,短时间内自我学习提升自己也是没有太大问题的。关于问题,大家有什么看法呢,欢迎在留言区与我交流哦,如果你认同我的看法,欢迎给个赞支持下哦。

10

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

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

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

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