导航:首页 > 程序命令 > 程序员知识库

程序员知识库

发布时间:2022-02-01 15:49:37

程序员如何在小公司成长和大公司学习

摘要:这篇文章会带有普遍性,不见得适合所有人,或者文章所描述的也不见得是对的,只是根据我的经历和所见写成的一篇文章,仅供参考。前言:在软件行业工作有几个年头了,换过多个开发语言,跳过槽,也被猎头找过,经历了三五杆枪打天下和创业公司一起成长灭亡,也进入了大公司。在这些年的历练中,看见很多刚进入软件行业不久的新人总在抱怨,说学不到东西。其实不管你在大公司还是小公司,都可以学到很多东西,关键看你怎么去学习,如何学习,找到方法你就可以提高很快。如果你已经知道如何在你的工作当中学习,那么下面的文章就走马观花的看看吧,这篇文章是给还在迷茫怎么去学习和成长的新人一些指点。所有意见仅供参考,我也是根据我的所见所闻和经历来做些指导,不见得是正确的,如果大家有好的学习方法,欢迎交流。正文:先来说说几个情况:大公司A:不想干了,什么都学不到,每天都维护这一个东西,都想去小公司。小公司B:累死了,什么都做,太乱太杂,没系统不规范,要是能去大公司多好。看了这两段简短的话,我相信有一部分人会很有感触。从上面的话中,我们不难看出,大公司的员工羡慕小公司,可以学到很多东西,好多程序员还是很有钻研精神的,学习可以说是他们的一个乐趣和展示自我价值,我身边的一个同事就是典型的如果得不到成长和学习新的东西,就会不爽。小公司的员工又会抱怨太累太杂,什么都是一个人做,虽然做了好多东西,但很羡慕大公司的正规化。其实想解决这些问题不难,先调整好心态,只有一个好的心态,你才可能健康成长。在小公司成长:好多小公司都是3,4个人一个小组,工作量大,加班,杂,什么都要做,就连测试都还要亲历亲为,怎么看怎么觉得这不是人待的地方,被严重剥削的廉价劳动力。怎么说的小公司一无是处呢,其实也不是的,我们要从当中看到优势,我们才有可能进步,逆向思维下,工作量大,杂是坏事吗,在我认为,对于一个想真正成长,想将来进入大公司,或者有一番作为的人,这正是小公司的优势和有点。小公司的员工有一个普遍性,就是学历技术都很普通,无法很好的进入到大公司,也只能在小公司游走,但心里也有抱负和理想,那么我们就要好好利用小公司的工作量大和杂,在这当中锻炼自己,提高自己的技术和基本功。杂,在我认为这是一个很好的东西,就是因为人少,所以我们在小公司得什么都做,这样有个优势,就是让你可以接触到很广泛的东西,有可能连架构设计都要自己去处理,BT点的说不定图都要自己去PS,再来看看做的这些事情,如果把它拼接起来是多么大的一张蓝图啊,你要做的就是在工作不断努力去学习,花大量的时间去看书,去了解蓝图中的每一块是怎么去衔接有什么关联,当你把这都弄熟了这后,我想没有哪一家大公司是不会不要你的,应为你已经具备了超强的能力。在大公司学习:大公司都已经形成了很好的规模,人尽其责,基本上每个人只用负责一块内容,这将会导致成长很慢,学不到东西,虽然可以把一块做的很精,但有好多东西没有什么深度,如果长期维护将会导致你停止进步。那么如何去学习呢?学习还是得靠自己的努力。在大公司学习有一个好处就是,有现成的架构,有架构师来维护,有优秀的高级开发,可以写出漂亮的优秀的代码,这些人不都是很好的学习对象吗?有人会说,不可能和他们说架构来给我上上课讲讲,高级开发来教我怎么学好这段代码。其实不用去找他们,现成的东西就在你的眼前。什么?你没看见,那我告诉你,就是你的开发工具。啊,你这不是忽悠我吗。那么我问你,你的开发工具上是不是有你们公司项目的源代码?源代码就是最好的学习资料,你可以直接去看你们的源代码,看看你们的架构,了解和学习这个架构是怎么搭建,看看高级开发写的代码,你不用去走万里路就可以把这些先进和优秀的东西都装进你的知识库中。站在巨人的肩膀上去前进。总结:有这么一句老话,让我们来听听“读万卷书,不如行万里路,行万里路不如名师指路。”还有变化版“读万卷书,不如行万里路,行万里路不如跟随成功人的脚步。”其实我们在小公司就如行万里路,我们只有多做多学在可以迈出去。在大公司就我们就要跟随成功人的脚步,就是你们公司的架构师和高级开发,去了解他们。最最重要的一点:学习还是要靠自己努力,只要你努力,就会成功,就算不成功你也会成仁。

