软件开发工程师知识

This article is my take on the chapter with the same title from the brilliant book The Pragmatic Programmer. You should absolutely give that a read if you haven’t already.

本文是本章的亮点,与光辉的《 The Pragmatic Programmer》一书中的标题相同。 如果您还没有读过,那么绝对应该读一读。

I often use programming or investing analogies when I talk about real-life stuff. Using investing analogies to talk about programming stuff is super fun for me, and hopefully, it will be fun for you too.

当我谈论现实生活时,我经常使用编程或类比投资。 使用投资类比谈论编程知识对我来说是一件非常有趣的事情,希望对您也很有趣。

1.认真的投资者定期投资-习惯 (1. Serious Investors Invest Regularly — As a Habit)

Your most important asset as a software developer is the knowledge and experience stored inside your brain. However, this is an expiring asset. With the technology landscape evolving at breakneck speed, if you don’t attend to this regularly, its value will diminish year by year.

作为软件开发人员,最重要的资产是大脑中存储的知识和经验。 但是,这是一项即将到期的资产。 随着技术的飞速发展,如果您不定期参加,其价值将逐年下降。

Unfortunately, you can’t just lay back and let your current investments earn dividends for you. You constantly have to rebalance your portfolio and, most importantly, invest more than you take out.

不幸的是,您不能随便放松,让您目前的投资为您赚取股息。 您经常需要重新平衡您的投资组合,最重要的是,投资要多于取出。

In other words, always be learning something new. The most important thing is to build a habit of lifelong learning. Here are a few goals that I am for:

换句话说,总是要学习新的东西。 最重要的是养成终身学习的习惯。 这是我要实现的一些目标:

每年至少学习一种新语言/技术 (Learn at least one new language/technology each year)

I don’t mean become an expert in a new language or technology every year, but seeing different approaches that solve similar problems is a great way to become a better developer.

我并不是说要每年成为新语言或新技术的专家,但是看到解决相似问题的不同方法是成为更好的开发人员的好方法。

The skills you pick up along the way will probably prove useful even if you don’t plan to earn a living coding in that language.

即使您不打算以这种语言来赚钱,您在学习过程中掌握的技能也可能会很有用。

Your options for learning a new language are basically limitless, including free YouTube tutorials, paid online courses, technical books, and blog posts.

您学习新语言的选择基本上是无限的,包括免费的YouTube教程,在线付费课程,技术书籍和博客文章。

I lay out my decision-making process for picking new languages to learn below.

我列出了在选择新语言以进行学习时的决策过程。

不断加深您对工作领域/编程语言的了解 (Constantly deepen your knowledge about the field/programming language that you work in)

While learning new technologies is fun, it’s also important to continuously expand your knowledge in the technology/programming language that you mainly work in.

虽然学习新技术很有趣,但继续扩展您主要从事的技术/编程语言的知识也很重要。

For me as an iOS developer, that means reading at least one technical book about iOS development/Swift every three or four months, playing around with technologies that are outside my comfort zone, like ARKit or SpriteKit, and constantly being on the watch for new iPhone features and Swift language improvements.

对于我作为iOS开发人员而言,这意味着每三,四个月至少阅读一本有关iOS开发/ Swift的技术书,玩弄我舒适范围之外的技术(例如ARKit或SpriteKit) ,并不断关注新事物。 iPhone功能和Swift语言改进。

Because it’s impossible to know everything about a certain piece of tech or language, this becomes a neverending journey towards mastery.

因为不可能了解某一种技术或语言的所有知识,所以这成为了通往掌握的永无止境的旅程。

每天至少阅读一篇技术博客文章 (Read at least one technical blog post every day)

While you need to make big plans like learning a new language or reading a huge book, you also need small wins to keep you motivated.

虽然您需要制定宏伟的计划,例如学习一门新语言或阅读一本大书,但同时也需要取得一些小小的成就才能保持动力。

I found that the best way to do this is to read at least one programming blog post on Medium every morning while I’m having breakfast. It’s a brilliant way to acquire small snippets of knowledge, deepen my understanding of Swift and iOS bit by bit, take quick peeks at different technologies, and start every day with a sense of accomplishment.

我发现最好的方法是每天早晨吃早饭时至少在Medium上阅读一篇编程博客文章。 这是获取少量知识片段,加深我对Swift和iOS的理解,快速浏览不同技术并以成就感开始每一天的绝妙方法。

2.多元化是长期成功的关键 (2. Diversification Is the Key to Long-Term Success)

The more different technologies you’re comfortable with, the better.

