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

软件开发工程师知识

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的技术书,玩弄我舒适范围之外的技术(例如ARKitSpriteKit) ,并不断关注新事物。 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

软件开发工程师知识

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值