java程序写一个知识库模块需要什么字段

(1) 类名首字母应该大写。字段、方法以及对象(句柄)的首字母应小写。对于所有标识符,其中包含的所有单词都应紧靠在一起,而且大写中间单词的首字母。例如:
ThisIsAClassName
thisIsMethodOrFieldName
若在定义中出现了常数初始化字符,则大写static final基本类型标识符中的所有字母。这样便可标志出它们属于编译期的常数。
Java包(Package)属于一种特殊情况:它们全都是小写字母,即便中间的单词亦是如此。对于域名扩展名称,如com,org,net或者e等,全部都应小写(这也是Java 1.1和Java 1.2的区别之一)。
(2) 为了常规用途而创建一个类时,请采取“经典形式”,并包含对下述元素的定义:
equals()
hashCode()
toString()
clone()(implement Cloneable)
implement Serializable
(3) 对于自己创建的每一个类,都考虑置入一个main(),其中包含了用于测试那个类的代码。为使用一个项目中的类,我们没必要删除测试代码。若进行了任何形式的改动,可方便地返回测试。这些代码也可作为如何使用类的一个示例使用。
(4) 应将方法设计成简要的、功能性单元,用它描述和实现一个不连续的类接口部分。理想情况下,方法应简明扼要。若长度很大,可考虑通过某种方式将其分割成较短的几个方法。这样做也便于类内代码的重复使用(有些时候,方法必须非常大,但它们仍应只做同样的一件事情)。 (5) 设计一个类时,请设身处地为客户程序员考虑一下(类的使用方法应该是非常明确的)。然后,再设身处地为管理代码的人考虑一下(预计有可能进行哪些形式的修改,想想用什么方法可把它们变得更简单)。
(6) 使类尽可能短小精悍,而且只解决一个特定的问题。下面是对类设计的一些建议:
关键字:
■一个复杂的开关语句:考虑采用“多形”机制
■数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现
■许多成员变量在特征上有很大的差别:考虑使用几个类 。
(7) 让一切东西都尽可能地“私有”——private。可使库的某一部分“公共化”(一个方法、类或者一个字段等等),就永远不能把它拿出。若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。在多线程环境中,隐私是特别重要的一个因素——只有private字段才能在异步使用的情况下受到保护。
(8) 谨惕“巨大对象综合症”。对一些习惯于顺序编程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的程序,再把它嵌入一个或两个巨大的对象里。根据编程原理,对象表达的应该是应用程序的概念,而非应用程序本身。
(9) 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。
(10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第14章14.1.2小节的“用内部类改进代码”)。
(11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。
(12) 避免使用“魔术数字”,这些数字很难与代码很好地配合。如以后需要修改它,无疑会成为一场噩梦,因为根本不知道“100”到底是指“数组大小”还是“其他全然不同的东西”。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。
关键字:
■一个复杂的开关语句:考虑采用“多形”机制
■数量众多的方法涉及到类型差别极大的操作:考虑用几个类来分别实现
■许多成员变量在特征上有很大的差别:考虑使用几个类 。
(7) 让一切东西都尽可能地“私有”——private。可使库的某一部分“公共化”(一个方法、类或者一个字段等等),就永远不能把它拿出。若强行拿出,就可能破坏其他人现有的代码,使他们不得不重新编写和设计。若只公布自己必须公布的,就可放心大胆地改变其他任何东西。在多线程环境中,隐私是特别重要的一个因素——只有private字段才能在异步使用的情况下受到保护。
(8) 谨惕“巨大对象综合症”。对一些习惯于顺序编程思维、且初涉OOP领域的新手,往往喜欢先写一个顺序执行的程序,再把它嵌入一个或两个巨大的对象里。根据编程原理,对象表达的应该是应用程序的概念,而非应用程序本身。
(9) 若不得已进行一些不太雅观的编程,至少应该把那些代码置于一个类的内部。
(10) 任何时候只要发现类与类之间结合得非常紧密,就需要考虑是否采用内部类,从而改善编码及维护工作(参见第14章14.1.2小节的“用内部类改进代码”)。
(11) 尽可能细致地加上注释,并用javadoc注释文档语法生成自己的程序文档。
(12) 避免使用“魔术数字”,这些数字很难与代码很好地配合。如以后需要修改它,无疑会成为一场噩梦,因为根本不知道“100”到底是指“数组大小”还是“其他全然不同的东西”。所以,我们应创建一个常数,并为其使用具有说服力的描述性名称,并在整个程序中都采用常数标识符。这样可使程序更易理解以及更易维护。
(13) 涉及构建器和异常的时候,通常希望重新丢弃在构建器中捕获的任何异常——如果它造成了那个对象的创建失败。这样一来,调用者就不会以为那个对象已正确地创建,从而盲目地继续。
(14) 当客户程序员用完对象以后,若你的类要求进行任何清除工作,可考虑将清除代码置于一个良好定义的方法里,采用类似于cleanup()这样的名字,明确表明自己的用途。除此以外,可在类内放置一个boolean(布尔)标记,指出对象是否已被清除。在类的finalize()方法里,请确定对象已被清除,并已丢弃了从RuntimeException继承的一个类(如果还没有的话),从而指出一个编程错误。在采取象这样的方案之前,请确定finalize ()能够在自己的系统中工作(可能需要调用System.runFinalizersonExit(true),从而确保这一行为)。
(15) 在一个特定的作用域内,若一个对象必须清除(非由垃圾收集机制处理),请采用下述方法:初始化对象;若成功,则立即进入一个含有finally从句的try块,开始清除工作。
(16) 若在初始化过程中需要覆盖(取消)finalize(),请记住调用super.finalize()(若Object属于我们的直接超类,则无此必要)。在对finalize()进行覆盖的过程中,对super.finalize()的调用应属于最后一个行动,而不应是第一个行动,这样可确保在需要基础类组件的时候它们依然有效。
(17) 创建大小固定的对象集合时,请将它们传输至一个数组(若准备从一个方法里返回这个集合,更应如此操作)。这样一来,我们就可享受到数组在编译期进行类型检查的好处。此外,为使用它们,数组的接收者也许并不需要将对象“造型”到数组里。
(18) 尽量使用interfaces,不要使用abstract类。若已知某样东西准备成为一个基础类,那么第一个选择应是将其变成一个interface(接口)。只有在不得不使用方法定义或者成员变量的时候,才需要将其变成一个abstract(抽象)类。接口主要描述了客户希望做什么事情,而一个类则致力于(或允许)具体的实施细节。
19) 在构建器内部,只进行那些将对象设为正确状态所需的工作。尽可能地避免调用其他方法,因为那些方法可能被其他人覆盖或取消,从而在构建过程中产生不可预知的结果(参见第7章的详细说明)。
(20) 对象不应只是简单地容纳一些数据;它们的行为也应得到良好的定义。
(21) 在现成类的基础上创建新类时,请首先选择“新建”或“创作”。只有自己的设计要求必须继承时,才应考虑这方面的问题。若在本来允许新建的场合使用了继承,则整个设计会变得没有必要地复杂。
(22) 用继承及方法覆盖来表示行为间的差异,而用字段表示状态间的区别。一个非常极端的例子是通过对不同类的继承来表示颜色,这是绝对应该避免的:应直接使用一个“颜色”字段。
(23) 为避免编程时遇到麻烦,请保证在自己类路径指到的任何地方,每个名字都仅对应一个类。否则,编译器可能先找到同名的另一个类,并报告出错消息。若怀疑自己碰到了类路径问题,请试试在类路径的每一个起点,搜索一下同名的.class文件。
(24) 在Java 1.1 AWT中使用事件“适配器”时,特别容易碰到一个陷阱。若覆盖了某个适配器方法,同时拼写方法没有特别讲究,最后的结果就是新添加一个方法,而不是覆盖现成方法。然而,由于这样做是完全合法的,所以不会从编译器或运行期系统获得任何出错提示——只不过代码的工作就变得不正常了。
(25) 用合理的设计方案消除“伪功能”。也就是说,假若只需要创建类的一个对象,就不要提前限制自己使用应用程序,并加上一条“只生成其中一个”注释。请考虑将其封装成一个“独生子”的形式。若在主程序里有大量散乱的代码,用于创建自己的对象,请考虑采纳一种创造性的方案,将些代码封装起来。
(26) 警惕“分析瘫痪”。请记住,无论如何都要提前了解整个项目的状况,再去考察其中的细节。由于把握了全局,可快速认识自己未知的一些因素,防止在考察细节的时候陷入“死逻辑”中。
(27) 警惕“过早优化”。首先让它运行起来,再考虑变得更快——但只有在自己必须这样做、而且经证实在某部分代码中的确存在一个性能瓶颈的时候,才应进行优化。除非用专门的工具分析瓶颈,否则很有可能是在浪费自己的时间。性能提升的隐含代价是自己的代码变得难于理解,而且难于维护。
(28) 请记住,阅读代码的时间比写代码的时间多得多。思路清晰的设计可获得易于理解的程序,但注释、细致的解释以及一些示例往往具有不可估量的价值。无论对你自己,还是对后来的人,它们都是相当重要的。如对此仍有怀疑,那么请试想自己试图从联机Java文档里找出有用信息时碰到的挫折,这样或许能将你说服。
(29) 如认为自己已进行了良好的分析、设计或者实施,那么请稍微更换一下思维角度。试试邀请一些外来人士——并不一定是专家,但可以是来自本公司其他部门的人。请他们用完全新鲜的眼光考察你的工作,看看是否能找出你一度熟视无睹的问题。采取这种方式,往往能在最适合修改的阶段找出一些关键性的问题,避免产品发行后再解决问题而造成的金钱及精力方面的损失。
(30) 良好的设计能带来最大的回报。简言之,对于一个特定的问题,通常会花较长的时间才能找到一种最恰当的解决方案。但一旦找到了正确的方法,以后的工作就轻松多了,再也不用经历数小时、数天或者数月的痛苦挣扎。我们的努力工作会带来最大的回报(甚至无可估量)。而且由于自己倾注了大量心血,最终获得一个出色的设计方案,成功的快感也是令人心动的。坚持抵制草草完工的诱惑——那样做往往得不偿失。