您可以适应的技术越多越好。

You should not limit yourself to one programming language, for example, because it might become irrelevant in the future, and then you’re left with expert knowledge that nobody wants to pay for anymore.

例如,您不应将自己局限于一种编程语言,因为它将来可能会变得无关紧要,然后您将获得专家知识,没人愿意再花钱了。

Having a well-diversified knowledge portfolio is a natural consequence of adhering to the points I laid out above.

坚持我上面提出的观点,拥有一个多元化的知识组合是很自然的结果。

However, I believe a word of caution is appropriate here. You should be careful not to over-diversify. If you’re like me, you find almost every new piece of technology or API interesting and just want to dive deep straight into them. I don’t think that this is such a good idea because you would spread yourself too thin, knowing the basics of many things but not enough to do meaningful work with any of them.

但是,我认为在此谨慎一点是适当的。 您应该注意不要过度多样化 如果您像我一样,您会发现几乎每一项新技术或API都很有趣,而只是想直接深入研究它们。 我认为这不是一个好主意,因为您会分散自己的知识,知道很多事情的基础知识,但却不足以对其中任何一个进行有意义的工作。

As with everything else in life, the best approach is to construct a great plan, in which you map the technologies that you want to learn on a timeline. After that, all you have to do is stick to the plan.

与生活中的所有其他事情一样,最好的方法是构造一个好的计划,在其中计划要在时间轴上学习的技术。 之后,您要做的就是坚持计划。

If you’re able to diversify across fields, too, that’s even better. It pays handsomely if, although you are a developer, you’re also able to design a user interface or you’re well versed in marketing.

如果您也能够跨领域进行多元化,那就更好了。 如果尽管您是开发人员,但是您也能够设计用户界面,或者您精通行销,那么这是很可观的。

3.精明的投资者在保守和高风险,高回报投资之间平衡他们的投资组合 (3. Smart Investors Balance Their Portfolios Between Conservative and High-Risk, High-Reward Investments)

I think you should strive to be an expert in a technology that pays a nice salary in the present while having a few bets on technologies that might become huge a few years or decades from now.

我认为您应该努力成为当下薪水不错的技术专家,同时押注可能会在几年或几十年后变得巨大的技术。

On the conservative side, I have iOS and full-stack web development. I currently work as an iOS developer, but I love doing web development for personal projects, businesses I want to build, or simply for pure fun.

在保守方面,我有iOS和全栈Web开发。 我目前是一名iOS开发人员,但我喜欢为个人项目,我想建立的业务或纯粹出于娱乐目的而进行Web开发。

On the aggressive (risk-wise) side, I have distributed ledger technology (not to be confused with cryptocurrencies) and smart contract development. I think these technologies are too young to say anything about them with confidence, but they definitely have a huge potential to transform society, so they might reap great rewards for the savvy knowledge investor in the future.

在积极的(风险方面)方面,我已经分发了分类帐技术(不要与加密货币混淆)和智能合约开发。 我认为这些技术还太年轻,无法自信地谈论它们,但是它们绝对具有变革社会的巨大潜力,因此它们将来可能会为精明的知识投资者带来丰厚的回报。

My rule of thumb for picking programming languages to learn is based on the intelligent balancing of risk. I try to have on my agenda a well-established, widely used, popular language or technology that currently solves a lot of important problems paired with another one that currently does not solve any real problems but has a great possibility of doing so in the future.

我选择要学习的编程语言的经验法则是基于风险的智能平衡。 我尝试在议程上提出一种已经建立并且广泛使用的流行语言或技术,该语言或技术当前可以解决许多重要问题,而另一种语言目前还不能解决任何实际问题,但是将来很有可能解决。

4.投资者尝试低买高卖以获得最大回报 (4. Investors Try to Buy Low and Sell High for Maximum Return)

This point is directly related to the previous one. You should aim to find emerging technologies and learn them before they become popular.

这一点与上一个直接相关。 您应该着眼于发现新兴技术并在它们流行之前对其进行学习。

“Learning Java when it first came out may have been risky, but it paid off handsomely for the early adopters who are now at the top of that field.”— The Pragmatic Programmer

“在Java首次问世时学习Java可能会冒险,但是对于现在处于该领域领先地位的早期采用者来说,这是一笔不菲的收获。”-实用程序员

This is by no means easy, but if you can find the programming equivalent of an undervalued stock, you could be on the path to success.

这绝非易事,但是,如果您能找到与低估股票相当的程序设计,那么您可能会走上成功之路。

