04.程序员职场心得
目录介绍
- 01.程序员功力修炼
- 02.技术人商业头脑
01.程序员功力修炼
1.1 哪些是程序员基本功
技术方面:计算机技术基础知识、优秀的编码实践、系统设计、设计模式、定位问题的能力等等。
非技术方面 :对业务的理解能力、抗压能力、表达能力等等。
1.2 如何修炼基本功
不断学习,提升自己的认知。
不要单纯为了完成需求而完成需求,还要考虑代码质量比如可读性、bug数量、能否对扩展友好等等
经常总结复盘。
理论+实践并行。
1.3 提高表达能力
一直以来,很多人对程序员的主观印象就是:不爱交流、表达能力不行。
不善于沟通交流、表达能力不行的话,你面试的时候都吃亏的不行(相信你的身边也有很多技术虽然一般,但是比较会说的小伙伴找的工作比那些真正编程能力强的人都要好很多)。
做好本职工作是我们的分内之事,如果你能偶尔抽出一些时间,多和你的同事、上级或者 leader 交流问题的话,你所能得到的肯定是远远超过你所付出的那一会时间。
1.4 优秀程序员该如何思考
1.提醒自己不断学习,是刻意学习,而不是漫无目的应付学习……不要认为自己懂得最多,哪怕是做的时间长。问自己是懂了还是深入理解原理?知其然也会知其所以然吗?
2.代码仅仅可以工作不是自己止步不前的借口。代码是否可以更加简单健强?代码是否可以复用,能否提高效率?
3.好的代码需要写三遍,心态感受会不一样。第一步,让它工作起来;第二步,让它完善起来;第三步,写三遍,力求再深入知识原理!
4.将阅读代码作为一个挑战,阅读大量源代码。阅读代码理解思路而非复制粘贴代码,日常项目或者开源项目能否借鉴源码好的设计模式或者思路,理清代码整体工作原理,而非拘泥于细节而无法自拔。
5.遇到难题首先是自己尝试去解决,如果请教别人,学习别人解决问题的思路而非拘泥于解决办法。遇到难点,卡在什么地方?从哪方面着手去解决,方案对比总结?别人解决思路是什么?
6.拥有自己开源或者长期维护并且不断改进的项目。开源项目或者开源库旨在提高技能,若收到同行肯定star或者反馈,十分有助进步。尝试重构自己项目,或者看过去的代码,与今日有何区别,改进再改进。
02.技术人商业头脑
2.1 先看下背景介绍
工程师要不要具备商业头脑呢?对于这个问题,答案众说纷纭,不过可以肯定的是,有商业头脑的技术人,通常都会判断技术和业务之间的关系。
而公司的发展离不开业务,技术人拥有商业头脑更有利于自己的职业发展。
2.2 具备四个特点
在产品经理眼中,有商业头脑的技术人大致有四个特点:
理解业务。具体一点讲,明白当前业务的现状、目标和方向,清楚为什么要做以及做了以后能给业务带来的价值。
了解技术实现的细节。比如当前的业务产品在系统中是怎么实现的,有哪些能力和局限,与上下游的关系是怎样的?如何能够快速实现目前的产品需求?很多时候同一个问题可以有多种技术实现,每种实现都有自己的优缺点。优秀的技术同学能够基于对当前业务问题的理解,做出最恰当的选择。
能给到产品有效的输入。对产品设计不合理的地方提出挑战和有建设性的意见。对产品设计遗漏的地方给予补充,对稳定性、安全性,以及资损、舆情、PR 等潜在的风险给予意见和建议。
积极地沟通和推动项目落地。帮助产品一起管理好业务的预期,也能够换位思考,理解业务面临的压力,管理好项目的风险,保持信息的透明,想尽办法帮助业务实现需求。
2.3 培养商业头脑
培养商业头脑需要一个过程,以及可借鉴的培养方法。
第一,要了解业务,最快最有效的途径就是通过和你对接的产品同学。多和对方交流,认真参与每次 PRD 评审、产品规划、总结分享。并且要多提问,你会逐渐成长为领域的业务专家,至少可以和产品平等对话。商业头脑更多的是一种思维方式和习惯,多与产品讨论业务,业务思考的角度就会自然形成。
第二,培养数据意识。学会用数据来说话,首先从业务核心的 KPI 入手,牢记它。并学会问自己,项目的目标是什么?与业务 KPI 有什么关系?如何埋点、如何追踪?数据如何变化,变化背后的业务含义是什么?
第三,深入了解自己的业务领域。这包括以下几点:对自己负责的业务领域,有基本的业务框架认知;了解业务发展的前景、现状和痛点;对业务单元的主要角色有深入了解;
第四,拓展自己的知识边界。包括日常的财经新闻、评论、重要的商业事件、互联网公司的上市财报、竞争对手的动态、朋友圈动态等等。
第五,补充专业知识。要想真正成为一名业务专家,那么,基本的经济学常识、行业知识、商业分析的模型和框架等都开始变得重要。跨学科的知识往往能够帮助你拓展思维方式和思考深度,带来创新。