① 程序员如何做好职业规划
身为职场人,一个清晰的职业生涯规划是非常必要的。北大青鸟昌平镇计算机学院给出这篇程序员如何做职业规划,希望可以帮助到同样迷茫的同学们!
程序员职业发展规划
选择IT行业后你必须思考:毕业3-5年、10年,乃至更久后,希望成为什么样的人?作为一名技术人,要如何规兆肢划自己的职业发展生涯?网上热议的“35岁中年危机”,本质上又因什么而焦虑?
现在将职业发展分两个阶段来进行阐述:
1)第一阶段:大学毕业3到5年
2)第二阶段:大学毕业5到10年
第一阶段
大学毕业3到5年
对于从事Java软核猜拆件开发的技术同学,在毕业后的3到5年内主要都是以学习、积累为主。这个阶段的工作几乎每天都有惊喜,都有收获。从一开始啥都不懂的校园“新鲜人”向“职业人”转变,在这个阶段,你会学习:
基础的Java知识:你会开始看《Java编程思想》、《EffectiveJava》。高质量代码进阶知识:你会开始看《重构:改善既有代码的设计》、《代码大全》、《编程珠玑》。
常用的主流框架:比如SSH相关的《Spring实战》、《SpringBoot实战》、《Hibernate实战(第2版)》。当然,这些书已经不够了,你会通过Google、Bai大量地浏览在线的资源:Apache官网、Spring官网、Hibernate官网。你会去StackOverflow问问题或找答案。系统设计与算法知识:《系统分析与设计方法》、《设计模式》、《需求分析与系统设计》、《面向对象分析与设计》、《UML用户指改枣南》、《算法导论》。其他知识:比如数据库调优、缓存框架、NoSQL数据库、日志框架等等。
② 程序员进阶:怎么成为一个软件架构师
软件架构师是软件行业中一种新兴职业,工作职责是在一个软件项目开发过程中,将客户的需求转换为规范的开发计划及文本,并制定这个项目的总体架构,指导整个开发团队完成这个计划。主导系统全局分析设计和实施、负责软件构架和关键技术决策的人员。
⑴确定软件架构师在软件组织中的职责和充当的角色,确定其相应的必须具备的知识体系,确定软件架构师的职业及其相关制度,制定软件架构师的培养目标和培养方案。
⑵坚持以大学教育为主(特别是各软件学院在这方面可以大施身手),以项目实践为辅的教育方针。大学可以聘请现有的软件架构师担任核心课程的讲师,通过学校教育,系统学习软件架构师所必需的知识体系;通过项目实践使其具有初步的软件开发和设计经验,逐步成长为一名合格的软件架构师。
⑶作位第2条的补充,聘请现有的软件架构师,个人认为适合以讲座的形式在学校开展。
⑷对国外一些大公司的软件架构师的培训和认证予以支持,但是在认证的过程中必须坚持符合中国实际情况的原则。例如,在认证考试之前对考生的知识体系进行系统的测试和评估,在通过认证后的适当时间内进行重新认证和继续教育。
⑸建立完善的软件架构师教育和认证制度,使得通过认证的人员能够在实际的软件开发中成为称职的和优秀的软件架构师。并通过此制度能够为国家培养出更多、更优秀的软件架构师,解决当前软件架构师急缺问题。。
③ Java程序员培训都有哪些课程内容
我是在动力节点培训的,都是实战型项目进行教学培训,
而且还分各种班级,你对应你的情况进行选择就可以
④ 大神级程序员和普通程序员的区别
六点区别:
1、文档能力
“文档是第一生产力”,这一点在程序员的世界是毫无异议的。看看Spring,hibernate,Struts等最流行的开源软件的文档就知道,他们tutorial,他们的getstarted,他们的reference文档写的多么的易懂。
如果要获得更高的报酬,文档是绝对关键的因素。有文档就有沟通,就有交易。搞技术的容易忽视文档的力量,也因为写文档十分困难,更多程序员选择舒适区,习惯写下代码,但正因为如此,妨碍了不少程序员的进阶。
2、解决BUG的效率差别
普通程序员可以利用搜索引擎(网络)寻找答案,经常性找不到好的解决办法,然后更换技术方案!顶级程序员也利用搜索引擎(Google)寻找答案,一般bug都顺利解决(其实跟前期框架选择等关系非常大)。
3、表达能力
表达能力决定了你所做的技术的影响范围,决定了你的影响力,决定你的威信,决定了你的报酬。普通程序员和顶尖程序员的表达能力差别非常大,这主要还是取决于他们格局的不同。良好的沟通能力让你理解产品经理的设计思路,让你更好的展现自己的特长。
4、优雅和美观的抽象能力
普通程序员和顶尖程序员之间的区别在于优雅和美观的抽象能力。好的系统通常是要做到两个方面才合格,其一是好用,其二是好看。但是令人遗憾的是,普通程序员仅仅从实现的角度进行堆砌。顶尖程序员往往能够更进一步,经常会去思考用户在操作这个功能的时候,到底还会做什么事情。
5、面对如何开源社区态度
普通程序员几乎没有在开源社区混,这也导致经常对新技术发展关注度低。而顶尖程序员则是拥抱开源社区。
6、面对功能点
普通程序员:立马开始构思自己如何实现脑海里出来一个方案。
顶尖程序员:发现功能点很普通github上面早已经有非常多的解决方案,着手根据业务选择一个最适合最优的方案。
但是优秀的程序员一开始都是普通程序员,所以加油吧!
⑤ 璇翠笉鍏骞崇殑锛屾湁钥冭槛杩囩▼搴忓憳镄勬劅鍙楀悧
鍦↖T琛屼笟鐢辫秴甯歌秼钖戝钩甯哥殑阒舵碉纴绀句细鍏虫敞鐑镣硅浆绉伙纴绋嫔簭锻樼殑绀句细骞冲潎钖璧勬按骞崇敱楂桦悜浣庡洖钀斤纴寮曡捣浜呜稿氢汉瀵圭▼搴忓憳鍓岖▼镄勬濊冦傛寜涓揿舵垨琛屼笟璧勬繁浜哄+镄勮存硶锛岀▼搴忓憳链変袱𨱒¤繘阒惰矾绾裤备竴𨱒℃槸鎶链璺绾匡纴鐢辩▼搴忓憳锛岀粡绯荤粺鍒嗘瀽甯堛佺郴缁熻捐″笀銆侀”鐩缁忕悊銆佷骇鍝佺粡鐞嗭纴鐩村埌鏋舵瀯璁捐″笀涓哄綊瀹裤傚彟涓𨱒℃槸棰嗗艰矾绾匡纴鐢辩▼搴忓憳锛岀粡寮鍙戝皬缁勮礋璐d汉銆佸伐绋嬭礋璐d汉锛屽嬫枟鍒伴”鐩缁忕悊銆
鍕垮焊缃鐤戯纴姣忕嶈存硶閮芥湁瀛桦湪镄勪釜渚嬫敮鎸併傚疄闄呬笂锛岃兘璧板父瑙勮繘阒惰矾绾跨殑姣旷珶鏄灏戞暟浜猴纴澶у氭暟绋嫔簭锻桦湪钖冭繃闱掓槬楗钖庯纴闱涓寸潃鍓嶉旈夋嫨闂棰樸傝繖涓庤繍锷ㄥ憳銆佽埅绌轰箻锷″憳銆佽垶韫堟紨锻樼瓑镄勮亴涓氩冮亣鏄绫讳技镄勚傜浉姣斾箣涓嬶纴绋嫔簭锻樻槸绉嶆柊鐢熻亴涓氾纴钥屼笖鏄澶氭暟浜鸿や负镟撮珮灏氱殑鑴戝姏锷冲姩锛屽傛灉鑳界湅鍒版洿濂界殑杞鍨嬫柟钖戯纴杩桦彲浠ュ绩鐞嗗钩琛°傜幇鍦ㄩ溃涓村汹澧幂殑绋嫔簭锻树滑锛屽湪链鐪嫔埌鏄庢湕鍓嶉旀椂锛岃糠锣锛岀剑𨱔硷纴鏁忔劅锛岄毦瀹瑰硅嚜宸变笉鍒╃殑瑷璇(鍝镐曟槸鐪熷疄镄)銆
绔椤湪涓荤殑绔嫔満锛屽笇链涜兘淇濇寔IT涓氱殑镫傜儹锛屾棦鑳戒缭闅灭▼搴忓憳镄勯珮寰呴亣锛屽张鑳借幏寰楃殑楂樻敹鐩娿傞梾棰樻槸甯傚満涓嶆帴鍙楋纴IT浜у搧鍜屾湇锷$殑浠锋牸婧愰泙瓒婃潵瓒娄绠锛屽嚭浣庝环鍙堟嫑寰楀埌浜猴纴绋嫔簭锻樼殑钖璧勬按骞充笅闄嶆槸镊铹剁殑浜嬨傚逛簬绋嫔簭锻樼殑杈涜嫤鍜屽姵锷ㄤ笌鏀跺叆镄勪笉鍏骞虫劅瑙夊彧鑳借〃绀虹悊瑙c
浠庣▼搴忓憳镄勮掑害锛屽彲浠ュ彂鐜版洿濂界殑鏂瑰悜锛孖T涓氢笉鏂链夋柊涓滆タ鍑虹幇銆傜敤J绯诲垪璇瑷姣旂敤C绯诲垪璇瑷镟存椂灏氾纴鐢ㄩ溃钖戝硅薄(鎴栨瀯浠)镄勬柟娉曟瘆闱㈠悜杩囩▼镄勬柟娉曟洿鍏堣繘锛岃缮链塂elphi銆.net銆乪Learning绛夊紑鍙戝伐鍏凤纴镟存湁ERP(璧勬簮璁″垝)銆丆RM(瀹㈡埛鍏崇郴绠$悊)銆丼CM(渚涘簲阈剧$悊)銆丆PC(鍗忓悓浜у搧鍟嗗姟)銆丅IS(鍟嗕笟鏅鸿兘绯荤粺)銆丒AI(搴旂敤闆嗘垚)銆丒IP(淇℃伅闂ㄦ埛)绛夊眰鍑轰笉绌风殑鏂版傚康銆傚傛灉浣犺兘涓嶆柇涓庢椂淇辫繘锛岃拷镌鏂颁笢瑗胯蛋杩樿岋纴浣嗘瘯绔熸槸骞撮缎涓嶉ザ浜猴纴涓夈佸洓鍗佸瞾镄勮偗瀹氢笉濡备竴銆佷簩鍗佸瞾镄勮版уソ銆佸弽搴斿揩锛岄暱姹熷悗娴鎺ㄥ墠娴链鏄镊铹惰勫緥銆
浠庣粡娴庡彂灞曡勫緥𨱒ョ湅锛屾疮涓鏂扮敓镄勮屼笟閮借佺粡铡嗛珮娼銆佷绠璋枫佸钩甯哥殑镞舵湡銆侷T涓氢粠绀句细鐑娼鍦颁綅鍒扮幇鍦ㄧ殑绀句细骞冲父鍦颁綅鏄寰堟e父镄勪簨銆傚彧涓嶈繃鎴戜滑涔犳傥浜庢帴鍙楀湴浣崭笉鏂涓婃定锛屽瑰洖钀介毦浠ユ帴鍙椼傝繖鍙璇存槑鎴戜滑镄勬暀镶叉湁缂洪櫡锛屽绩鏅轰笉锅ュ叏銆
瀵逛簬绋嫔簭锻树釜浣掳纴鍙鑳介傚簲绀句细鐘舵併傚傛灉浣犳槸澶╂墠銆佺簿鑻憋纴涓崭细链夎亴涓氱殑鐑︽伡銆傚傛灉浣犳槸骞冲父镄勭▼搴忓憳锛屾垨镊璁ゆ湁镓崭絾杩愭皵涓嶅ソ锛屽氨搴旇ユ濊冨墠绋嬬殑闂棰樸
涓鑸𨱒ヨ诧纴绀句细瀵圭▼搴忓憳镄勫畾浣嶆槸婊¤冻鎶链闇姹傦纴绋嫔簭锻樿嚜韬镓鍙楃殑鏁栾偛鍜岀Н绱镄勭粡楠屼篃浣胯嚜涓诲墠绋嬫剰璇嗗眬闄愪簬鎶链璺绾裤傚疄闄呬笂锛屾垜浠镓鐪嫔埌镄勫湪鎶链鏂归溃链夊缓镙戠殑鍓嶈緢澶氭槸缁煎悎鍨嬬殑浜烘墠锛屽崟绾灞闄愪簬鎶链镐濈淮镄勫氭湁琛屼负灞闄愶纴涔熼毦鐪嫔嚭镊韬镄勫垢绂忔劅銆傚叾瀹烇纴浜烘湁澶氭柟闱㈢殑灞炴э纴闄ら潪浣犳槸鏋佸皯鏁扮殑澶╂墠锛屽湪镆愪竴鏂归溃鐗瑰埆绐佸嚭(鐩稿簲鍦板湪鍏跺畠鏂归溃灏卞緢鑴嗗急)锛屽ぇ澶氭暟浜烘槸澶氱嶅睘镐х患钖埚彂灞曪纴钥屼笖钖勫睘镐ч棿鐩镐簰淇冭繘銆傛墍浠ワ纴鍦ㄨ冭槛绋嫔簭锻樼殑鍓岖▼镞讹纴链夊繀瑕佸垎鏋愮▼搴忓憳镄勪富瑕佸睘镐у强鍏跺彲鑳戒骇鐢熺殑褰卞搷銆
鎶链灞炴
浠庤〃闱涓婄湅锛岀▼搴忓憳鏄浼氢娇鐢ㄨ$畻链鸿瑷缂栧啓绋嫔簭镄勭兢浣撱傚疄璐ㄤ笂锛岀▼搴忓憳鏄镵旂粨绮剧炰笘鐣屼笌鐗╄川涓栫晫镄勬渶链夋晥镄勪腑浠嬶纴灏嗕汉璇杞鍙树负鐗╄鍒涢犺储瀵屻备互鍓嶆垜浠镓璇寸殑鎶链锛屾槸鍒嗙戠殑鎶链锛屾垨鐗╃悊锛屾垨鍖栧︼纴鎴栫敓鐗╋纴绋嫔簭锻樼殑鎶链鏄鍏ㄩ溃娑电洊镄勬妧链銆备粠浜虹殑镒忚瘑鍒扮墿镄勭粨鏋灭殑鍏ㄩ溃娴佺▼鐪嬶纴绋嫔簭锻樻墍鐢ㄧ殑浠庡簲鐢ㄥ眰鍒扮墿鐞嗗眰镄勫垎灞傛′綋绯(濡侷SO/OSI缃戠粶妯″瀷)鏄涓绉崭弗瀵嗘湁鏁堥浌锠㈡棭镄勯昏緫缁撴瀯锛岃繖姝f槸缁忔祹寤鸿鹃渶瑕佽屼紶缁熸枃鍖栨矇娣缂轰箯镄勮佺礌銆
楂桦皻灞炴
鏂囧寲绱犺川楂桡纴涓嶪T绮捐嫳鎺ヨ繎锛屾劅鍙楃殑鏂囨槑淇℃伅閲忓ぇ锛岀粡娴庡熀纭杈冨ソ(涓庝竴鑸锷冲姩阒跺眰鐩告瘆)锛屽喅瀹氢简绋嫔簭锻樼殑鐢熸椿鏂瑰纺銆佽叮锻炽佹牸璋冩洿楂桦皻锛岃〃寰佷竴绉岖ぞ浼氭枃鏄庣殑鎸囧悜銆傚傛灉绋嫔簭锻树粙鍏ュ埌鍏跺畠琛屼笟锛屼负浜嗕缭鎸佺敓娲荤殑姘村嗳锛屼篃鏄淇濇寔鍕ゅ嬬殑宸ヤ綔涔犳傥锛岃〃鐜板缑闱炲父锷锷涳纴浼犳挱绉鏋佸悜涓婄殑绮剧炪傝繖濡傚悓鍦ㄥ厛杩涘浗瀹舵垨澶у煄甯傜敓娲昏繃涓娈垫椂闂寸殑浜猴纴鍐嶅洖鍒扮浉瀵硅缉钀藉悗镄勫湴鏂癸纴浼氢綔涓烘枃鏄庣嶆。绾冲瓙锛屼骇鐢熺Н鏋佺殑浣灭敤銆
浜虹敓灞炴
褰扑綘鎶婄▼搴忓綋浣滃纾鐗╃湅寰呮椂锛岀紪绋嬫槸涓绉嶈礋𨰾咃纴鏄锷崇疮镄勪簨鍎匡纴闇瑕佸湪宸ヤ綔涔嫔栧缑鍒拌ˉ锅裤傚傛灉绋嫔簭锻樿兘鎶婅嚜宸变綔涓轰竴涓鍏锋湁涓镐х殑浜虹殑涓讳綋瀛桦湪锛岀▼搴忓氨鍙鏄浜虹殑灞炴х殑寤朵几銆傝繖镞讹纴绋嫔簭灏变笉浼氢綔涓轰汉镄勮礋𨰾咃纴灏辫薄浜轰笉浼氭妸镊宸辩殑镶浣扑綔涓鸿礋𨰾呬竴镙枫傝繖镙风殑浜轰细涓嶆柇锷锷涳纴涓嶆柇瀛︿範鏂扮煡璇嗭纴鎶婄▼搴忎綔涓轰汉鐢熷嬭繘镄勮浇浣掳纴鍒涢犳у湴浣跨敤绋嫔簭锛屼细鎶婄紪绋嬩腑镄勬櫘阆崭笢瑗垮崌鍗庢垚涓绉岖簿绁烇纴涓诲姩鍦板奖鍝嶅叾瀹冮嗗烟銆
闱㈠瑰伐浣滀汉浠阃氩父链変笁绉嶆佸害锛屼竴绉嶆槸鎶婅嚜宸辨斁鍦ㄥ埄鐩婄殑妗堟澘涓娄换浜哄板壊锛屾妸宸ヤ綔褰扑綔銮峰彇鍒╃泭镄勫伐鍏凤绂鍙︿竴绉嶆槸璺熺潃鍏磋叮璧帮纴瑙嗗伐浣滀负鐜╀箰锛涚涓夌嶆槸鎶婂伐浣滃綋浣滃𪾢鐜颁汉鐢熺殑杞戒綋锛屽皢宸ヤ綔瑙嗕负瀹炵幇浜虹敓浣垮懡镄勯桩姊銆
鎴戜滑鎻愬$▼搴忓憳鐑鐖辨湰镵屽伐浣滐纴鍦ㄦ湰琛屽唴涓嶆柇杩涢桩銆备絾涔熷簲姝h嗙幇瀹烇纴鐪嫔埌浜虹殑褰揿墠阃夋嫨骞堕潪閮芥槸阃傚悎镊韬镄勬浔浠剁殑锛屼互绋嫔簭锻樼殑锘烘湰绱犺川锛屽湪鎶链璺绾夸互澶栦篃鍙浠ユ湁镟村ぇ镄勪綔涓恒傜▼搴忓憳搴斿媷鏁㈠皾璇曟洿澶氱殑阃夋嫨锛屽湪阃夋嫨涓璁よ瘑镊鎴戯纴镓惧埌阃傚悎镊韬鍙戝𪾢镄勬柟钖戙
浜烘湁澶栬亴涓氩拰鍐呰亴涓氾纴澶栬亴涓氭槸浣犵幇鍦ㄤ粠浜嬬殑镵屼笟锛屾槸鍙浠ユ敼鍙樼殑銆傚唴镵屼笟鏄阃傚悎浣犺嚜韬𨱒′欢镄勮亴涓氾纴鍦ㄤ竴瀹氱▼搴︿笂闅句互鏀瑰彉锛屽畠鍙浠ュ崌鍗庢垚涓绉岖簿绁烇纴浜х敓镟村ぇ镄勫奖鍝嶃
绋嫔簭锻樻槸涓绉嶅綋鍓岖ぞ浼氱█缂虹殑浜哄姏璧勬簮锛岀▼搴忓憳搴旇ユ槸鎾绉嶆満锛屽皢鐞嗘ф濇兂锛屽伐绋嬫坠娈垫櫘鍙婂埌镟村氱殑鏂归溃锛屼负缁忔祹寤鸿炬彁渚涙洿澶х殑锷涢噺銆
鍦ㄥ伐涓氱ぞ浼氾纴宸ヤ汉阒剁骇锲犲叾镞犱骇镐э纴鎴愪负瀵硅祫浜ч桩绾ф渶闱╁懡镄勫姏閲忋傚湪淇℃伅绀句细锛岀▼搴忓憳锲犲叾瀛︿範镐у拰涓庢椂淇辫繘镐э纴浼氭垚涓哄规噿𨱍伴桩灞傜殑寮哄ぇ闱╁懡锷涢噺銆傛墍浠ワ纴浠庣ぞ浼氲礋浜庣▼搴忓憳镄勮亴璐f潵璁诧纴绋嫔簭锻樿偐璐熼吨浠伙纴鍓嶉旀棤閲忋
⑥ 学生从初级进阶为高级程序员需要经历什么
程序员从初级到高级要经历什么
01 初级程序员
初级程序员一般是刚刚入行不久,工作经验只有一年及以下的同学,对干技能要求,需要他们:
1.可以完成简单模块和项目的开发工作
2.熟悉HTML、JS、CSS等基础知识
3.能够使用一门MVVM框架进行简单的业务开发
02 中级程序员
中级程序员要拥有3年及以上的工作经验,具有能够独立负责一个子模块的能力,以及能够负责一个项目的具体任务。
具体的技能要求有:
1.熟练掌握工作中使用的术栈开发业务。
2.了解一个需求从开发到上线的整个生命周期,并对各个环节负责。
3.具备基本的逻辑分析、问题分解、归纳总结等能力。
4.了解基本的数据结构和算法,写代码较熟练。
03 高级程序员
行业不缺程序员,但缺少能够同时兼具资深经验和技能优秀的高级程序员,高级程序员不但具有丰富的项目经验,且技能扎实,并能够持续保持新知识新技术的输入,才能被称之高级程序员。
技能要求:
1.具备独当一面的能力,能够带领团队展开工作。
2.针对一个需求能够从开发到上线的整个生命周期中找到痛点与漏洞,并能运用技术的手段解决。
3.能对问题和需求做出分析和拆解,做出改进、实现方案。
4.有优秀的技术选型能力。
5.熟练掌握各种技术体系。
初级,高级如何实现升阶?
第一,练习代码,学习模仿。
俗话说熟能生巧,写代码也是一样。如果本职工作的强度不算大,建议可以私下接一些小项目练手,多尝试不同的业务。写代码可以参考大佬的编码风格,学习对方的思路。如果公司有代码规范,跟随着公司的代码规范走,如果没有,参考业界规范。
第二,熟悉工作流程
也不要光埋头写代码,学着多参与进项目,去熟悉一个需求提出-开发-联调-测试一上线的整个工作环节,理解开发逻辑尝试想象自己有一个项目,该如何开展工作。第三,基础知识不能落下
知识就像棉被,需要时不时拿出来翻新、加固。基础类:JS、CSS、HTML反复学习
了解一些广度知识:HTTP、正则表达式、Web安全、性能优化、设计模式,数据结构和算法
02 中级一高级
第一,业务全局思考能力成为高级程序员,就需要具有项目全局思考能力。首先,要明白业务和公司的目标,参与到需求的早期阶段中;而后要多思考,是否可以通过技术手段提升业务价值。
第二,学习优化工作流程初级程序要要熟悉从需求-开发-联调-测试-上线的每个工作环节,高级程序员则要多思考每个环节有没有可以优化提升的地方,比如上线过程能否自动化、能否小流量上线等。
⑦ 好程序员:Java进阶需要掌握哪些必要的技术
1网络编程
2多线程
3工具类的使用
4数据库编程
5对接口和抽象类的理解
6 23种设计模式
7设计接口的能力
个人拙见