This should not be an emotional decision nor a matter of personal taste. You should analyze the landscape’s present and future based on factual data.

这既不是情感决定,也不是个人品味问题。 您应该根据事实数据分析景观的现在和将来。

You also probably already know something — thanks to your interests or education outside software development, or the events of your life that shaped your worldview — that many other people don’t know or would disagree with.

由于您对软件开发的兴趣或教育,或塑造您的世界观的生活事件,您可能也已经知道了一些其他人不知道或不同意的东西。

In my opinion, these are the things that can help you find your next knowledge investment.

我认为,这些都是可以帮助您找到下一个知识投资的东西。

5.投资组合应定期进行审查和重新平衡 (5. Portfolios Should Be Reviewed and Rebalanced Periodically)

It goes without saying that — with technology changing at the speed of light — if empirical evidence indicates that your past assumptions are incorrect, you should readjust those assumptions.

不用说-随着技术的日新月异-如果经验证据表明您过去的假设是错误的,则应重新调整这些假设。

It might become obvious that some technology clearly won’t fulfill your expectations. No worries because you treated it as a high-risk investment in the first place. You still have your conservative investments to rely on. But at this point, it’s useless to spend more time on it. Just cut your losses, review and rebalance your knowledge portfolio, and move on.

显而易见,某些技术显然无法满足您的期望。 不用担心,因为您首先将其视为高风险投资。 您仍然需要保守的投资。 但是在这一点上,花更多的时间在它上面是没有用的。 只需减少损失,查看并重新平衡您的知识组合,然后继续前进即可。

If you see some of your conservative investments starting to have diminishing returns, you might want to consider creating a plan to retire them and find a successor.

如果您看到一些保守投资的收益开始递减,则可能需要考虑制定退休计划并找到继任者。

最后的想法 (Final Thoughts)

Thank you for reading this article, and I hope you got some value out of it.

感谢您阅读本文,希望您从中获得一些价值。

If you disagree with some of the guidelines I’ve mentioned or have some ideas or suggestions, I’m curious to hear your thoughts in the comments.

如果您不同意我提到的某些准则或有任何想法或建议,我很想在评论中听到您的想法。

翻译自: https://medium.com/better-programming/your-knowledge-portfolio-as-a-software-developer-6d1eb11ee221

软件开发工程师知识


http://www.taodudu.cc/news/show-6787198.html

相关文章:

  • Java基础之多线程
  • Java之多线程全解析
  • 【狂神说Java】多线程详解
  • Java多线程,原来如此简单?
  • 【狂神说】多线程笔记
  • 多线程合集
  • IQM的Q-Exa联盟被选中将德国量子计算机首次集成到HPC超级计算机
  • 牛客P19836 裴蜀定理+莫比乌斯反演+杜教筛
  • P1829 [国家集训队]Crash的数字表格 / JZPTAB(莫比乌斯反演)
  • 德国计划将量子计算与超算强强联合:IQM 入选 Q-Exa 联盟
  • 布衣联盟WIN xp精美仿V美化全透明版
  • 卡巴斯基发现网页技术中的危险漏洞
  • 【技术创新】多维度钓鱼检测技术
  • 福师计算机应用基础离线作业一答案,福师《计算机应用基础》离线作业答案
  • 综合案例播放器(java)
  • [项目篇] 音乐播放器开发报告
  • 马云进军小程序,将全面打通阿里巴巴生态链,可以和微信正面杠了!
  • 【汇正财经】按上市地点分类股票有哪些?
  • 新浪微博开放平台开发-android客户端(3)
  • 新浪微博Android客户端开发
  • Java新浪微博客户端开发第四步
  • 新浪微博客户端源码 android
  • 新浪微博客户端开发--显示单条微博
  • 新浪微博Android客户端学习记录三:完成登录界面和授权界面
  • 新浪微博客户端开发第一步
  • 开发新浪微博android客户端
  • HDR对人眼的模拟介绍
  • HDRP(SRP) 渲染一个摄像机剔除遮罩外的物体
  • 三维人脸模型的纹理贴图
  • 助力 VR/AR 等复杂图像场景极致高清,火山引擎夺得 NTIRE 大赛双料冠军

