回顾我的职业生涯(不,我还没那么老,不过入行确实不少年了),确实有几次人生拐点帮我更具职场智慧,并鞭策我,使我总体来说适合成为软件工程师或程序员,成为那种要么热衷于提高自己的技艺,要么对混入管理层有兴趣,要么只是简单的期望扩大自己的知识面的人。我意识到,鉴于每个人目前的工作情况,有些建议可能并不适合于每一个人,尤其是假如你工作在一家对“谁可以和客户谈话”这种事都作出严格定义的公司的话。所以如果你现在做不到全部这些,也不必烦恼。也要注意,有时,你需要的只是开口去问!
|
贡献到一个可行的开源项目除非你与世隔绝,否则一定听过开源项目,也许你已经在Github或SourceForge上有一些小型的开源项目了。所有这些都是好的,但是我所说的“viable open source” 是指应当尝试在一个项目中做出重大意义的贡献,你的代码必须是通过审批的流程,如果被接受,将会在很多系统的系统中被应用到。你能从共享开源项目中学到的东西非常多。就我个人而言,它意味着:写更好的代码,更高效的沟通,有利的条件获得更多的工作机会,更高的报酬,更多的赞誉,更多了解其他观点和让自己有更厚的脸皮。最后一点,是说,你的代码在某些情况下会受到详细检查和批评。开源项目只是一个软件,并不是你一个人的(假设你即使遇到了一个很好的项目,请尽力将自己和项目区分开)。所以把接受批评当作是一个学习的机会,并将事情做得更好而不是令自己生气。不过这不容易做到,我自己有时也会与这种事情斗争,但是我知道如果不去想这些代码去谁写的,这些代码(和我)都能越来越好,而这才是最重要的。 参与开源项目者还有一个额外的优势,从雇主的角度看,我会更容易雇佣一些在能在生产环境上找到他们提交代码记录的人。对于技能差不多的候选人,任何时候,我都会他们当中选择开源项目贡献者。
|
销售你的软件是的,我从字面上的意思是你应该去做电话销售,如果可能的话。换句话说,我认为你应该将自己放到极客的位置,时时的为他人用英语解释明白你在做什么,而不仅仅是你的同伴。如果你都不能解释清楚你做的是什么,其他人怎么能去购买它呐? 做前期销售对我来说是一个非常宝贵的事,因为需要一个真实的、存在的、活生生的客户站在面前,可以为他们解释为什么他们应该购买我的软件。在开始的几次,我做到了,我非常紧张(毫无疑问的事实就是我的工作起步阶段,我们也在尝试做得更好),但是我通过了, 得到了一些锻炼,得到了一些提升。 卖你写的软件会给你真正的观点你正在构建什么和为什么构建, 它还能让你接触到大量的使用案例和真实反馈,什么是好,什么是坏。它也将磨练你,同事也会带给你信心。你还可以得到更多的使用你写的软件而改善他们生活的人的尊重,另外,当代码不正确时你也会是第一个感受痛苦的人,这也会使你希望自己写出更好的测试代码。最后,从长远来说,它帮你看得更远。 |
支持你的软件销售你的软件之后的另一件事就是支持它。找到一种你能工作在第一线的支持方式,或者至少参与到支持工作中,来使自己能够真切的体验到人们使用你的软件的各种方式:好的、不好的、甚至丑陋的方式。错误报告和升级是一方面,直接从客户听取意见则是另一回事。除了需要社交技巧,你也需要能够迅速的进入用户的使用场景,了解他们看待你的代码的方式,这将进一步告诉你哪些你做的很好,哪些你还需要改进。这也意味着要知道哪些该说哪些不该说,因为这是你和付费客户打交道时要把握的分寸。伴随着销售,也会带给你一个新的欣喜,即之前开发阶段的辛勤工作没有白费,它很好的支撑着软件支持阶段的工作。
|
写/培训与你软件相关的内容如果你还没有弄明白我的意思,我将会解释清楚一点:我十分重视那些不单单能写代码并且在公司内部和向公司外部人员解释那些代码是什么和为什么这样写的工程师。通过撰写和培训软件相关的内容,你必须简明、清晰地解释复杂的技术细节。也需要经常强调那些从用户的角度看是不对的地方。我说不出多少次在写文章和培训的过程中发现功能或特性不是十分正确,从而回去修改代码。这种情况在API设计的过程中更加经常发生。 写作也可以增加你的曝光并带给你更广的观众群体,从而得到反馈并令你的作品更上一层楼。有很多,很多的机会可以去为网站或出版社撰写技术的文章。学着去推销你的想法(看,你又在销售了!)并坚持下去,下一步你就会发现你将会成为一名合格的作者并有可能从中获得回报。
|
结交一些新朋友也许对我来说,在学习和机遇两个方面最大的一种变革力量,就是我对扩展自己人际网络的明确努力 。当然这并不容易,而且这肯定涉及要“使你自己身心投入其中”,但回报经常是极为显著的,而且以事后所见,其中的风险非常小。 如果在你直接接触范围之外没有太多的人际网络,我给你一些建议。首先最重要的,人际网络的关键是你必须真诚的与新朋友会面,而且你必须除了这个新的关系之外别无所求。其次,许下承诺去维持这样的努力数月乃至更久。当你获得更多的自信并从任何失误中获得经验之后,这将变得越来越容易。第三,做你自己,但要注重倾听他人。第四,这也是我最弱的方面,获知并记忆名字。我很少忘记一张脸,但如果我不努力去学习别人的名字,这些名字就会在我脑中溜走,所以记住别人的名字,让别人知道你看重他们。 除了这些技巧,还有许多关于这个主题的好书。我最喜欢的有一本“爱是杀手锏”。就我看来,这是一个做作的标题,但书中的建议都是干货,而且作者很好的将它呈现了出来。在每天结束时,让你自己沉浸其中,从你获得的实际反馈中学习。如果你发现自己被太多次拒绝,问问一位信任的朋友,让他给你在何处改进的真实意见。如果有困惑,找别的朋友讨论。 |
红利: 找到导师有可能你已经知道一些令你尊敬的人物,他们拥有解决复杂问题和高效沟通的能力。如果他们愿意与你分享他们的经验,并给你改进方法的反馈,那么自然有了胜算。从他们的经验和教训中学习,对他们的建议保持开放的态度。虽然它不会总是正确,但你至少应该考虑一下他们说的是什么,之后再做出决定。就我个人来说,我很幸运拥有一个朋友,他也是一个高管教练(我们意外的相遇,证明了使自己投入某事的价值)和一间企业所有者。在好多年里,我也遇到许多好老板和好同事,他们充当了我的人生导师,我对他们感激不尽。在开始以前,问问自己最敬佩谁,然后去和他们讨论你的想法。如果你找不到可以胜任此角色的朋友,甚至可以考虑雇佣一位教练。 |
完结请记住,所有这些事情是你可以在这里和那里周期性的做。 他们通常并不需要很大的时间或货币的承诺,但他们确实需要你走出你的安乐窝。 最后,我很高兴听到一些程序员/工程师做这些事之后,确实改善了他们的职业/生活。你工作是什么?哪些工作没有起到作用?
来源:http://www.oschina.net/translate/5-things-every-software-engineer-should-try?from=20130630
|
相关推荐
正如“一分耕耘,一分收获”,每个成功的背后都是辛勤的努力和时间的积累。 其次,明确个人的发展方向至关重要。无论是专注于技术提升,期望成为技术专家,还是走向管理岗位,成为一名职业经理人,或者选择在某个...
每个设计模式都包含了以下几个关键部分: 1. **模式名称**:通常由一两个词组成,简洁明了地概括了模式的核心内容。模式名称不仅是识别模式的关键,同时也是沟通的基础。 2. **问题描述**:明确指出模式所针对的...
就像软件工程师以“模块化”方式编写软件一样,每个功能都扮演着明确定义的角色,这种想法就是使这些小插曲使学习成为“模块化”。 如果您不喜欢某个小插图介绍此概念的方式,则可以编写另一种插图,而只需替换那一...
在这样的定义下,文章主张今天每个人都有机会成为创业者,因为现代技术的进步使得过去昂贵且遥不可及的工具变得容易获取,创业的门槛大大降低。Rails之父DHH(David Heinemeier Hansson)的观点也被引用,认为如今的...
在实践中,细心负责的态度被强调为做好任何事情的基本条件,特别是在计算机行业中,每一个细节都可能影响到整个系统的稳定运行。报告鼓励学生要有基本的专业素养,不仅要有扎实的理论基础,还需要具备实际操作和解决...
随着面试季的临近,我做了每个软件工程师都会做的准备面试的事情——. 我喜欢在那里解决问题。 我花时间尝试每种方法,确保我的语法正确,用尽可能多的测试用例试运行算法,然后享受。 然后有一天,我参加了一次模拟...
每个“设施”下的错误信息又根据其严重程度从0到7进行了排序(0表示最高严重级别,7表示最低)。这样的组织方式使得用户能够更快地找到所需的信息,并采取适当的行动来解决问题。 #### 四、错误信息示例解析 以...
3. **整体比例:** 在社会层面,虽然家庭的生育决策不同,但由于每个孩子的出生概率均等,因此整个国家的男女比例也是1:1。 **答案要点:** 能够运用概率论原理进行解释,理解期望值的概念。 #### 四、全世界共有...
- **自信心与冒险精神**:缺乏自信心和冒险精神可能会限制其在项目中的主动性和创造力,这对软件工程师来说是一大挑战。 ### 二、自我调整策略 - **增强交际能力**:积极参与各类社交活动和社会实践,如加入社团或...
Code的配置管理工具,而每一家公司至少也都会使用一至多个云平台,并且当一个云平台下的帐号不只一个,帐号管理数量一多,常常会发生一些奇葩的事情,项是帐号密码被某个工程师修改了,但是却没有让到团队成员知道,...
笔者根据研究Android代码的心得,在本书中尝试性地采用了精简流程、逐个击破的方法进 行讲解,希望这样做能帮助读者更快、更准确地把握各模块的工作流程及其本质。本书大部分章节中都专门撰写了“拓展思路”的内容...
- **PGA(Program Global Area)**:每个Oracle进程(包括后台进程)专用的内存区域,用于存储进程数据和控制信息。 #### 四、资源利用技巧 在学习过程中合理利用资源能够帮助更快掌握Oracle的核心技术和最佳实践。 ...
- 确保每个人都清楚自己的角色。 - 减少因职责不清导致的冲突。 - **改进流程:** - 识别瓶颈环节提出改进建议。 - 实施敏捷开发提高灵活性。 #### 四、高级 **1. 技术评判** - **如何权衡开发质量与开发时间...