A. 有哪些顶级水平的中国程序员
一、尤雨溪
江湖流传一个小故事:一款名叫Clear的软件,在正式推出的第一天,就登场了Apple Store付费榜和总榜第二。而身在美国的中国留学生尤雨溪,仅仅花了两天的时间,就出了一个html5版的Clear,并且放出了源代码。
2014年2月,开发了一个前端开发库Vue.js。没错,现在就是前端在广泛使用的Vue框架!Vue.js一经发布,就受到了很多人的追捧,可以说Vue.js就是人们苦苦寻找的那个好用的前端框架。
后来的尤雨溪在patreon进行了众筹,因为他希望自己可以全职去开发Vue.js。众筹的效果是非常满意的,每个月他几乎可以收到1万美元的赞助。
职业要求
一般的程序员都有在专业领域的学习,还有很小一部分程序员是自学的,尽管一些专业性的学校或者综合大学可以提供,但是也需要一些别的途径来提供相关的人才。
尽管学历是比较重要的,但是公司经常把重点放在应聘者的工作经验上,很多刚从大学毕业的大学生虽然有引人注目的学位证书,但是他们找不到工作是因为他们缺乏经验。
一个程序员虽然没有正规的学历,但是如果一个人拥有程序设计的深厚知识背景或者丰富的工作经验的话,那么他的机会要比有学历的应届毕业生大得多。所以要尽量抓住有用的工作和实习机会,这样的话在毕业后你就会发现,多实习让你有更多的经验,在找工作的时候就有更多的机会。
对于职业程序员,另外一个重要的方面就是,程序员需要不断提升自己的业务技术,他的技术必须一直保持在一个较高的水平,并且要不断发展,程序员也要寻找贸易的机会,要参加研讨会,在周刊上发表文章和接受职业教育,这些使程序员在自己的领域中分级或者不断并排前进。
B. 什么样的程序员最抢手,什么样的程序员涨薪最多
首先,我们来看影响程序员涨薪的因素。
一、 什么样的程序员涨薪最多?
安卓、iOS、Web前端薪资涨幅都较其他语言要高。对单个程序员来说,想要获得较高的薪资涨幅,选定热门的语言与工作地是成功的基石。
二、 什么样的程序员最抢手?
最直接相关的两个因素是:使用的编程语言与工作的城市。
移动开发与Web前端的需求量很大,所以这一类程序员能拿到更多的面试邀请。
而北京互联网行业更加发达,所以北京的程序员也更加抢手。
负相关的两个因素是:工作年限与求职的主动性。每个主动求职者平均收到5.6个面试offer,被动求职者则为8.4个,说明被动求职者正是因为具有市场上更为紧缺的技能所以不会急于换工作。
工作年限在5年以上的程序员收到的面试邀请没有刚工作2年左右的程序员多。我觉得这主要是因为适合有丰富工作经验的程序员的工作机会更少。
三、互联网公司如何招聘好的人才?
首先看看薪资这个因素:
1、最有效的薪资涨幅应该在10%-60%间,这个区间的offer程序员很容易接受;同时,程序员对>60%的薪资涨幅并没有表现出相应明显更高的接受率。可能的原因是,此类offer多由金融或传统行业中的土豪转型互联网后开出,程序员未必感冒。 土豪们要加油了。
备注:图中“横坐标0.6 ~ 2”表示offer 薪资与目前薪资的比例,即0.6表示offer 薪资是目前薪资的0.6倍。
2、从面试邀请的分布来看,还是较符合正态分布的。
其次,公司需要至少考虑两个问题:
♦ 谁来发offer ?专业的HR,还是上级工程师,亦或是CEO、CTO亲自上场?
♦ 怎样发offer?面试邀请写些什么内容呢,以情动人,还是拿钱砸人?
从结果看,个性的面试邀约与合适的薪资是影响最大的因素。个性的面试邀请,既能完美展现公司的实力,又体现了对对方的足够重视和强烈的需求。在我看过的面试邀请中不乏印象深刻的offer,或高贵冷艳、或卖萌 搞笑 、或文采飞扬。
以后我也会在招聘上足够重视每个求职者,在时间允许的情况下,给他们开出属于自己的个性面试邀请。
比较令我吃惊并不敢相信的是,来自工程师/co-founder发出的面试邀请居然是负面影响的,能想到的唯一理由是,很多CEO或CTO还处于初创无助期,So Sad…
最后,就是程序员拒绝的理由:
大多数拒绝理由与钱无关!
C. C++ 世界最顶尖的程序员是谁.注意是世界
C++ 世界的话, C++之父Bjarne Stroustrup和标准委员会的Herb Sutter与Andrei Alexandrescu,还有STL之父Alexander Stepanov都算是当世绝顶的高手。
还有《C++ Primer》的作者,微软C++编译器的主要设计者Stanley B.Lippman以及当年一起在bell实验室做CFront的Andrew Koenig也算绝顶的高手。
C语言的世界的话顶尖高手就太多了,数也数不清了,Ken Thompson和
Richard Stallman、Guy L. Steele Jr、Tim Joy 可能算是最高的高手了吧。
D. 阿里,华为,腾讯,哪家的程序员更牛
首先我们可以了解到,程序员是一份十分艰辛而且耗费脑力的工作,所以作为一名程序员最关键的两次职业生涯的升华时刻在于,从普通程序员变成一个熟练的软件或者项目开发者和从一名熟练的软件或项目开发者变成一个程序编写方面的专家,然而这其中每一次的升华都代表着你需要付出比别人十倍甚至二十倍的努力。
所以我们可以探讨一下腾讯、阿里巴巴、华为哪家的程序员技术更厉害,其实在我的认知里,我认为腾讯的程序员更厉害,因为腾讯的程序员需要开发的方向多难度大,而且腾讯的整个系统的优化不是靠个别几个高技术程序员就能完成的,而且腾讯是一个主打游戏的公司,我们都知道,游戏本身就是用程序写出来的,所以要想游戏做得好,那么做游戏的程序员就得具备更高的素质和技术,也同样是因为这个公司的特殊性,所以腾讯公司的程序员更强。
而阿里这个公司部门是以电商为主,程序并不是这个公司部门的主打方向而且,我认为电商、网店、软件开发才是阿里巴巴的强项,而对于华为公司,华为公司的主要开发内容在于电子产品,所以华为公司需要设计到程序的地方最少,因为腾讯和阿里还是网络公司而华为公司是实打实的科创公司,华为公司的开发重点也在于他的核心技术,所以我认为腾讯公司的程序员更牛。
E. 如何管理强势的关键性技术人员
案例:
在项目中有一些关键性的技术工作,且这些工作在行业内部非常保守、国内技术力量薄弱——也就说技术工作人员难找。在我们团队里有一个这样的关键性技术人员,项目必须经过他这一环。在他这一环时,时间计划完全被他控制——他说要多少时间就多少时间,而且这个时间非常随意,不给我任何商量的余地,更不要说去控制。同时,这个工作环节很难找到人代替或外包,这个人对公司好像也没多少留恋可言,纯粹看钱办事。
目前来说,该如何处理呢?和他沟通、高层出面还是其他方法呢?
精彩解答:
001
我也面临这样的问题,今天抛砖下,说说我的做法:
1.保持良好的个人关系【有私交】;
2.以工作目标为导向,拟定DeadTime;
3.研究他的工作,自己多学习。让他意识到PM是懂他的技术的。威胁他的可替代性;
4.尽量安排少量的工作给他,让其他成员有提升的机会;
5.千万不要用高层来压,或者引起矛盾,那样PM会很惨。
002
1)一方面在人力市场当中默默地找其替代者,要做到不动声色,以免打草惊蛇
2)当然在适当的时候给他一个下马威是必要的,彰显自己的魅力所在
3)制定绩效奖励,把他的这个任务公开出来,有能者居之。
003
1、平时跟他搞好关系,拿出程序员鼓励师的姿态去待他,理解他,包容他,帮助他;
2、分解他手上的任务,把可以不让他做的事情,分解给别的同事;
3、关系友好之后,偶尔好一些内部培训活动,试试能不能把他的一些技术通过培训的方式传递出来;
4、在别的人员能力加强培训的同时,逐步进行第2步,分解他的“压力”。
004
既然很关键,又无法替代,那就只能受着,但是为了更好受一些,可以尝试:
1、多私下沟通,建立一些私交,希望他可以给你一些面子;
2、多想下公司文化是否有问题,为什么他的凝聚力那么差,为什么他不能死心塌地跟着公司、跟着项目干,提升他对公司的忠诚度,以后做决定的时候能够多从公司的角度去考虑下;
3、给他增加一些管理责任,让他明白、意识到项目没做好,他是有责任的;
4、多去了解他负责的技术模块,同行业中类似业务功能大概用多长时间,最起码保证他给的时间不能太离谱。
005
1,和为贵,积极沟通,私人层面工作层面两手都要抓,两手都要稳(必要的时候,可以钱+鼓励师);
2,工作量增加,死磕DeadLine,安排跟他关系亲近的帮他分担,低调进入他所熟悉的领域;
3,半年之后以观成效,再积极对策。
006
1.加强企业文化,好的公司要有好的企业文化,才能留住人才;
2.多与技术骨干人员沟通,增加团队拓展活动,培养团队凝聚力,让团队成员有归属感,尝试改变性格怪癖的队友;
3.公司项目管理规章制度完善,无规矩不成方圆,从项目领导任务分配到完成,都要有计划,并让其技术负责人合理规划时间安排;
4.在核心技术方面加大人才培养力度,从而可以弥补空缺,特别时期情况下不会因为个别人事变动带来毁灭性的伤害;
5.公司领导要权力下放到项目经理/部门经理,这样对管理一些技术骨干或老员工有帮助。
007
这个我先从技术角度来说一下:
第一:技术员多数为完美主义者,关键性技术不同通用技术,既然技术想要完美地呈现、完成客户需求,就需要更多的时间来规划、思考、推敲、重建、完善这个技术方案。所以站在纯技术角度来看,这要求不过分。
解决方案:
给技术宣贯一个思想,谁都想事情完美,但站在项目的角度来看,除了质量,还要控制进度,所以合适客户需求,不多做,也不少做的原则进行技术攻坚。
第二:看这技术对公司文化的认可,当他和公司的文化格格不入,多少必有抵触情绪,所以会有漫无目的地要求时间。当然,如果他对PM或这个团队有情绪,也有可能会触发此事件。
解决:
这时候要展现出PM的个人魅力,不要让他感觉你以上压下,给予足够的尊重,并动员公司与技术关系好的同事一起做好技术的思想工作。
第三,是不是钱给少了。因为他觉得他是关键技术,所以当他的工资得不到有效的体现时,有可能会变成一个老油条,有千万种方法让你信服,的确是需要这么久的时间。
解决:
要不画饼(对老油条估计效果不大),要不和他商量一个合理的工资,报给领导,由领导决策。
最后,PM或公司应该多点培养关键性人才,不要总想着能一招就来。当人才储备不够时,随时会让你进度严重失控。
008
从乙方的角度看问题:
我为什么会有这种态度?
1)对PM态度不满,
2)对工资不满,
3)工作没有创造性,感到疲惫
4)工作确实需要这么多时间,但其他人不了解。
从PM角度看问题:
1)自身是否有不对的地方,对于专业技术人才没有更多了解
2)薪酬和职位是否匹配
3)工作氛围是否乐观,了解下技术人员的职业规划
4)对项目时间评估,可以参照历史项目记录,对比当前项目是否有较大变化。
PMP中没有讲到过“中式”管理,但大多数情况,中式管理很符合人性,且很有用。
009
我觉得可以引进工程评估评审技术进行任务历时估算,有了一定依据的时间估算也会让别人更加信服,其公式是:
PERT历时=(O+4M+P)/6;
O:任务完成最短时间;P:任务完成最长时间;M:任务完成最有可能时间。
如果担心这么计算有风险,可以通过标准差和方差做风险分析。
看看他没有留恋的原因,也许是因为一些激励没有给到呢?可以请高层处理,然后让领导给他提一下让他做这个方面的公司培训师,加一些薪酬。然后这样一是给他积极性,二是帮助公司培养人才。另外,项目这边也要做好准备,把时间和应急储备都留出来,保证项目的安全稳定。
010
建议先是项目经理出面与这个技术人员沟通,先安抚、激励后制约。从项目角度充分的信任他的能力给项目带来的价值,肯定他在公司及项目的影响力,说明可以给予他一定的自由空间与发挥地,及项目的成果给他也会带来的收益。同时也要了解他对于项目的关键技术一些看法与分析,要求他制定出项目时间点,如果超出项目的交付范围,双方共同讨论进一步的压缩时间,讨论可行的实施策略。分歧较大时再请求高层出面协调,从项目角度是需要保持双方良好的合作关系,良好的人才不能轻易放弃,用好管好人才也是一个管理者的重要职责。
011
如果我碰到这种事,一般会这样处理:
1.尊重有能力的人,非他不可就是他的价值。
2.项目非他不可,他对这个项目的看法和要求就是项目经理的要求。
3.请他做指导,明确其他人做的事宜和项目时间和他冲突的可能性。
4.将沟通好的事请他确认。并且告知其他事宜会跟他及时配合。(其他人一定范围可以迁就他)。
5,将确定好的环节和时间节点公告项目内人员和上级。
6.尊重是对对方专业的认可,不是屈膝。也请对方明白这一点。
7.受制于人或物是项目的常态,心态平和看到事和人。换一个位置,一切都是清晰的。
F. 目前什么职业比较强势
互联网行业比较强势:
最强势的就是码农,也就是程序员,做程序开发的多半工资都比较高
做网页前端的,就是编写网页程序的,现在互联网公司太多了,而且传统行业也需要网页,所以网页开发和维护人员也是很吃香的。
产品经理,这个需要较长的互联网从业经验,而且要懂得很多其他互联网知识
金融行业:一直站在人均收入的顶端,社会精英人士的从事职业
G. 顶级的程序员是怎么样的
顶尖程序员常说:“这个我以前写过一个模块,我找找,很快。“简直是没有对比就没有伤害!
有人认为,普通程序员用复杂的代码解决简单的问题;而高级程序员能把复杂的问题简单化并用简洁的代码去实现。在w3cschool看来,顶尖程序员和普通程序员至少在以下6个方面大有区别。
1、文档能力
“文档是第一生产力”,这一点在程序员的世界是毫无异议的。看看Spring,hibernate,Struts等最流行的开源软件的文档就知道,他们tutorial,他们的getstarted,他们的reference文档写的多么的易懂。
如果要获得更高的报酬,文档是绝对关键的因素。有文档就有沟通,就有交易。搞技术的容易忽视文档的力量,也因为写文档十分困难,更多程序员选择舒适区,习惯写下代码,但正因为如此,妨碍了不少程序员的进阶。
2、解决BUG的效率差别
普通程序员可以利用搜索引擎(网络)寻找答案,经常性找不到好的解决办法,然后更换技术方案!顶级程序员也利用搜索引擎(Google)寻找答案,一般bug都顺利解决(其实跟前期框架选择等关系非常大)。
3、表达能力
表达能力决定了你所做的技术的影响范围,决定了你的影响力,决定你的威信,决定了你的报酬。普通程序员和顶尖程序员的表达能力差别非常大,这主要还是取决于他们格局的不同。良好的沟通能力让你理解产品经理的设计思路,让你更好的展现自己的特长。
对于累积人脉,当你的阅历越来越丰富,人脉对你的帮助也越来越明显。
4、优雅和美观的抽象能力
普通程序员和顶尖程序员之间的区别在于优雅和美观的抽象能力。好的系统通常是要做到两个方面才合格,其一是好用,其二是好看。但是令人遗憾的是,普通程序员仅仅从实现的角度进行堆砌。顶尖程序员往往能够更进一步,经常会去思考用户在操作这个功能的时候,到底还会做什么事情。
所以,顶尖程序员和普通程序员区别就是是否拥有用户意识,是否敢于直面用户。好用,好看一直是软件能够被普遍采用的前提,因此,我们有必要学会抽象优雅。
5、面对如何开源社区态度
普通程序员几乎没有在开源社区混,这也导致经常对新技术发展关注度低。而顶尖程序员则是拥抱开源社区。
6、面对功能点
普通程序员:立马开始构思自己如何实现脑海里出来一个方案。
顶尖程序员:发现功能点很普通github上面早已经有非常多的解决方案,着手根据业务选择一个最适合最优的方案
H. 一名优秀的程序员必备的素质是什么
程序员必备的七种素质x0dx0a1:团队精神和协作能力 x0dx0a把它作为基本素质,并不是不重要,恰恰相反,这是程序员应该具备的最基本的,也是最重要的安身立命之本。任何个人的力量都是有限的,即便如linus这样的 天才,也需要通过组成强大的团队来创造奇迹,那些遍布全球的为linux写核心的高手们,没有协作精神是不可想象的。一旦进入系统的研发团队,进入商业化和产品化的开发任务,缺乏这种素质的人是不合格的。 x0dx0ax0dx0a2:文档习惯 x0dx0a说高水平程序员从来不写文档的肯定是乳臭未干的毛孩子,良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要 高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。 x0dx0ax0dx0a3:规范化,标准化的代码编写习惯 x0dx0a代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术 人员之间的协作。有些codingfans叫嚣高水平程序员写的代码旁人从来看不懂,这种叫嚣只能证明他们自己?根不配自称程序员。代码具有良好的可读性,是程序员基本的素质需求。没有规范化和标准化的代码习惯,研发之间的协作是绝对不可想的。 x0dx0ax0dx0a4:需求理解能力 x0dx0a程序员需要理解一个模块的需求,很多程序员写程序往往只关注一个功能需求,他们把性能指标全部归结到硬件,操作系统和开发环境上,而忽视了本身代码的性能考 虑,性能需求指标中,稳定性,并访支撑能力以及安全性都很重要,作为程序员需要评估该模块在系统运营中所处的环境,将要受到的负荷压力以及各种潜在的危险 和恶意攻击的可能性。就这一点,一个成熟的程序员至少需要2到3年的项目研发和跟踪经验才有可能有心得。 x0dx0ax0dx0a5:复用性,模块化思维能力 x0dx0a经常可以听到一些程序员有这样的抱怨,写了几年程序,变成了熟练工,每天都是重复写一些没有任何新意的代码,这其实是中国软件人才最大浪费的地方,一些重复性工作变成了熟练程序员的主要工作,而这些,其实是完全可以避免的。 x0dx0a复用性设计,模块化思维就是要程序员在完成任何一个功能模块或函数的时候,要多想一些,不要局限在完成当前任务的简单思路上,想想看该模块是否可以脱离这个 系统存在,是否可以通过简单的修改参数的方式在其他系统和应用环境下直接引用,这样就能极大避免重复性的开发工作,如果一个软件研发单位和工作组能够在每 一次研发过程中都考虑到这些问题,那么程序员就不会在重复性的工作中耽误太多时间,就会有更多时间和精力投入到创新的代码工作中去。 x0dx0a一些好的程序模块代码,即便是70年代写成的,拿到现在放到一些系统里面作为功能模块都能适合的很好,而现在很多软件一升级或改进就动辄全部代码重写,大部分重复性工作无谓的浪费了时间和精力,这是我们应当刻意克服的弊病。 x0dx0a6:测试习惯 x0dx0a作为一些正规化的开发而言,专职的测试工程师是不可少的,但是并不是说有了专职的测试工程师程序员就可以不进行自测;软件研发作为一项工程而言,一个很重要 的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对 整体系统建设的效率和可靠性就有了最大的保证。 x0dx0a测试工作实际上需要考虑两方面,一方面是正常调用的测试,也就是看程序是否能在正常调用下完成基本功能,这是最基本的测试职责,可惜在很多公司这成了唯一的测试任务,实际上还差的远那;第二方面就是异常调用的测试,比如高压力负荷下的稳定 性测试,用户潜在的异常输入情况下的测试,整体系统局部故障情况下该模块受影响状况的测试,频发的异常请求阻塞资源时的模块稳定测试等等。 x0dx0a当然并不是程序员要对自己的每段代码都需要进行这种完整测试,但是程序员必须清醒认识自己的代码任务在整体项目中的地位和各种性能需求,有针对性的进行相关测试并尽早发现和解决问题,当然这需要上面提到的需求理解能力。 x0dx0ax0dx0a7:学习和总结的能力 x0dx0a程序员是人才很容易被淘汰,很容易落伍的职业,因为一种技术可能仅仅在三两年内具有领先性,程序员如果想安身立命,就必须不断跟进新的技术,学习新的技能。善于学习,对于任何职业而言,都是前进所必需的动力,对于程序员,这种要求就更加高了。 x0dx0a但是学习也要找对目标,善于总结,也是学习能力的一种体现,每次完成一个研发任务,完成一段代码,都应当有目的的跟踪该程序的应用状况和用户反馈,随时总结,找到自己的不足,这样逐步提高,一个程序员才可能成长起来。
I. 程序员最厉害的职位
程序员最厉害的职位有高级架构师,高级软件工程师。程序员是个统称,一般有初级、中级、高级。初级软件工程师、中级软件工程师、高级软件工程师,再稍微有点档次,系统架构师,项目经理。