⑶ 作为一个女程序员,怎么样可以成功的转行

要往哪里转???

不论男女,程序员这门技术活得把技术掌玩于手

程序员需要保持一颗学习的心

学习是持续一生的过程

人生,就是一个自我完善过程。

子曰:“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而从心所欲,不逾矩。”可见孔子也不是天生的圣人,也在不停地学习、进步,从“志于学”到“从心所欲,不逾矩”,孔子一共花了55年的时间。

作为一名程序员,更需要不断丰富自己的知识库。我们所知道的东西,就像一个白色的圆圈,圈外则是黑暗的未知的世界。当圆圈越大,所接触到的黑暗部分就越多。我们只有不停地学习,才能打破更多的黑暗,找到更多光明。

⑷ msdn library和msdn 是一个概念吗或说他们有什么区别

msdn library只是MSDN的一个增值功能 就是知识库 msdn是一系列的网站 包括各种软件和序列号的提供(包括xp vista 2008等的软件和序列号)

msdn library免费得到
msdn一年要万把块买资格

⑸ 程序员今年33岁还在写代码,不想干这行该做些什么好呢

程序员今年33岁还在写代码,不想干这行该做些什么好呢?

因为我已经在IT行业超过10年,它也是四岁的年龄,并且徘徊硕士或技术周围岗位的人将被治疗或被动地面对这个问题。所以当我看到这个问题时,我有一种感觉,让我们谈谈我的个人经历。请让您的职业生涯发展到您的瓶颈?仍然真的在做目前的行业,这个位置完全没有被爱?在30岁的时候,大多数人将面临着旧的尴尬,而辞职和裹过来的朋友特别需要仔细思考。毕竟,大多数人都没有我的,一点是依靠自己的努力。最后,它是一个瓶颈,可以在自己的职业发展中寻求突破。还在这个行业,这种帖子是完全灰色的吗?我在我31岁的时候进行了调整。我有时间特别焦虑。

