A. 作为刚入职的java程序员,一年时间内如何提升自己的实力,更有竞争力
可以从以下几个方面入手:
第一:学习Java虚拟机知识。要想系统深入的了解Java语言中的各种概念就需要了解JVM(Java虚拟机)的体系结构和设计模式,JVM是Java语言的容器,Java语言的所有特性都是由JVM所提供的,所以系统的学习JVM对于理解Java语言具有重要的意义,尤其在未来面对一些系统级问题时会更加自信。
第二:提升代码量。对于初级程序员来说,要想提升自己的编程能力,一个最为有效直接的方式就是提升代码量。一方面可以通过岗位任务来完成,另一方面可以通过自主实验来完成。提升代码量的过程不仅能够加强自己的编程能力,也能提升自己调试程序的能力。
第三:围绕主攻方向展开学习。Java程序员往往都有一个自己的主攻方向,比如Web开发、大数据开发等等。对于Web开发来说应该围绕Web组件的开发来逐渐展开自己的知识面,包括Web容器的理解、框架的理解、前端处理过程的理解(JavaScript)等。对于大数据方向来说,应该从理解大数据平台开始(Hadoop、Spark),进而掌握平台提供的Java API。
Java中可以系统学习的内容非常多,比如并发机制、事务处理机制、安全机制、消息传递机制、分布式处理机制、资源管理机制等等,这些内容都需要进行深入的了解。
B. 程序员如何提升自己横向能力
最近在和团队内几个小伙伴进行聊天时发现,当问到自己总结一下最近一年或者半年的成长这个话题时,大家给出的答案都是,我又学习了什么样的技术,对某个开发技术又精进了等此类的回答。当我们聊到横向能力的有哪些变化时,大家给出的答案和理解都有所不同。
聊天的过程中有一个小伙伴向我咨询是该先针对某项技术进行深入研究,还是该综合横向能力去发展?此时就聊到对横向能力理解,小伙伴理解的横向能力是指学习市面主流的框架,中间件,新的语言等。这与我理解的横向能力却有很大的差异,下面谈谈我对从事软件开发小伙伴应该具有横向能力的理解。每个人的认知和观点都不同,此处不讨论对与错,只简单说说我的看法。
毕业以后我从学校回到合肥,加入了一家初创公司,算是进入了软件开发这个行业。说一下这个初创公司,全职员工4人,兼职员工3人,公司的创始人都是技术出生,所以整个公司的技术氛围比较浓厚,我在这个公司工作了三年半。现在看来,在这个公司的三年多经验,仍在我现在工作中发挥重要的作用。初创公司的好处就是任何岗位都是处于人力缺失状态,可以让你有很多的机会承担不同岗位的工作,给你带来工作挑战和压力的同时,也会让你快速的成长。我从一个实习生加入公司,角色也由初级开发,中级开发,高级开发,项目主管,客户现场负责人,到产品业务线负责人,工作内容也由单纯的技术开发,到技术管理,项目管理,客户需求管理,以及到全面业务线管理,涉及了从项目启动,实施,维护等全流程经验。
后来我加入了现在的公司,最初应聘的岗位是软件开发工程师,入职后被调整到一个大数据组,做内部创新项目孵化,当时的情况是我一个人需要承担从开发到上线的相关的事宜,庆幸的是之前的工作经历让我熟悉整个项目研发周期内的流程工作,经过紧张的几个月时间,带着两名实习生顺利推出孵化项目。接着所在团队调整为公司前瞻方向的团队,业务发展需要,我开始组建开发团队。随着业务的发展,我的工作内容由之前的研发慢慢转变为关注技术管理,工作集中在产品研发流程改进,质量改进,IPD体系落地建设,团队组织建设,人才培养等,与我最初的工作经历又完全不同。
在我看来,我的本职工作是一名Java开发工程师,我把我在本职工作方面的能力成长都归为专业能力,剩余的我归为综合能力也就是我所理解的横向能力。例如开发技能的掌握的成熟度,开发技能的拓展,架构能力的提升等等我统一归为我的专业能力提升,而随着团队的需要额外掌握的项目管理,需求管理,研发技术管理或者产品设计,客户沟通等等我统一归为横向能力的提升。
随着工作的年限增长,所遇到工作的内容和工作当中的人和事都会影响着自身制定的一些计划,在不同的阶段,都会有不同的想法。可能在刚开始自己还给自己制定了一个好的规划,例如工作三年,工作五年我要达到什么目标,技术达成什么要的水平,收入达到什么样的水平等等。
我们在制定要目标后,要告诉自己你在向目标努力的时候,需要扩展自己的哪些横向能力。例如从初级程序员到高级程序员,你需要补充沟通能力,技术管理,需求管理等;当你需要着手独立管理项目时,你需要补充招投标商务能力,财务能力,项目管理,客户管理等;当你转变为业务线负责人时,可能你需要关注人员沟通,组织协调,应急处理等。所以当你有了明确的目标以后,你需要知道自己欠缺的哪些,然后去提升。
如果制定好的规划不去想通过哪些途径完成,就会变成的空想,时间长了以后,就会变得过一天是一天,不在去主动的寻找机会,主动的提升自己动力也慢慢消失。所以在给自己做计划时,需要明白自己想要什么?最简单的一个原则,你在离你下一个目标时,找出你觉得你欠缺的能力去补充。有时候我们需要刻意的去学习一些知识,通过看书,看帖,网上的大牛文章,请教同事和领导,都会让你有很多的收获。另外在定计划时候,建议不要定太长的计划,一般我会定一个月、两个月,最多不要超过半年,自己找出最想做的3-5件事就可以了。
有人会有这样的疑问或者说是困惑,在团队中可能短时间无法确定自己的下一个目标,这种情况下,我的建议是给自己假设一个情景,例如现在有一个新的业务线需要组建新的团队,自己能否去新的团队承担比现在更多的职责,我现在是一个中级开发,我能否过去承担一个小团队的负责人;我是一个高级开发我想尝试下项目经理,是否能够独立带领项目团队。当我们经常给自己假设目标时,每隔一段时间,你就会有新的挑战,自然而然的就去学习不同的知识。通过自己给自己设定一些具体的假设目标,这样会使得自己的规划在具体实现时有具体的抓手,而不至于无从下手。
当明确好我们自己的下一阶段的能力提升目标,也进行了相关能力的理论知识学习,如何去实践,把理论真正的变成自己的经验。我自己的理解是:慢慢去实践,不用着急。不要想着一次性就能把事情做好,一口吃个胖子。当你在跨专业做一些事情的时候,往往也是打破自己传统认知,有时候也会有自我否定的过程。当你在实践的过程中,不断的尝试,不断的出错,不断的进行复盘,你才有可能把这些理论知识,变成自己的横向能力。
在整个我们的角色转变的过程中,会出错,会让你紧张,压力大,产生焦虑,甚至于觉得自己没有能力做好,想要放弃。给我印象很深刻是事情是在我工作的第二年被公司派往客户现场进行驻点项目实施,这次的转变是我从来没有过的,在客户的现场不仅需要完成本职的开发任务,更多的是客户交流,如何做好客户管理,怎么样处理应急问题。在开始的被客户怀疑能力,应急响应能力差,甚至于被投诉,到最后客户主动的表示好感,最终通过客户的推荐,后续又接到了很多的合同。
这些只有自己去做,去经历过,你才能知道如何使客户怎么样才能慢慢对你从怀疑到肯定,也会大大提高如何服务好客户方面的能力。今天回过头去看,每转换一个角色,你的抗压能力就会有大幅度增长,会让你的自我调节能力也得到很大的提升。有些能力的提升必须要经过一定的时间,必须要经历过一点的坎坷和困难,所以需要对自己有信心,相信自己。
在职业发展的过程中,不是所有人都能得到很合适的机会,去做一些与当前工作角色内容的不同的事情或者说能有机会去尝试一些新的岗位和工作。或者是有了机会去到新的岗位工作,但是却不是自己计划目标内的理想岗位。有时是事情的发展促使你做了岗位转变,例如人力缺失,团队人员离职,需要你去补位做相关的工作;有时是领导需要你做出转变来应对团队发展的需要。
我曾经经历过的岗位转变或多或少都存在以上的因素,但是给我带来了很多不同角色的应对事情以及处理问题的能力。所以当你觉得现在的工作内容可能不是你理想内容,千万不要有抵触或者消极的心态,更应该提高自己的眼界和格局,去突破自己的舒适圈。千万不能被自己所谓的规划和固执的思想所困住。
珍惜每一个阶段,做好该做的事情,你的能力自然而然的就会多面开花。
在我看来所有的能力提升,都需要自己主动愿意承担更多的角色,你才有机会去锻炼自己的能力,才有机会去挑战下一个目标。大家通常说机会是给有准备的人的,在我看来不仅仅是这样,机会更多的是给愿意主动出击的人。往往有时候机会不是别人给你的,而是自己主动争取的甚至有时候需要自己主动的去创造,只有你愿意走出第一步让别人发现你的能力,你才能体现出来你的能力。
所以想要能力有快速的提升,先改变自己,从团队中站出来,主动出击吧。
C. 刚踏入职场的程序员,如何快速踏实地提升自己的能力
程序员提升主要靠实践,跟一个完整的项目能最大限度的提升项目能力,以后找工作不用愁啊,现实工作中很难达成,你可以去找找培养这方面人才的,提升一下自己,你看看愿码ChainDesk,有你需要的
D. 程序员怎么去提升自己能力
二:信息采集器和笔记本
首先你要给自己设定一个目标,就如同一个公司会设定它的Vision。
目标要够大,这样你才能看到更多的风景。
目标应该设定在解决哪一类问题,而不是精通哪一类技术。技术只是手段,不是目的。
例如,“我要成为iOS developer中的达人”这个目标,就远不如“我要成为前端应用开发的专家”来得有意义。前者学到深处你可能会去钻研iOS framework里各种奇技淫巧,而后者你会开始关注视觉与交互设计,研究各平台间的差异与共同趋势。显然,后者更有助于你的个人发展。
不过即便有了明确的目标,选择哪一类技术学习,如何学习,在信息过载的今天依然是一个难题。常有的观点是应该学习最新的技术,因为老的已经过时,而反对的观点则是新技术还不成熟。我个人的观点是,当初入一个领域时,选择主流技术框架;当你有一定经验后,选择技术时更应该关注背后的推动者,我相信优秀的人和团队总能打造优秀的产品,无论是商业公司还是开源社区。不必太在意技术的新旧,因为可能很快都会成为过去时。你真正要学习的是技术背后的思想。有不少语言与开源项目会写它的Coding philosophy,这是很有意思的,你可以从它们的源代码中去验证这些编程理念。以Python为例,如果你执行import this就会看到它的理念,再如Python中一个着名的开源库Celery,在它的文档有专门一节讲述它的编程理念。它们对你的影响会比这些技术本身来得更深远,这是我给初学者们的一个忠告。
同理,我非常推荐读一些优秀开源库或是语言的源代码,例如Python的标准库绝大部分都是用Python实现的,而且可读性非常好。如果学习一门技术仅仅停留在用的层面上,你就还没有完全吸取其中的精华,而且学习的收益会随着技术的过时而消失。
我的另一个学习原则是,在选择学习一门新技术时,最大化它与你现有知识库的差异性。读起来可能有拗口,例如你会Django,接下去你应该去学习Ruby on Rails还是NodeJS?依据这个原则,你应该学NodeJS,因为它的异步IO模型在理念上与Django的同步模型差异很大,而RoR则与Django更多相似之处。但更好的选择是不要去学另一个Web framework,去学习ZeroMQ或是Redis,这两者对于Web development也非常有帮助,这样就做到了最大化差异。从构建一个程序员的技术理念角度,我会推荐每一个程序至少去了解Lisp或是一门Functional programming language,不管你是否会在可见的未来用到,它们能让你从一个不同的角度看待编程。
最后我建议每个程序员都应该经营一款自己的产品,它可以是一款app,一个网站或是一个开源软件。除非你是一个创业公司的早期员工,不然你可能没有机会将所有学到的技术或是理念都付之实践,有很多人想成为全栈工程师,最快的捷径就是打造一款自己的产品。任何一个设计师都会精心打造自己的Portfolio,但大部分程序员却不会。当评估一个程序员的Coding能力时,我会去看他的Github上是否有出彩的项目,可惜国内绝大部分程序员的Github空空如也,或者只有一些非常简单的程序。我建议大家好好经营自己Github上项目,这不但可以提高你的声誉,对你将来的求职也非常有帮助。当你报怨求职面试时又被问到各种无厘头的程序题时,有没有想过面试官也很无奈,因为他没有任何其他方法得知你的Coding能力究竟如何。如果每一个程序员都有自己的作品,我想程序员的面试会简单许多。
重视沟通能力的培养
当被问到“你觉得Junior Developer和Senior Developer最大的差别是什么”时,我最自然的反应是沟通与文档。沟通包括程序员团队内部的沟通,与其他团队的沟通,与Manager的沟通等等。我不认为自己有能力把这些问题非常概括地说清楚,不过我可以给一条建议,那就是先学会和你的Manager沟通,让他来教你其余的部分。许多公司都会设置Manager与组员的1:1,一个有效率的1:1应该大部分时间有组员来主导。这需要你在1:1之前花足够多的时间来考虑要问的问题,并且最好提前1天发给Manager,让他有机会思考答案。许多人对此不太重视,或者只问非常具体的问题而不是一些开放性问题,这样你很难在你的Manager身上学到东西。如果你渐渐懂得如何利用1:1的时间,它很会成为你在工作中单位时间投资回报率最高的活动。
累积你的人脉
每个人都明白人脉的重要性,但实际做起来却不容易。参加一些线下的会议或是活动,可能是最直接的扩展人脉的方式之一。可惜大部分人似乎只是去听了一场技术讲座就回家了。当然,这和不少活动的时间安排也有关系,讲座时间排得太满,茶歇时间短,加上有时嘉宾迟到或是没控制好时间,干脆就把茶歇取消了。而实际上,结识一两个同道中人远比听技术讲座有价值。下次去参加这类会议,不妨给你自己设个目标,比如至少加两个同行的微信。之后维系你的人脉可能需要花更多的时间,下了班或是周末找你的朋友们喝个咖啡吧?
另外我觉得每个人都需要一个职场导师,他可以是你第一份工作的导师或是Manager,也可以是你认识的其他前辈。你们需要维系一个非常长期的关系,不止于一家公司,最好贯穿你的整个职业生涯。每当你遇到疑惑时,都可以询求他的建议,我觉得这将是你最宝贵的一笔人脉财富。
寻找发挥你才华的平台
最后也是最重要的一步,找到适合你的公司。做为求职者评估一家公司可以看三个方面:
公司的发展前景(大公司的话,看所在部门的发展前景)
你将要加入的团队
薪资福利
所以在面试一家公司的时候,你要意识到面试是双向的,公司在面试你的同时,你也在面试这家公司。面试前你应该对这家公司做足功课,准备好一些有质量的问题,比如指出产品中的问题,询问开发流程或是如何做绩效评估。到时你也可以检验一下你的面试官是否合格。
每次选择公司对以上三个方面都应兼顾,但在职业生涯的不同阶段,侧重点不同。比如,在刚刚工作时,加入一个优秀的团队最为重要,他们可以教会你很多东西,提升你的能力。工作5年之后,你需要一个平台施展你的才华,体现个人价值,公司发展前景的重要性迅速提升。当你做出一番成绩,证明了自己的价值之后,逐渐进入收获期,就有了与公司要价的资格。另一方面,团队实力对公司的前景也有很大的影响。
对一个刚毕业,初入职场的同学,一个近几年被问了无数次的问题“我的第一份工作是去创业公司还是大公司?”我的回答仍旧是“加入一个优秀的团队最为重要”。一些知名的大公司,团队的素质是有一定保证,但创业公司则不然,团队素质参差不齐,所以如我前面所说你需要面试这个团队,做出自己的判断。不过除了团队因素之外,我想提一下毕业生去创业公司的几个好处。
首先,在刚毕业的一段时间内,经济压力小,是最自由最能承受风险的时期,而这段时间往往不长,所以应把握好这个去创业公司的黄金时段。其次,所有的学生进入大公司后,都会担任初级职位,某种程度上来讲是学校学习的延续,规范有条理,但缺乏独立性和创新性,而这正是中国大部分学生所欠缺的。这方面的能力在一家创业公司可以得到快速锻炼,而在大公司可能要等升到中级职位后才有这方面的机会。个人观点,仅供参考。
小结
我觉得步入职场的前3年对今后的发展尤其重要,希望此文能对年轻的程序员们有所帮助。欢迎评论?
如果想私信我的朋友可以加群,大家一起学习,一起学术分享,资料共享
E. java程序员如何提升自己
当前最多的程序员可能就是Java程序员了,作为工作了近20年的Java程序员,一路走来经历过很多弯路,也见过、培训过很多技术人员一步步成长,作为公司的技术负责人一直试图把自己血泪史、最佳实践进行传导、传播,中间犯过理想主义的错误,以为:告诉他(们),他们就可以知道、就会不犯错误,事实上不是这样的,计算机是一门实践性科学,很多东西需要实践、反复训练才可以深刻理解、才可以转化为能力,以至变成下意识的行为。
有人天生代码感觉、逻辑思维比较好,有些人后天训练、打开天眼也可以成为技术高手,多看、多研究、多实践、多总结是笨招也是必杀。另外,沟通交流是可以让你进步加速的,不要闷头苦学,在前5年工作生涯里做的绝大多数的事情,都是把前人的知识进早胡锋行收集应用、归纳总结,要知道哪些不知道、要知道哪些东西自己必须要知道,对不知道的领域结合自己工作情况制定计划,逐步落实、修炼内功。
对于程序员来说,如果可能尽量选一个技术型公司、最好有“传帮带”文化体系的公司,要学会制定计划、落实计划、工作总结、沟通交流,习惯看源码、习惯调试、习惯反编译、习惯问别人之前先把问题说清楚了、习惯写需求/设计/测试文档、习惯了解新生技术以及思考为什么产生、底层原理以及如何跟自己当前工作结合。要学会喜欢跟不同领域的人员沟通,底层逻辑相通的,成为高手过程中经历是相似的、可以借鉴的。
成为高手最重要的是:对未知领域的求陆晌做搏知欲、傻逼一样的持续坚持以及过程中的不断优化改进的工作学习方法。学而优则仕,当积累到一定程度的时候,你可以选择华丽转型,也可以选择升级打怪,也可以自主创业打造平台,不管怎样:勤奋、坚持、改进,Thereisnosetpath,Justfollowyourheart!
数通畅联专注于企业IT架构、SOA综合集成、数据治理分析领域,感谢您的阅读与关注。
F. 程序员提高个人能力的方法有哪些
一个人的能力成长是分为多方面的,而对于程序员来说,除了需要增加自己的个人技术能力以外,还需要通过不同的项目开发来提高实践脊雀能力,下面我们就一起来了解一下,提高能力都有哪些角度。
1、个人兴趣倾向:
自己对哪个行业感兴趣,是否继续找之前所在的行业,或是自己对做什么样的事情感兴趣,毕竟兴趣才是好的老师,才能够自我驱动去做一些事情。
2、个人工作经验:
之前做的是偏C端还是B端,是大厂还是小公司,是用户产品还是商业产品,是樱此早偏功能设计还是偏策略多一点,工作了1年还是5年。
3、个人项目经验:
之前做的是电商产品还是金融产品,产品的定位是什么,可以用一句话概括总结,目标用户是谁,业务框架是什么;你在做的事情从公司业务,部门划分,团队分配各个维度去看,居于什么位置,起到什么作用,创造了什么价值,这其中的亮点和难点分别是什么。
这一项内容,往往是面试过程中,面试官爱发问深究的部分,也需要自己理解的非常透彻,能够融会贯通,才能顶住各种发问,扒段需要做到,无论大局还是细节上,都能给出自己合理的回答。
4、个人优劣势:
总结个人优势和劣势,是个不断自我了解和认知的过程。面试官希望从你的回答中,看到你对自己是否有清晰的认识,准确的定位。而你需要在职位匹配度上尽可能的展露优势,核心竞争力,同时也需要自知不足,好有清晰的提升计划,尽快赶上或是避开不足。
5、离职原因:
这个问题100%会被问答,而90%以上的求职者会说是个人原因。北京电脑培训发现真实的原因可能是收入不满意,团队氛围、领导风格等问题,无论如何,自己想清楚就好,回答合理即可。
G. 程序员怎么提升自己
第一,技术不能落伍。
技术的更新迭代非常快,所以要学习的东西很多,所以说,做程序员挺不容易的。但作为这个时代的弄潮儿,我们必须提高对自己的要求,否则很容易落伍,被拍死在沙滩上。
一线城市的程序员可能还好,因为公司的产品迭代升级很快,所以技术栈的更新换旧也快。但二三线城市的程序员可能就没那么幸运了,往往一个产品都做到没客户了,技术还是最初用的那些。
以至于有些程序员回到二三线城市后再去一线会比较难,并不是生活节奏不适应,而是技术跟不上了。
怎么才能保证技术不落伍呢?并不是说外面流行什么技术,就一味的跟风,而是有选择性的,你比如说,Spring Boot 是肯定要跟的,但 Hadoop、Spark 就不一定要跟,要量力而行,看公司的业务规模是否需要。如果不需要,把更多的时间花费到 JDK 源码、性能优化陵戚上,是更消祥佳的选择。
第二,热爱这个行业。
就目前来说,程序员的确是比较高薪的职业,所以很多人都在往这个行业里挤,再加上“狼性文化”、“996”盛行,搞得很内卷。
在这种情况下,在这种压力下,你有没有问过自己,内心是否还热爱着这个行业?
我曾有一个读者,她问我,“请问你能不能做 C++ 课外辅导啊,孩子上大学,软件工程专业,之前不懂计算机,现在学习压力很大,想放弃,认为自己不适合学这个,不开窍,我是看了你的文章开始关注你的,现在因为孩子的事没办法了,就想问问,能给付费辅导吗?”
从这位母亲的话中,我感受到了她对孩子满满的爱,也感受了学弟学妹们身上背负的压力。程序员的确要学习很多很多知识,除了编程语言,计算机基础知识,还尺桥陵有各种框架和工具,时间根本就不够用。
但有一句俗话叫做“干一行爱一行”,既然入了行,就只有风雨兼程。否则,心里不爱了,学习的热忱和动力又从哪里来?
当你累了的时候,适当地给自己放个假,打一场篮球、打一个小时游戏、唱一首歌,甚至谈个恋爱,让紧绷的神经放松下来,心里的那股热爱也许就悄无声息地回来了。
第三,乐于分享自己。
分享的方式多种多样,并不局限于写博客,你可以在公司的团队内部做一次培训,甚至小到站立会的时候发表一些对技术的想法,或者大到在技术大会上做一次演讲。
分享会收获别人的认可、称赞,崇拜的小眼神,这些点点滴滴的荣誉感会让你鼓足勇气,在前行的道路上充满干劲,进而精益求精,要求自己做得更好。