长途跋涉,我上下求索!
最近,在认识的地方闲逛,很多人对自学编程、转行当程序员感到困惑。 我25岁的时候成为了程序员。 恰到好处的时候(中国云计算刚刚开始,移动互联网受欢迎的阶段) ),同时走了很多弯路。 因此,根据自己的开发经验和思维认识) ),我现在有8年的Java开发经验),希望后来者能给我一些建议和参考。
本文主要面向编程初学者、大学生、中学级工程师(3年以下)。
为什么学习编程能有力地锻炼人的逻辑思维能力? 逻辑思维是理性思维和决策的必要条件,也是思考任何问题不可缺少的基本思维能力。
编程是一项集设计、发明、创造、表达于一体的快乐而富有挑战性的职业。 如果你愿意研究事物的原理,创造新的东西,那就没你的错了。 不管别人怎么看,我个人都喜欢编程!
软件开发的工资相对较高。 因为有门槛,所以需要耐心、花时间,理解文字、理解逻辑。 很多人可能受不了和文字的交流,受不了调试器的无聊。 (程序错误报告可能只是文字不写,也可能是错误的,看不见) (无法承受软件的复杂性) )现代软件通常基于大量的框架、库和中间件的聚合物
在知识经济时代,信息化智能化越来越强的时代,不懂得编程就像现代文明社会中不识字一样。
我只是对编程感兴趣,想掌握新的技能。 任何时候都不晚。 从60岁开始也没关系。
虽然在工作中使用,但不是软件开发的职业,编程只作为辅助技能使用。 例如科学家、数据分析师、工业编程等。 年轻的时候加入比较好。
互联网是适合弯道超车的行业,也是对年轻人友好的行业的程序员有年龄红利。 年龄越大享受越多红利; 加入越晚红利越少; 成为程序员是积累性差的职业。
即使你有丰富的经验,优秀的应届毕业生们也有扎实的专业基础,只要你善于学习和借用千兆网上的代码,善于学习新技术,就能很快成长为后起之秀的程序员职业,是成为因个人积累性差而换取行业强积累性的程序员需要善于学习,这是最重要的能力之一。要成为程序员,需要考虑各种错误和异常情况,考虑可扩展性和许多质量指标的缜密周到的思考。 否则,编写的程序可能会变得漏洞百出,也可能难以修改和扩展。
经验丰富是大型项目的实践经验,有特殊项目经验的机会非常难得; 中小型项目开发不能称为经验。 因为每个人都可以经历。
自学编程的方法雷神阻止不了你学习编程的决心和信念的话,就开始吧!
学习编程语言,几乎不需要什么。 3-5岁的孩子都能学会,你为什么害怕? 选择Java和Python等语言; 找一本好的编程书,用豆瓣搜索Java或Python,选择分数最高的或次高的就可以了; 找编程书的时候最好找两本,国内人写的,国外人写的,国内平易,国外深; 我倾向于学习外国人写的技术书,不知道能教什么有益的想法的时候,试着找国内的东西吧; 《C程序设计语言》
)即使你不打算学c,这本书也是讲编程语言的经典之作; 查找相关编程语言的视频,边制作边看; 编程很实用,不写代码就学不到。如果你正好有朋友成为程序员,请不要定期告诉我。 有个师傅领导编程很好。请学好英语。 否则,你能学到的编程知识永远是二手货,n手的!
在学习使用word、excel、ppt等办公室处理软件的这个阶段,重点是学习编程的基本思想,如果能独立写单词分析程序,就通关成功了!编程初步进阶
在掌握编程语言后,需要学习数据结构、算法、数据库、网络和操作系统
特别是像附加编程武器装备(子弹和子弹)那样,打好数据结构和算法的基础。 如果缺乏数据结构和算法基础,就像拿着刀剑上战场,还没走两步,就被一颗子弹轰上天了
操作系统是基础课。 要利用操作系统提供的能力,编写更实用的程序,必须了解操作系统;
数据库是存储和操作大量数据的技术是实际项目开发所必需的基本功
互联网是网络技术的基础,不能不知道。 至少要了解基本原理和协议
学习步骤:数据结构和算法=操作系统=数据库=网络
数据结构书籍: 《数据结构与算法分析》;
算法书籍: 《算法设计与分析基础》、《算法(第4版)》、《算法导论》 (可挑战);
编程书籍: 《编程珠玑》 (超经典,不可不读),《程序设计实践》教你如何正确思考和设计程序。
上网本: 《计算机网络》、《TCP/IP详解 卷1:协议》 (高级);
算法问题: sxdxrz具备一定的数据结构和算法基础,如果能编写程序,建议用“力网”打磨问题,进行更深入的算法实践。 直到2020年我才知道动力按钮的存在;
sxdxrz能够比较灵活使用数据结构和算法,能够理解操作系统的原理并调用系统函数,设计比较规范的数据库表,代表编程初步进阶通关成功!
sxdxrz具备数据结构、算法基础和数据库设计的基础时,就可以开始尝试做 Web 项目了,正式踏入开发征程;
工程模板:这里有一个 Springboot 模板工程,含有一个真实项目商品交易快照项目的代码实例,你可以学习真实项目中软件是怎样子的,也可以tsdy做更多的尝试和探索。要运行这个项目,运行 Application.java 即可,然后在浏览器敲入 “http://localhost:8080/” ;项目地址: “springboot-template” ;
如何从 Github 拉取工程代码,见: “使用git和github托管个人项目”;
编程语言进阶,比如 “Effective java 中文版(第2版)” ;
源码阅读: 此时,你应当开始学习阅读源码。可以先阅读一些简单的类,比如 JDK 容器。为什么要阅读源码及基本技巧,可参阅 “解锁优秀源代码的基本方法与技巧” ;
程序调试:在开发项目时,程序调试必不可少,最简单的打断点、单步调试得学会。程序调试技能可参阅 “软件调试的基本技巧” ;
单测编写:学习编写单测,让代码更加可靠,《单元测试之道Java版:使用JUnit 》
程序风格:学习编写好的程序必不可少。面试找工作非常看重这一点。可参阅 《Java编程风格》 , 《编写可读代码的艺术》, 《代码整洁之道》 ;
sxdxrz能够运用数据结构、算法、数据库做出一个简单的 CRUD 管理系统时,能够编写比较规范的代码时,Web 项目阶段通关成功!
你已经能够做出一个基本的软件管理系统了,此时,你意气风发,将要向更广阔的软件开发征程出发!必备网站: “Github” (sxdxrz想找某个组件实现时), “StackOverflow” (提问题);学习 《深入理解计算机系统》 ;学习 Java 并发:《Java并发编程实战》 ;学习 Java 内存模型及JVM原理: 《深入理解Java虚拟机(第2版)》
;学习软件设计原则和思想,理解大型软件如何构建: “【转载】一些软件设计原则”学习设计模式:《深入浅出设计模式(影印版)》 , 《设计模式》 ;学习架构初步:《架构整洁之道》 ;深入了解软件开发职业: “软件开发全景图”, “软件开发思考” ;ALLIN:是我在学习和开发生涯中所积累的各种东西,包括数据结构、算法、设计模式、单测、具体技术等。要运行这个项目,运行
你已经找到一份程序员工作,进入了真实战场;做好分配给你的事情,做好接手的系统,同时,阅读各类技术书籍,让自己技术能力更加丰实;广泛阅读各种编程相关书籍,这里有我读过的书,可以参考: “计算机专业及软件开发推荐书籍” ;阅读源码,对你所用到的技术,探究其实现原理;原理和设计思想是最最最精髓的东西。实用技术虽必不可少,却不可沉迷其中。切勿买椟还珠!阅读 JDK
源码,阅读小型框架源码;及早考一个教师资格证,给自己留条后路(我没有考虑到)。
深入理解业务、从产品角度思考,能够让你有更宽阔的视野和更快的成长速度(我当时没意识到);不要怼产品,不要怼测试,不要怼运维,不要怼来怼去怼到没朋友(血的教训);做事要严谨,对人要宽容;两者不可偏废(我只做到了前者,后者做的不够好);开始写技术博客;你会发现,三五年后,只有博客上记录的东西还能记得(有益经验);制订技术研习计划,比如工作中用到的技术的原理,或者新技术,每周或每月写一篇技术博客(有计划但我没能坚持);了解软件开发攻略:“软件开发的升级打怪攻略:从新手到高级工程师”深入学习软件设计与开发:这是我关于软件设计与开发的思考:“软件设计要素初探”sxdxrz要跳槽时,不要冲动;先多征求意见,明确意愿,找到下家后再辞职(我辞职时不知道这个套路)。
构建自己的技术体系结构,持续丰富这个体系结构(如今我才开始做这个事情,有些晚);这是我最近构建的一个技术体系结构: “互联网应用服务端的常用技术思想与机制纲要” ;努力寻找中大型项目和中大型系统实操的机遇,并提升自己的综合能力(我没有这个主动意识,才有此劝诫);敲重点:
踏实做事,但不要埋头写代码!不要埋头写代码!不要埋头写代码!(我埋头做事,才有此劝诫);试着去录制一些编程开发视频,拓展自己的技能树(我不知道还能这么玩)。 你已经是初中级工程师了,fnddg也从zddxg那里毕业了;身边的每一个人都可能是你的导师,欣赏和学习每个人的长处;拓展你的技能树,学会从一切可能的地方学习;多交往,拓展自己的活动区域(我偶然参加了TMC演讲,还是有益的)。