‘壹’ 程序员技术发展问题
学习c++的50条忠告(初学者必看)
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C++》;
24.不要停留在集成开发环境的摇篮上,要学会控制集成开发环境,还要学会用命令行方式处理程序;
25.和别人一起讨论有意义的C++知识点,而不是争吵XX行不行或者YY与ZZ哪个好;
26.请看《程序设计实践》,并严格的按照其要求去做;
27.不要因为C和C++中有一些语法和关键字看上去相同,就认为它们的意义和作用完全一样;
28.C++绝不是所谓的C的“扩充”——如果C++一开始就起名叫Z语言,你一定不会把C和Z语言联系得那么紧密;
29.请不要认为学过XX语言再改学C++会有什么问题——你只不过又在学一门全新的语言而已;
30.读完了《Inside The C++ Object Model》以后再来认定自己是不是已经学会了C++;
31.学习编程的秘诀是:编程,编程,再编程;
32.请留意下列书籍:《C++面向对象高效编程(C++ Effective Object-Oriented Software Construction)》《面向对象软件构造(Object-Oriented Software Construction)》《设计模式(Design Patterns)》《The Art of Computer Programming》;
33.记住:面向对象技术不只是C++专有的;
34.请把书上的程序例子亲手输入到电脑上实践,即使配套光盘中有源代码;
35.把在书中看到的有意义的例子扩充;
36.请重视C++中的异常处理技术,并将其切实的运用到自己的程序中;
37.经常回顾自己以前写过的程序,并尝试重写,把自己学到的新知识运用进去;
38.不要漏掉书中任何一个练习题——请全部做完并记录下解题思路;
39.C++语言和C++的集成开发环境要同时学习和掌握;
40.既然决定了学C++,就请坚持学下去,因为学习程序设计语言的目的是掌握程序设计技术,而程序设计技术是跨语言的;
41.就让C++语言的各种平台和开发环境去激烈的竞争吧,我们要以学习C++语言本身为主;
42.当你写C++程序写到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个设计的完整性,然后分析自己的错误并重新设计和编写(参见43);
43.别心急,设计C++的class确实不容易;自己程序中的class和自己的class设计水平是在不断的编程实践中完善和发展的;
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;
45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;
46.记录下在和别人交流时发现的自己忽视或不理解的知识点;
47.请不断的对自己写的程序提出更高的要求,哪怕你的程序版本号会变成Version 100.XX;
48.保存好你写过的所有的程序——那是你最好的积累之一;
49.请不要做浮躁的人;
50.请热爱C++!
‘贰’ 程序员应该如何面试,程序员面试问什么技术
3年以下的面试
面试主要看两个方面:
一、通过沟通交流,一些简单的问题,了解的你的逻辑思维,个人性格。
二、一些常用的技术是否了解,根据你的回答问几个典型的问题。
这个阶段面试技术并不是最重点的,主要还是逻辑思维是否敏捷,为人处事是否好相处,技术是可以培养的,基本带一周就可以很好的干活了。
3年以上就麻烦了
一、技术会问的很详细,没有扎实的功底,挡不住啊。
二、超过3年的招聘,一般都是有一定目的性的,比如需要搭建项目构架,或者需要专攻数据库的,或者需要比较全能的技术大牛来解决问题,所以应该针对面试方的一些需求去准备。
以上都是瞎掰,看看就行了。
‘叁’ 程序员真的很难吗
您好,非常荣幸能在此回答您的问题。以下是我对此问题的部分见解,若有错误,欢迎指出。展开全部
很多人问编程难不难?我想说那可不是闹着玩的。不从事这一行的永远不知道这行的艰辛,还咋巴着小眼睛问编程好不好学?
不知道诸位看没看过圣斗士星矢这部动漫,如果你想踏入编程殿堂,就要先想想那个被无数小孩子嘲笑的实力很菜只会死缠滥打经常被虐得体无完肤的主角星矢,首先你得问问自己,想学编程,你有没有像星矢一样持之以恒百折不挠一步一个脚印忍受常人无法想象的困难和痛苦的品质,没有?你说我开玩笑逗你,那好,下面的不用看了,因为你确实不适合学。
如果你只想着挣大钱,劝你别碰这行,一句话,别来找虐。为什么?你看到的手机APP,各种应用,要想开发出来,不知道需要多少种技术。拿最常见的网站开发,需要后台数据库mysql,数据格式json,xml,各种网络协议,还有网站开发语言PHP,
JSP,ASP.NET,等等不下十几种技术。而每一种技术都是一本厚厚的五六百页的书,需要最少一年多时间掌握一门技术。最要命的,每种技术互不交叉还跨度很大,每种技术都有自己的设计理念和很多很多“天坑”在等着你攻克,你问问你自己,你有这个恒心和意志力天天捧着本大部头的书天天看,天天上机操作学吗?你说有,那好,你看电视上那些富二代天天潇洒地到处游玩泡妞基本于你无缘了,因为你根本就没时间,谈个恋爱都困难,还想打网游玩王者?那算了,你还是别碰这行了,别耽误你玩游戏享受生活了。
学习编程,你上来就会碰到第一关劝退BOSS,环境搭建。如果只会个C++,java可以有VS,
Eclipse帮助你,但是你要学那种新兴的语言工具,如cocos2dx, NodeJS, Android,各种服务器语言,Linux,
那对不起,各种环境配置能练得你头大,就算用上VS这种宇宙无敌IDE,
学编程还是会碰到无休无止的各种编译错误,运行时错误,很多时候编译器给出的出错语句非常费解,全英文的哦,还是高浓缩科技英语,还经常真实出错原因跟IDE的出错提示差了十万八千里,这个时候只能依赖您丰富的编程排错经验,不行只有网络,google,专业论坛海量搜索,碰运气了,看是不是有高人也遇到同样的问题,很多情况下你发的帖子石沉大海,没人回答,这个时候是你最容易放弃被劝退的时候,少年们,觉悟吧。这个时候如果你没有星矢那样反抗命运不公,被打倒多少次都要站起来不服输的勇气,半途而废是你注定的结局。
程序员加班很恐怖,工作制通常是996,即早9晚9周六还要上班,晚9下班还是早的,一般到晚上十点。你想那时夜深人静了人家都休息抱着老婆睡觉了,你还在工作中,F9, F10, 不对,重来,这听上去是不是很崩溃?
第2,程序员耗脑太严重。工作中需要十几个小时大脑不停地运转。需要设计算法,不断地把代码改来改去来适应客户一天几变的需求。很多功能没有现成的解决方案,还经常遇到一些天书一样的疑难问题,bug,实际工作中突发状况千奇百怪,你可能见都没见过的bug,崩溃,需要一点一点查几万行的log日志。而且也需要网络,google,英文论坛寻求帮助,理解错误信息是什么意思。所以英文不好的没耐心的还是算了吧,不适合这行。
第3.
程序开发首先是非常难学的,任何一门编程语言都有自己独到的思想,概念设计,很多情况下一门语言与另一门语言没有多大关系,知识经验无法串用。而且工作中你还不得不用到这些技术你不得不去学。而且程序技术日新月异,新类库新SDK每天都会推出,你需要日复一日不断地学习新技术。如最新视频解码技术,游戏引擎等等,而这些新技术可是国内没有书和任何资料的,需要你到英文官方网站去找实例看文档去学,更要命的,新的技术和老的还没太大关联,你得重头去学。而且老板急赶项目不会给你什么时间,一般三天就是极限了,你需要这么短的时间快速掌握一项新技术...
综上,你明白程序员为什么总要加班了吧,也知道这行不是人干的吧。为什么说程序员干到三十干不动。很简单,以这种消磨人生所有时间状态,你生命中只有加班加班工作工作学习学习,你将不能顾家不能跟朋友聚会不能再有自己一点点休闲时间,更别说谈女朋友恋爱了,以这种状态你能坚持到三十岁?我想那简直是个奇迹了非常感谢您的耐心观看,如有帮助请采纳,祝生活愉快!谢谢!
‘肆’ 优秀的程序员是如何处理技术 Bug 的
从初入职场菜鸟到职场大咖,很多程序员在努力充实自己,有时候我们需要对自己进行一次能力定位,了解自己的优势和没有掌握的技术。芯学苑列出几点作为初入职场的新手评估自己,明了前进学习的方向。
1、技术能力(解决问题的能力)
这是非常重要的事;过硬的技术能让你得到面试机会,并在工作中游刃有余。当公司招聘一个Java开发人员时,是会优先考虑能力因素的。在实际的项目开发中,一个程序员的技术能力等于其解决问题的能力。
如果拿一个尺度来衡量这个能力的话,一个程序员的能力可以用能完成任务的数量和难度来衡量。一个程序员能基本无误的完成项目中的一个功能算是合格,但在此之前,他对项目的生产力为负,为他布置的任务,中间环节的沟通,修补bug的时间其实要多于自己直接完成该功能的时间的。能较好完成一个完整模块的程序员才算是较好的程序员,也是项目中的主要开发者。能独立完成整个项目才是优秀的程序员。
2、专业基础(知识的积累)
一个程序员的知识积累很大程度上决定了其解决问题的能力。知道如何编写代码是基本的技能,但是知道Java编程语言的原理,知道代码背后的算法将使你从人群中脱颖而出。
3、主流编程工具
今天,事实是,你不能成为一个样样都懂的人(杂而不精)。你必须选择你要掌握的工具。有时这是由工作的环境决定的,但是按照下面说的去做也是一个很好的选择:
构建工具:Maven或Gradle。
SCM:Git(不是GitHub。大不相同)。
构建自动化:Jenkins。
IDE:Netbeans或Eclipse——不仅用于编写代码,而且还从IDE中重构和调试代码。我遇到了很多没有如何从他们最喜欢的IDE调试的开发人员。
Bug跟踪:Bugzilla或Jira。
4、JSF的知识
应用程序服务器
所有Java开发人员应该知道如何在Apache Tomcat中部署。
当Glassfish开发停止时,下一个最好的事情是J Boss Wild Fly。
5、沟通的能力
沟通是我们做好一切事情的关键。我们必须与我们周围的环境保持互动,无论是在我们的私人还是职业生活中。一个良好的程序员知道如何在各种团体面表达自己。也许对你来说显而易见的东西在他人的角度来看并非如此。
从大的尺度(比如一个人的工作生涯)来看,一个程序员知识积累的多少只决定于其自学能力和他对编程本身的兴趣。
在一个分工明确的项目中,程序员需要理解产品,和领导沟通理解自己的任务,和同事们沟通以正确的方式进行合作。无论哪一个方面沟通出了问题都不是小事情,同时,程序员还需要正确的传达设计的实现难度,以及让别人正确的理解自己设计模块的接口。在不写文档时,正确的口头沟通非常重要,需要写文档时,良好的编辑能力也算做是沟通能力的一部分。
6、自学能力
这是一个非常重要的技能,在你自己的空闲时间学习新的技能。不要等待公司为你提供培训。你需要自己去学习新技术,提升自己在相关领域的水平。从Java后端开发到架构模式,总是有一些新事物值得学习。经常阅读博客和论坛,尝试加入本地聚会小组。你学到的东西可以帮助你的事业。知识刷新频率极快让人无法追赶的这个时代,难免会有超出自己知识范围的时候,此时你的自学能力决定了你能多快的完成任务。
7、良好的团队合作精神
无论是部分编程还是大型项目,所有开发人员都是作为团队的一部分在协同工作。你需要致力于团队的目的,或帮助新的团队成员克服障碍。不要存在这种“我只要做好我的本职工作,下班就直接回家”的态度。成为团队的一部分,帮助周围的同事,对自己的能力也是不小的提升。
就像拿破仑说的不想当元帅的士兵不是好士兵,追求参与一个大型软件系统的开发,是每个程序员的梦想。在此之前,应该学习更多的专业知识,达到优秀程序师的标准。最后希望各位程序员阅读本文后能够得到一些裨益,在这条路上走得更好。
‘伍’ 作为一名程序员,从事技术管理工作,应该注意什么事情
从程序员到技术管理,这要用人力资源管理的专业知识来看,就是一个非常典型的从“个人贡献者”向“团队管理者”角色转变的过程,这也是各公司人力资源部门会重点关注的一个群体,帮助这些新晋升为管理者的人员快速进行角色转换。
我将结合我人力资源从业生涯见到过的诸多案例、以及个人从员工升到管理层时的一些心路历程,来回答这个问题。
依赖下属完成业绩目标的管理者,最重要的就是解决两个问题,一个问题是让下属会干活、有能力干活;另外一个问题就是让下属有意愿干活,拥有一个能够好好干活的环境。
辅导和培养员工能够解决员工干活能力的问题,而激励下属及增强团队凝聚力则能够解决员工干活意愿的问题。主要分享3个主要方法。
‘陆’ 你所知道的程序员都有哪些‘技术癖’
程序员是非常喜欢写代码的,我感觉他们的技术癖好就是一直的写代码,不断的写,也不知道什么时候能写完,而且是非常恐怖的,一直在敲,也不如看到他们写的是什么,他们打出来的东西是什么样的。
‘柒’ 为什么说程序员的工作没有技术含量
有的只是单纯每天复制、粘贴文件,做些重复而简单的工作,这种不能被称之为程序员。真正的程序员是很有技术含量的,做开发,编写程序
‘捌’ 程序员,感觉技术停滞了怎么办
程序人生 | 程序员感觉技术停滞了怎么办?Java程序员如何打破工作2,3年的瓶颈问题,让技术更上一层楼?? 很多人做java开发2,3年后,都会感觉自己遇到瓶颈。什么都会又什么都不会,如何改变..
‘玖’ 为何国内程序员的平均技术水平不高
高级程序员是不能只靠读若干本书和写几万行代码练就的,笔者更注重的是低层的环境,即程序员现实的工作环境。因为程序员的高低还得从实际的工作来衡量,而非其它。所以我想说的是,中国的软件公司的性质直接影响程序员的水平的高低。而我所说的软件公司,不是指某个或者某几个,而是指主流的软件公司,大众型的软件公司。所以我希望那些已经步入一个理想的公司的程序员理解我这篇文章的定位。 软件公司的无偿加班对程序员的影响 国内的软件公司中程序员是常常加班的,每日加,周未也常加。基于这种性质,出现了一种很莫名其妙的现象:每天程序员的实际下班时间总是要晚于规定下班时间,至于晚一个小时还是两个小时还是更多这就另说,总之,程序员这份工作,如果按时下班反而自己感觉自己像是做贼似的。表面上公司并没有强迫谁加班,但实 际上在潜移默化中有一种威慑力,要求你要多为公司工作几个小时,而且表面上你所工作的这几个小时还是你自己愿意的。正因为是“自己愿意的”,所以公司更有理由认为是无偿的。 还有就是周未加班,一般周未加班是因为“忙”(关于这个带引号的“忙”,见“软件公司的‘忙’对程序员的影响”)。但周未加班一般是无偿的,至于法律所规定的那种“偿”就更尝不上了。不过一般公司是这样规定的:周未加班可以倒休。关于倒休,一般是周未的班真的加了,倒休却遥遥无期,原因很简单,公司 “忙” 嘛! 这种情况对程序员的影响:消极、软弱无主见、虚伪、对前途渺茫。 软件公司的“忙”对程序员的影响 软件公司的“忙”其实有时也是真忙,从原因来说,软件公司认为是程序员(其实也有其他员工,但本文不涉及讨论)造成的,程序员认为公司造成的。而根据“一 个巴掌拍不响”原则来看,应该是公司与程序员合作不协调出现的恶性循环造成的。深层原因大家自己研究去吧。不过从我这里的表象来看,这种“忙”有这么几 点,这几点如果不代表大家的意见,大家可以补充: 1、项目开发与计划脱节,表现为项目开发慢于计划。 2、突如其来的事件。 3、为某种说不清道不明的原因,像是作秀。 4、假忙。 5、真忙。 上面说的第一种情况最常见,这涉及到软件工程的话题,其实也是软件公司做不大,程序员水平提不高的核心。 上面说的第二种情况也常有,比如偶尔赶个标书,比如客户那里突然出现了BUG,急着去改等等。 第三种情况就很让人晕菜了,有点无病呻吟的感觉,比如不知道从哪里冒出一个会议,开到个七八点; 第四种情况很特别,也比较常见,大家同室坐、彼此各自心。一片共同耕作的美好景象,但果实见不到两颗豆呢。这可是大家齐心虚度时光。程序员可以拿出这个时间提高自己吗?当然不可以了,你表面上还是得干活呢。 第五种情况就不说了,因为这是正根。 总之软件公司是“忙”的,一般是以上三种“忙”,偶尔这三种都没有了,第四种就马上出来的。 这种情况对程序员的影响:混乱无序、怨由心生、虚伪做作、学习时间少。 软件公司的流程不规范对程序员的影响 无像样的需求、无像样的设计、没有测试、没有文档、没有维护(所谓维护也大都是客户测试出BUG来改一改)。 其实说到需求这一块也并非完全是软件公司的问题,大多数情况下,客户也是根据程序员直接上来编码后暴露出来的问题才渐渐明白自己的需求是什么的。 “什么都没有”的问题在于,什么也不清楚,如果写一堆以不变应万变的代码,第一,时间不允许,第二,难度太大。要是稀里糊涂去实现,扩展与维护性又差,整个一堆豆腐渣工程,总之是没法下手。长了一堆“打铁”技巧,神不像神,程序员不像程序员的。 这种情况对程序员的影响:无规划性、代码质量低、手忙脚乱、技术永远停留在“打铁”水平。 软件公司对程序员员工的“全能型”要求对程序的影响 装系统、修打印机、写文档、编代码、见客户、扫地搬桌子、接网线,在国内软件公司中程序员做什么事都有可能。单单说技术方面,也是要求事事能做,看一下招聘要求就知道了。 这种情况对程序员影响:术业无专攻。 软件公司的工资拖欠对程序员的影响 很悲哀,这是存在的。我向来认为一个员工与公司合作的最底线应该是按时按量发工资。但很多公司打破了这个底线。一个朋友开玩笑地说过:“家庭有钱,谁干程 序员呀!”这话虽只可信一半,但是从国内情况来看,程序员的生活质量还是不高的,工资的拖欠直接影响到程序员的心态,甚至影响到程序员的生活。 这种情况对程序员影响:低调、迷茫、心态不稳、思想徘徊、生活困难。 软件公司对软件开发的要求对程序员的影响 软件公司对软件开发的要求一般是实现即可。如果说写一个和记事本一样的程序,公司感觉程序员应该在一天内搞定;如果写一个WPS,公司也就感觉程序员应该 在两到三个月搞定。这不是浮夸,事实就是这样的。公司所着眼的点在于“就这么一点功能”,而非在于“怎么实现这‘一点’功能。 这种情况对程序员的影响:开发难度大、维护难度大、压力大、难沟通。 软件公司的承诺对程序员的影响 国内软件公司一般实际行动能力差,但没理难说话,他们也知道自己没理,所以比较爱承诺,把实际问题抛向以后解决。然而承诺也只是口头的,有一点“我以人格 担保”的意思。不过一般情况下,国内的程序员还是比较有忍耐能力的(从上文来看不忍耐还能混吗),但公司层面的“人格”却是不可信,多承诺少兑现,员工面 试时听到的说话到干了两年走了都没做到的事根本不少见。然而路遥马乏力,日久人变心,这样的结果往往是使公司与员工走入恶性循环。 这种情况对程序员的影响:不满、被动、拿不起放不下、进退两难。 总结 消极、软弱无主见、虚伪、对前途渺茫、混乱无序、怨由心生、虚伪做作、学习时间少、无规划性、代码质量低、手忙脚乱、技术永远停留在“打铁”水平、术业无专攻、低调、迷茫、心态不稳、思想徘徊、生活困难、开发难度大、维护难度大、压力大、难沟通、不满、被动、拿不起放不下、进退两难。 上面这些短语概括了程序员的性格、心态、生活环境、工作环境等方面,它们就像毒素一样,日久能把一个健康的程序员毁掉。在这样的环境下,还问为什么你的技术这么低?太搞笑了。
‘拾’ 做了快一年的程序员了 技术仍是一般般,是不是很不合格
习惯促使我,我们不断进步,写出更好的代码。如果你现在觉得自己遇到了瓶颈期或者不知道该如何提升自己,那么这篇文章非常适合你。
6
第一个迭代版本仅仅只是起步:它能够确切起效,那么恭喜各位!但这并不是终点,接下来我们要让它变得更好。