近年来,市场经济极为严重。如果你真的想转动,转移你的帖子,你必须学习并了解你想要参与的行业,做你的知识库,而不是这个方面的朋友,学习别人的经历,否则可能是非常的难以出去甚至褪色。

⑹ 程序员为了不被淘汰需要不停的学习

随着社会的发展,科技的进步,我们也要紧追世界潮流,不断更新自己的知识宝库,这样才不会被社会所淘汰,即使你不学习别人也在学习,适者生存不适者被淘汰,就是可以很好的表达,也就是你这个问题的答案,望你采纳。

⑺ 程序员该如何建立自己的知识库

对于一个程序员,工作时间长了,一定有很多已经成型的代码,而且一般的程序员,把这些效果的代码,记下笔记或者存入一个文档里,比如说相同的效果下只需要改一些图片,就可以把那些代码拿出来修改一下就可以了,非常的方便,建议存入一个文档,或者一个电脑桌面的笔记本里,这样方便使用,如果单纯的拿笔记下来的话,以后也是要一个一个敲的,非常的麻烦。

⑻ 如何组建测试组的共享知识库

第一步:招募测试人员第2页:第五步:团队成员能力的逐步提高 俗话说“工欲善其事,必先利其器”,要做好测试工作,首先需要建立并维护一个高效的测试团队。然而,许多小型软件企业却将测试作为产品面临发布时的一个小“插曲”,往往临时抽调几名程序员对产品的功能粗略测试一下即交付客户(甚至在进度和成本不足时首先砍掉这一块)。这种仓促完成的产品通常质量问题很多,所以我们首先应抛弃小企业惯常的思维模式,不计较一时一地之利益,立足长远,着手组建高效测试团队。 第一步:招募测试人员 在国内的软件企业中有一种普遍做法,那就是把那些刚涉足软件行业的技术新手或业绩不突出的开发人员安排去做测试工作。笔者认为这绝对是一种欠妥当的行为。事实上,对一个系统进行有效测试所需要的技能绝对不比进行软件开发所需要的技能少,测试从业者甚至可能面对许多开发人员都不会遇到的技术难题。那么,测试团队需要招募什么样的成员呢?这里,笔者总结了以下两点: 首先,测试人员要具备良好的沟通能力、自信心、外交能力、迁移能力以及怀疑精神。 其次,测试组成员应具备良好的专业技能或者技术学习能力。 当然,新招募的测试人员不可能像上面说的那么理想。关键是他们是否热爱测试这项工作,对相关的工作内容是否感兴趣以及他们的学习能力如何。 第二步:测试团队制度建设 良好的制度可以规范测试团队的工作开展,同时也便于对团队成员进行业绩考评。相反,则很有可能导致人心涣散,滋长负面风气。建设良好的测试团队制度,可以考虑以下几个方面: · 汇报制度 团队成员汇报本周工作情况及下周工作计划、遇到的问题以及需要提供的帮助,培养团队成员的汇报及计划习惯。 · 工作总结制度 成员每个阶段汇报上阶段工作经验和教训,并在部门例会上交流、分享经验及教训,避免同样的问题重复出现。 · 奖惩制度 对于贡献突出的成员予以奖励,对于业绩差的提出批评,有效地保持测试团队的工作热情。 · 测试件审核制度 对测试件进行审核,去粗存精,鼓励测试人员使用和提出改进,保证提交到测试团队知识库的测试件的质量。 · 会议制度 定期召开部门例会,讨论、解决工作中的问题,并提供部门内的学习平台。 目前,已有不少软件企业推行给测试人员区分级别的制度,奖优罚劣。这无疑是一个好的做法,但成员业绩的具体考评办法,目前尚无可供参考的标准文件,所以笔者建议应尽量做到公正客观,以免挫伤团队成员的工作积极性。 第三步:测试团队内部的职责分工 明确测试团队内部各类测试人员的职责分工可以使测试团队内部各类测试人员能集中精力在较短的时间内完成特定岗位必需的知识储备和经验积累,同时也使得测试团队的管理更科学,真正做到“用其所长,避其所短”。 第四步:测试流程建设 我们可以通过以下步骤来建立适合本单位的测试流程: 1. 测试团队负责人员根据对公司现有测试状况的了解,及个人的测试经验,起草测试流程及相关的模板; 2. 通过一到两个项目的实践,记录测试流程草稿中的问题及不足之处; 3. 根据实施经验,完善测试流程,得到测试流程初稿,并起草相关实施指南; 4. 选择一个到多个项目,实践上述测试流程初稿及实施指南,记录实践过程中出现的问题; 5. 根据上述实践工作的反馈。

