‘壹’ 怎么才能成为一个优秀的程序员
1、迷恋技术,保持对代码的热情
兴趣是最好的老师,如果不是最初对编程充满兴趣,应该很少有人会选择程序员这个行业,但同时程序员是一个有点乏味枯燥的工作。如果你不迷恋技术,对代码充满热情,那你只能做一个平淡的程序员。
2、在实践中成长,磨砺技术
程序员是一个在实践中成长的职业。你看再多书,听再多的视频课,自以为学到很多东西,但正在接触项目的时候,就两手发软,头脑空白了。最好的提方法,是正在参与到项目中去,最好是能参与从设计到开发到测试到维护一整套的整套流程。
3、加班虽苦但也是提高的过程
虎虎在之前的文章中说过:毕业之后的前三年最为重要,要认认真真钻研技术,积累经验,至少能在某一方面成为技术达人。程序员加班是很正常的事情,要加班工作,加班学习,同时在这段时间要注意多总结,注意工作方法,合理安排时间,提高工作效率。你现在的付出是为了以后的成功!
4、不怕失败,学会寻找成就感
新程序员由于技术水平、经验的欠缺,写出的程序bug多,执行效率低,可能被同事嘲笑(我发现这还是普遍现象),然后被上司责怪,内心充满有挫折感。要学会自我减压,相信挫折与失败只是暂时的,发奋图强。在工作中要学会寻找成就感,哪怕你只是完成一个小功能,优化了一段代码,都是你辛勤付出的结果,是你能力提高的体现。
5、要学会写文档
不要以为程序员只要负责写代码,如果是那样,你永远不能有上升的空间了。因为不管是走技术路线,还是管理路线,都离不开文档,方案文档,技术文档,产品介绍文档,管理文档等等,是你了解开发流程,产品运营的必由之路。
6、学会复制粘贴
现在的开发资料已经非常的充实,遇到难以解决的问题不要过分纠结,为难自己,请打开搜索引擎搜索一下。毕竟,你做的是工作,不是在学校做研究。
7、细节决定成败
不少程序员都有这样的习惯,好不容易思考出解决问题的方法,迫不及待的把代码写出来,功能也实现了,立马提交代码完事。殊不知你的代码中还有不少细节需要完善,大到内存泄露、资源释放、代码是否高效,小到注释是否规范,都是你必须关注的问题。且不谈这些细节问题对你做出来的项目的影响,就是对你编程习惯的影响也是深远的。
‘贰’ 30岁了,做了7、8年的java后端,感觉人越来越多,想转行c++怎么样
恕我直言,你此时需要的不是一门新语言,而是该转岗了。
5年以后,不管你会什么语言,你的简历裤稿都没人看了。或者说别人对35岁的需求不是在语言的层面上,而是具备一定产品项目管理或者业务层面经验的中高级人才。
如果打算继续从事技术也可以,但是就要有专精之处,大的方向比如AI,游戏引擎,分布式计算,等等。人们喜欢一个5年的熟练程序员,但一个15年的程序员没有打人的专精领域,那是没市场的。
我想你问这个问题,应该也感受到了压力。但是同一水平上的重复从来不是最好方案。怎么也要转一下能开辟另外10-15年才是需要考虑的事情。30岁怎么搞还都来得及。
如果以后不想再拼得太激烈,转做产品和市场相关的职务可以考虑,相对于未来做CTO之类的一个单位只有一个的职位竞争压力会小很多,毕竟中小创业举帆公司对这种职位需求比较大一些。
我自己就是做了10年C++程序员转向技术管理后来做运营管理的,当时是被迫接受调动,回头看还是比较幸运。有些老同事技术也不错的到我这寻求给个工作,感觉也胡答孝是走投无路了,不然忍不了这给老同事打工的尴尬。
我也不想再说多了,都是程序员,码到为止。
‘叁’ 怎样建设有竞争力的APP开发团队
1、人员配置
APP开发团队,笔者个人看来,每一个产品,每一次项目,其实应该都是一个周期完整的APP开发过程(先抛开运营不谈),为了达到全过程的专人专岗,以最精简最节约的方式,也应该达到以下团队配置。
A、产品经理(项目经理):整个产品团队的核心管理者,懂用户,精通需求,能跑市场,了解开发,实在没人还能拉去做测试,很苦逼,但是个什么都懂一点的万精油。最重要的职责就是把控产品的方向和质量,并能在前期,就对产品的运营进行规划,并按照运营思路,推进APP开发工作。
B、安卓及IOS程序开发:这里基本是个2人的搭档配置,一个人负责IOS苹果开发,一个人负责安卓,就长沙APP开发而言,精通安卓和苹果开发的人,真的很少。青橙团队里有那么1-2个高手,负责整个产品开发的全过程把控。APP的质量,好不好用,流畅不流畅,都与程序编写质量息息相关。
C:后台及数据库设计:必须对数据库较为精通,能根据APP需求,进行数据库设计,并搭建APP后台管理框架。这个类似传统程序员及架构设计师的工作范畴,牛人也很多。 青橙基于一般企业复杂的APP应用,后台使用java+oracle比较多,而简单的APP轻应用,php+mysql也可以搞定。
D、UI设计师:这位仁兄的工作非常重要,除了要做得好看,等要懂得用户的操作习惯,让APP更好用,要懂点产品,懂点美术,后面我们会再说起他。
为了节约成本,一个最精简的APP开发团队可能需要这么些人来搞定,如果有大牛,BC一起都自己搞定,不过这样的牛人,都是不上班的,加入团队的可能性就更小了。至于调研,测试等苦逼活,产品经理就兼了吧,至少笔者是吃过不少这样的苦头的,哈哈。
2、硬件设备
为啥写这个,其实也是想发发牢骚,抱怨抱怨。做APP开发,你就得紧跟时代,最新的手机,笔记本一个都不能少。
做安卓开发,公司备着三星S4、HTC、华为,魅族等多款手机,安卓平台,兼容性一直是个问题,多测试测试总不会错吧。
做IOS开发,这就要求更多,iPhone4、iPhone5、iPhone5S、iPad都要有,然后苹果的程序开发,你还必须通过Macbook进行,买几台苹果笔记本,少不了吧,再加上每年99美元的开发者账号,七七八八下来,几万块钱就没了。
所以说,APP开发团队,有人说我们成本低,不就几台破电脑吗? 其实我们真是必须这里申明,我们真的买了好多设备....
3、软件配置
软件这个不知道为什么拿出来说,主要最近苹果升级IOS7,让XCODE6的版本搞惨了,调试兼容性,测试BUG,调整界面风格,现在回想起来,真是挺辛苦的。
但这里说明一点,苹果的开发工具较为人性化,很多控件使用也很傻瓜,我们的开发人员都认为,只要掌握熟练了,其实苹果的开发,相对安卓,反而会比较轻松。 安卓虽然很灵活,但正因为这种灵活,带来的程序工作就更多,开发起来,就更辛苦一些。
所以,APP开发团队,最佳状态是苹果和安卓分开开发,这样效率和质量都会高一些,毕竟专精一门更容易。
4、UI及界面设计
UI设计,易用性设计,交互设计,在手机APP开发过程中,是贯穿始终的重要工作。UI设计师过去一直被称为美工,得不到重视。但现在我们发现,好的操作流程,好的交互设计,才是APP的灵魂,好用易用,用户会去使用。
APP团队的UI设计师,往简单的来说,必须具备:能深入产品需求,懂得用户体验,精通美术设计,将最优秀的交互传递给用户。 因此,这也是对综合素质要求很高的一个岗位,需要良好的文化素养和艺术气质,不一定是长头发艺术家,但是一定要懂得很多。
5、上线支持
APP开发完成后,需要做什么?大家肯定会回答:上线。 看似很简单的2个字,大家都认为很简单的工作,其实有很多诀窍,并且还有不小的难度。
先不说别的,你的APP要上苹果的APP STORE,就必须十分精通苹果的上线流程。而且即便你了解流程,编写上线资料,发布上线程序,都是一件考验人的活儿。
专业的APP开发团队,一般都有专业的上线服务人员,他们精通苹果、安卓市场的上线流程和技巧,并对各大APP市场运作流程十分精通,能通过技术手段,让用户更快速,容易的找到您的APP,这就是专业性。
6、运营服务
APP开发完成,只是万里长征走完了第一步,APP的发展,用户数的增加,离不开后期的产品运营。这里面可以讲,可以做的东西很多很多,这里只提一点:市场瞬息万变,运营就要采用灵活多变的方式与手段。而往往在过程中,都必须对APP进行适当的调整,作为APP开发及运营团队,就有责任和义务,配合客户完成这些工作。
APP开发团队与客户的合作是长期合作,特别针对运营的全过程,服务必须是持续性,无法间断的,所以请您谨慎选择APP开发团队。
7、团队合作
APP开发团队,毫无疑问,是属于一种创新型的研发团队机构,团队成员间的分工合作很明确,各司其责,而又彼此紧密结合。建立一支彼此信任,能力均衡,有创新精神,有核心领导的团队,成为了我们的理想,而且我们也一直在努力。
‘肆’ 程序员在职业生涯中易犯的7个错误
1.没有明确的职业目标
没有目标的人生,就像无根的浮萍,水流到哪里就飘到哪里,一生漂泊。
如果你想要在软件开发领域获得真正的成功,那么就必须知道该何去何从。或许面对遥远的未来,你已经有了一个粗略的目标了。但是除了这点还不够,你应当坚实自己的目标——清楚的定义在实现过程中的每个重要时间点所需要达到的效果。
我认识许多程序员和其它方面的专业人士,数十年来他们都在相同的职位上反复地做着同样的事情。是的,你没有看错,是数十年。接受职业现状,不做任何改变,是造成这种悲剧的根源。对于未来,如果你没有明确的职业规划,这样的悲剧就很可能会发生在你身上。
面对于此,你该怎么做呢?
从现在开始,花一些时间来认真规划一下职业并确定最近的目标。一旦你达到了这个目标,你就要选择一个新的目标了。在职业生涯中,这样的目标会一个接着一个。你可以把这些目标写下来,放在一个每天都可以看见的地方,这样就可以让你随时回想起当前需要做的工作。
2.不重视“软技能”或非技术的东西
我认识许多擅长写代码的程序员,他们可以用所写的算法把我耍得团团转,他们对复杂架构的理解力和思考能力令我自愧不如。
但是真实的状况却是:技术不如他们的我,软件开发领域的职业发展却全面超过了他们,除了职位,还包括薪水、生产力等诸多方面。
在这里我并不是为了吹嘘自己多了不起,而是为了向那些只埋头专研技术的程序员们说明“软技能”对于职业发展有多重要。
作为一个软件开发者,我相信你也清楚,编写代码并不是工作的全部。在通往成功的道路上,还需要学习很多其它技能。我们需要长期与他人打交道,所以必须学习为人处事;软件开发面临长期的赶工与不同的需求变化,所以需要学习对心态和注意力的调整;在不断变化的环境里有许多事情需要处理,所以应当学习对事情划分优先级以做到效率的最大化。另外,我们对待身体健康应当和对待自己收入一样敏感,这个才是革命的本钱。
我还可以继续列举出更多的东西,关于了解开发者应当掌握的“软技能”你可以去阅读我写的《SoftSkills:TheSoftwareDeveloper’sManua》一书。
总的来说,在生活中无论从事什么样的工作,那些软技能通常都比硬性的技术能力更为重要,所以请保持不断地学习这些技能。
3.不融入社区生活
在程序员生涯中有一样东西令我受益颇深,它就是社区的帮助。成为这个大群体的一部分,不仅让我拥有了归属感不再孤独,也帮助我改进了自身的技能,向着更高的平台发展。
如果你还没有参与社区生活的话,我强烈建议你融入这个圈子里来。它是一个比自我宽广得多的平台,有助于你的发展。
如果你感觉自己的软件开发工作停滞不前,费劲脑力也无法获得更大突破的时候,最好的方式就是加入社区,与一群有志同道合的人共同探讨所遇到的困难,获得有助于解决问题的建议。另外,融入社区生活还能够聚集人气,培养人脉,这对于提升自身的职业发展也有很大帮助。
但是,如何才能融入到社区生活中呢?
这很简单,世界各地都有很多开发者团体,你可以通过程序员网站找到并加入到他们当中去。你还可以参加开源夏令营,这是一个一年一度的免费地方性活动,众多开发人员会聚在一起分享他们的工作,任何人都可登记参加自己感兴趣的话题。
如果你不希望在现实生活中与过多的人接触,也可以选择加入虚拟社区。
那些大众的程序员社区会是你的第一选择。在社区中你会发现有一些非常厉害的程序员,他们会在自己的博客上写一些精辟的文章并解答大家的问题。除此之外,还有另外一些不错的在线社区,比如大牛们的博客网站、各种技术论坛、讨论群等。
当你开始学会分享,把自己的所知与所想都写出来的时候,你就真正的融入进了社区生活——而这个博客就是我为自己加入这个程序员社区所做的第一件事。:-)
4.没有专长
如果你过去常访问我的博客或者YouTube视频,你会发现我很多时候都在谈论这个话题。这个话题是如此重要,以至于我一有机会就会说到它。
俗话说,术业有专攻。你应当选择一项想要专精的技术并努力磨炼它。但这并不意味着你就可以放弃对其它技术的基本理解而一味地去专研某项技术——我对那些会数种语言的人是非常欣赏的。这一点非常重要,尤其是在你职业生涯的早期培养一技之长的时候。
专长可以满足更高级的需求,因此,在同等条件下,它会带来更丰厚的报酬并更快的积累声望——这些对于业界对你的认可是很有帮助的。
有专长的人好比是小池塘中的大鱼,受人瞩目。或许最终这条大鱼会跳入更宽广的池子,但是所累积的声望和名气同样有助于在软件开发行业的其它领域的发展。
凡事只要七分就好,对于专长技术的研究学习同样如此。过度的投入会对程序员的时间与精力造成浪费,这是得不偿失的。
5.无视个人品牌价值
生活中充满着各种变数:搬家、结婚、换工作、一夜暴富、突然发福等等。无论如何,有一样东西始终会伴随着你一生,而这个东西就是——名字。
你的名字会贯穿于你的全部生活,难道它还不值得你去重视么?
你的名字或者也可以称作是你的个人品牌是一件非常有投资价值的东西,可许多软件开发人员对此却一无所知。
对于获得工作、取得晋升、客户端的登陆以及工作的开展等,名字无疑都展现了其强大的作用。毫不夸张的说,假如你臭名昭着的话,会万事难行,而如果你有良好的名誉的话,大多事情只需通过简单的握手就能搞定。
我认识很多的软件开发人员,他们从不担心自己会失业,这是因为他们投资了时间和精力来打造坚实的个人品牌。他们知道,无论发生什么事情,在他们失业后的几个小时内就可以获得一份新的工作,这是因为他们在业界有良好的声誉。
对产品和服务进行的投资看起来很正常,但是你是否考虑过自我营销的价值?要在软件开发行业建立起自己的个人品牌,我的建议是从创建自己的博客开始,选择将自己的专长或者有很深了解的领域作为提高自己影响力的跳板,学会把自己的名字一步步做成行业的金字招牌。如何快速的提高自己的影响力呢?最好的方法之一就是创建对别人有帮助的文章。
就拿这个博客为例吧。这个博客建立了我在互联网上的个人品牌和声誉,如果你认为我的文章或者网站是有价值的,你会选择进行分享。甚至你有可能把它列入收藏或者进行订阅,以方便以后继续访问。而这只是其中一种打造个人品牌的方式。同样的,你还可以选择视频网站、播客等媒体,或者在书刊上发表文章,在会议上演讲等方式。如果你对如何在软件开发领域深度挖掘自身的品牌价值很感兴趣,这个网站会告诉你如何去做。
6.荒废业务时间
在工作之余,你应当做一些项目来练练手。
做业余工作有许多你不知道的好处。首先,它可以有效的改进你的专业技能,特别是那些在平时的工作中很少用到的技术。相比起平时朝九晚五的工作,业余工作类型多变,对于专业技能的提高更有好处。其次,它有助于你对新的开发技术和技巧的学习。这对于日后你想从事新的工作是很有帮助的。我碰到过许多程序员,他们向我抱怨在当前工作中没有机会去学习新技术,这让他们今后无法在工作市场上立足。而我向他们建议工作之余去做一些小项目,使用他们今后想要立足的新技术——这种方式对于提高相关技术是很有帮助的。
除此之外,我们不要忽视做业余工作所带来的经济利益。人们常认为业余时间做的那些小项目是挣不到什么钱的,而事实上它却是额外收入的重要来源。4年以前,我在业余时间里开发了一个在Android和iOS平台上使用的应用程序,而到现在,这个应用程序还能为我创造价值。
我还认识一些程序员,他们从业余工作做起,最后把这些工作发展为了全职工作。而事实上我就是这些程序员中的一位。这个博客本身以及SimpleProgrammer周围的其它部分现在成为了我的全职工作。我喜欢称自己为程序员的生活导师,但是也有很多人认为我是一个专职的博客写手。
业余工作可以让你充满乐趣,它能够把你从那些你不喜欢但又必须去做的工作中解脱出来。作为一种释放工作压力的好方法,它会每天带给你新的希望。
7.没有自我学习的计划
在我面试软件人员的时候,我首先会问到的一个问题就是关于他们的自我学习和持续完善的计划——如何进行自我完善。程序员如何在这个快速变化的领域保持技术与观念上的更新?我希望获得的回答是他们能告诉我对于自我学习与成长他们有着一个实际可行的计划。因为一个致力于不断学习进步的人不仅能够让自己迈向成功还能影响到周围的人,使他们一同迈向成功。
然而,有如此之多的程序员对于自我学习没有任何计划。假如你是这些人中的一员,你就应该立即行动起来做一个自我学习的计划。
这儿有一个可供参考的个人简单计划:
坚持每月读一本关于技术学习或者职业发展的书籍。
这意味着一年时间里你需要阅读12本书。对于我来说,我会在每天用至少45分钟时间来阅读。当我在跑步机上运动的时候我会同时阅读一些与我个人职业发展相关的文章。
积沙成塔,集腋成裘。每天只需花费30分钟时间来阅读书籍,一两年时间之后你的人生境遇就会发生很大的改变。
‘伍’ 程序员总去的交流平台,哪些比较好呢
知乎、博客园可以去看些文章类型的,开源、csdn、“问啊”、segmentfault,就是解决问题啊,那个问啊回答问题是直接给钱的,而且速度也挺快。
‘陆’ 工作五年以上的程序员,应该干些什么
我做开发十几年了,说说我的理解。工作五年以上的程序员,应该在这些方面多多精进:在某一领域,建立自己的知识体系,形成顶端优势。因为只有你形成了知识体系,才会更有价值,才能更好的解决问题。培养自己的通用能力,比如沟通、演讲、管理、写作、讲授、组织、辅导等。这些通用能力,能让你更好的与人协作,也能让你获得更好更多的做事机会,能够更好的成长。学会思考,建立思考的习惯。正确的思考,能够让我们少走很多弯路。要多想,想明白再去实现,至少,也要想明白当下要做的这一步再行动。要规划思考时间、要经常琢磨一些根本性的问题,比如你为什么要做软件开发,比如这个产品到底有什么用能给用户带来什么价值,比如怎样才能做得更好,比如我能通过软件开发得到什么,比如五年之后我在哪里……建立自己的影响力。在一个团队之中具备影响力的表现是:经常有人来问你的意见,经常有人向你请教问题,很多事情或者问题依赖你。只有你具备影响力了,才能够做更重要的事情,担任更重要的角色。建立个人品牌和辨识度。你在一家公司工作,离开时,别人会因为你是某某公司的开发工程师而记得你,还是会因为你是机器学习方面的专家而记住你,这非常不同。所以,要竭尽全力,在公司的平台上成就自己,建立个人的品牌,让别人因为你本身的特质而记住你,而不是因为你曾在哪里待过。
‘柒’ 小公司程序员的编程水平与BAT大公司相比,有多大差距
网友一:
单纯从技术上来说,大公司是小公司没法比的,大公司系统要更加复杂,研究的东西更加深入。
比如高并发,大数据,小公司没有那么大流量和数据量根本没办法研究。
大公司一个系统N台机器,为了节省资源就要研究怎么使机器能力最大化,优化代码,优化逻辑。
小公司可能一两台机器就能支撑一个系统,只要没bug就能正常运行。
但是大公司大部分普通程序员,由于做得太专一了,基本上在某一方面做得不错,整体能力差很远,但是自己觉得啥都行。
这么比喻吧,如果说把程序员比作厨师。
普通公司的程序员基本上是各个饭店的大厨,啥菜都会做。
bat是御膳房,程序员什么大菜都见过,但基本上一个大菜也做不了。很多人就是御膳房后勤部切葱花大队的切葱花手。
‘捌’ 程序员,不会重装系统,不懂计算机硬件基础知识,正常吗
不懂硬件 是正常,不会重装系统 是不正常的。
很正常
怎样定义懂?
你是程序员,你应该至少至少有一些模糊的概念,你的程序是怎么运行的,内存怎么回事,缓存什么东西,cpu怎么运算的,数据切入切回硬盘是什么意思。
我见过不少程序员,一个“运行慢”就能让他直接摊手,那些频繁的IO开销,不断读写硬盘数据,甚至在里三层外三层的循环里去访问数据库,这些在他们眼里根本就不是问题,或者说他们根本意识不到这里会有问题。
因为“编译通过了呀,程序能运行呀,我电脑上没问题呀”。
程序员可以不专精英硬件知识,但是想要自己提升,最好还是了解一些比较好。
至于了解到什么程度,每个人都有差异,自己把握。
至于那些业界被奉为大神的早期程序员,其实他们当年写程序,都是需要自己手工码代码去控制硬件的,包括那些你能想到和想不到的。
我是网络维护的,经常被人请教word Excel ps O_o 我说不会,,他们就说你就是干这个的怎么能不会
正常,人家是另外一个层次,解说员和教练或伏不一定会打球
正常,术业有专攻。越是大的单位越这样
太正常不过了。我公司里几个程序员不会装电脑。电脑有硬岩启件问题也不知道怎么解决。但写代码确实比较厉害
不正常。不会切菜的厨师,不是真厨师。
只要掉头发就行,标配
很正常,这两者之间并没有必然的联系,解决电脑系统问题,硬件问题是维修人员商家售后的事情。程序员很多在大学开始粗团如学的时候都是小白,除了玩 游戏 什么也不懂,大学也只会讲讲计算机硬件的基本组成,不会讲什么重装系统和Windows系统故障分析,只会讲编程软件的环境部署,编译原理什么。也就是说很多程序员除了编程等相关方面外对计算机和普通人一样什么也不懂,除非这个人是一个计算机爱好者对计算机各种硬件显卡,各种操作系统有自己的兴趣。