软件开发工程师知识_您作为软件开发人员的知识组合相关推荐

  1. 工信部—高级软件开发工程师认证

    工业和信息化部教育与考试中心是工业和信息化部直属事业单位,承担计算机技术与软件专业技术资格考试.通信专业技术人员职业水平考试.电子通信行业职业技能鉴定.全国信息技术人才培养工程.产业工人网络平台建设等 ...

  2. 诚聘软件过程工程师,高级软件工程师,软件开发工程师

    绵阳铁牛科技有限公司(公司网址: http://www.sbuffalo.com/index.htm)诚聘以下职位人员,欢迎有志之士加入我们团队.如果您对下列某个职位感兴趣,请将您的简历发到公司的邮箱 ...

  3. 深信服新手入门指引——软件开发工程师自我修炼

    1 软件开发工程师 一.通用知识 (1)参考书籍: <代码大全>-了解好的代码该怎么写: <TCP/IP协议详解>卷一 - 掌握计算机网络理论知识 <Unix网络编程&g ...

  4. 软件开发工程师:程序员的职业规划就像软件工程

    软件开发工程师:程序员的职业规划就像软件工程 [url]http://www.accp-teem.com.cn/ArticleView/2007-8-1/Article_View_1224.Htm[/ ...

  5. 想做C++软件开发工程师,我该如何去学习?

    想做C++软件开发工程师,我该如何去学习? 因为C++是一个兼具性能和抽象模型结合体,除了能够保证性能之外,还能用当今最流行的面向对象编程模型,而且生态系统由于这些年的积累,建设的也非常完善,所以在高 ...

  6. 2019/04/12 华为通用软件开发工程师现场面试(offer到手)

    2019/04/12 华为通用软件开发工程师现场面试(offer到手) 时间轴 三月中旬做的笔试 3题ac两道 4/8 性格测试 4/12 现场面试 地点是 广州某家酒店,近地铁站的,中大过去也是要一 ...

  7. 软件开发工程师招聘笔试题面试题223套和招聘考察内容

    技术族职业发展通道\阶梯\标准(即招聘考核内容) (1) 通道 技术族分为软件研发.美术.质量管理.设计.技术支持五个职业发展通道,每个发展通道包含下列职位(具体内容请见表4-技术族发展通道职位列表) ...

  8. 何一娜:诺基亚软件开发工程师典型的一天

    英雄会是CSDN旗下针对国内IT技术领域专家展示和交流的平台.通过线下线上的互动形式,为CSDN社区专家提供更多学习.合作.宣传的机会.英雄会后续将在北上广深等国内一二线城市建立分会,各个分会后期将组 ...

  9. 软件开发工程师 - 面试手册

    软件开发工程师 - 面试手册 岗位概述 软件开发工程师是IT行业中最常见的岗位之一,主要负责设计.开发和维护软件应用.他们需要熟悉至少一种编程语言,了解软件开发的基本流程和原理,具备良好的解决问题能力 ...

最新文章

  1. LSGO代码小组第18周复盘日志
  2. 单片机编程简单吗?arduino为什么不适合大学生?
  3. 使用PaupGUI软件合并一致性树consensus tree
  4. mina 中的IoBufer(一)
  5. pandas内置绘图_使用Pandas内置功能探索数据集
  6. SharePoint List item数量超过5000的解决办法
  7. 四叶草剧场服务器维修价格,四叶草剧场不合理报酬机制是什么-不合理报酬机制和收益详解-Appfound...
  8. 分享一个免费巨好用的shell工具
  9. 【IT项目管理】第1章 走进IT项目管理
  10. linux开机自启动方法,Linux配置开机自启动
  11. 【word】复制到word的文字不能调整行间距(行间距过大)
  12. TZOJ 3244 Happy YuYu's Birthday(数学几何)
  13. 华为未来是铺满鲜花还是荆棘遍布?
  14. mysql分组最新值_Mysql获取分组最新数据
  15. java tar.gz 格式多文件打包压缩与解压
  16. epoch mysql_PostgreSQL中epoch的用法
  17. CAPL基础篇-----CAPL中的定时器操作
  18. 无监督学习-自编码器-补充|深度学习(李宏毅)(二十)
  19. [51Nod 1326]:遥远的旅途
  20. 数字图像处理与应用——半色调技术

热门文章

  1. 发那可g10_FANUC系统宏程序配合G10指令倒角分析
  2. 《数学之美》——第十一章 个人笔记
  3. window定时计划任务-定时重启服务/软件
  4. 科学计算机一个亿怎么显示0,1亿元大写怎么写?1亿元整是八个零吗?
  5. CAM350 导出SMT坐标文件
  6. QT 学习笔记(六)
  7. Tomcat 8.5.40下载及安装(Windows版本)
  8. Javaweb的AJAX及Axios框架使用(封装AJAX)
  9. Java实现经纬度查询附近门店
  10. ElasticSearch分页查询四种解决方案与原理