⑼ 大龄程序员的出路在哪里

大龄程序员想要转型还是挺难的,因为毕竟年纪摆在这里了。再重新去到新的行业很难再,适应和让别人接受,所以我觉得你还是熬夜熬吧,熬到差不多了,你可以提前退休,然后自己做一点小本生意。但你如果说重新换一份职业,这样的几率是不怎么大的,就算你换到了别的公司,做的还是同样的工作。


但做这些还是有一定的风险的,如果你害怕有风险,那么我觉得你还是在里面待到退休吧,40岁了离退休也差不多了。

⑽ 程序员怎么去提升自己能力

二:信息采集器和笔记本

首先你要给自己设定一个目标,就如同一个公司会设定它的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年对今后的发展尤其重要,希望此文能对年轻的程序员们有所帮助。欢迎评论?

如果想私信我的朋友可以加群,大家一起学习,一起学术分享,资料共享

阅读全文

与程序员知识库相关的资料

热点内容
android天气app 浏览:797
程序员有多忙 浏览:561
pdf转线稿 浏览:446
linux压缩打包目录 浏览:892
刷卡机加密错误什么原因 浏览:780
手机桌面不显示软件如何卸载app 浏览:488
编译原理教程习题分析 浏览:375
国际版mc为什么会显示无法与服务器连接 浏览:869
怎么将文件压缩并改名 浏览:586
电脑如何创建服务器地址 浏览:444
jarlinux解压命令 浏览:571
安徽比鸡麻将源码 浏览:63
python公司自动办公 浏览:667
如何出租mc服务器 浏览:612
微商授权查询系统源码 浏览:980
安卓什么情况没法建立新工程 浏览:219
气球解压社区活动 浏览:924
话费会员充值源码 浏览:319
邮件接收服务器叫什么 浏览:529
代理服务器被限制怎么办 浏览:234