5g对嵌入式软件工程师_作为软件工程师在5年中学到的经验教训

2023-10-08 14:20

本文主要是介绍5g对嵌入式软件工程师_作为软件工程师在5年中学到的经验教训,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

5g对嵌入式软件工程师

It took time to build the desk setup visible in the picture above. Quite similar to how I have developed as a software engineer in the last 5 years. It took patience and hard work to grow and work with various organizations. I have been part of a wide spectrum of projects and technologies along the way and have recently completed 5 years.

这需要时间来建立台安装在上面的图片中可见。 与过去五年我作为软件工程师的发展非常相似。 与各种组织一起成长和合作需要耐心和辛勤的工作。 我参与了一系列项目和技术,最近完成了5年。

Notice that I am using the term “Software Engineer” and not “Software Developer”. According to Udacity, there is a strong separation:

请注意,我使用的是术语“ 软件工程师”,而不是“ 软件开发商” 。 根据Udacity ,有很强的分离:

“T

“ T

Abiding by the above definition, I call myself a software engineer. In essence, it does not matter so much. All of these roles have loose definitions which for some reason is quite fascinating to me. But the kind of work that I have done and continue to do resonates well with a software engineer. I thought it might be good to take a break and reflect on some of the main lessons I’ve learned in that time that continue to benefit me today.

遵守以上定义,我称自己为软件工程师。 本质上,它并不重要。 所有这些角色都有松散的定义,出于某种原因,这让我非常着迷。 但是,我已经完成并将继续做的工作与软件工程师产生了很好的共鸣。 我认为,休息一下并反思一下我当时所学的一些主要教训,这可能会继续使我今天受益,这可能是个好习惯。

您和您的工作应该可以更换 (You and your work should be replaceable)

Wait, what?

等一下

Did I just say that?

我只是这么说吗?

This might sound counter-intuitive but in reality, this is something you should always have in mind while developing software. The software industry is fast-paced and you will soon get a better opportunity that will force you to switch jobs. The person who is going to replace you will thank you if you have designed the system considering that. SOLID principles are solid for a reason. You should always try to abide by them. Also when the system grows it becomes hard to keep track of decisions. That is why It is important to share and write what you know so that the other person doesn’t have to spend a significant amount of time decrypting information from the code.

这听起来可能违反直觉,但实际上,在开发软件时,您应该始终牢记这一点。 软件行业发展Swift,您很快就会获得更好的机会,这将迫使您转换工作。 如果您考虑到这一点而设计了系统,那么将要替换您的人将感谢您。 SOLID原则之所以扎实是有原因的。 您应该始终遵守它们。 而且,随着系统的发展,很难跟踪决策。 这就是为什么共享和编写您知道的内容很重要,这样其他人就不必花费大量时间从代码解密信息了。

质疑一切,不承担任何责任 (Question everything, assume nothing)

Remember this rule of thumb, whenever in doubt, ask questions about it. It means being knowledgeable about what it really means. Few of the biggest mistakes I’ve made was due to misunderstanding. Sometimes it’s as small as missing out on one of the edge cases thinking that will never occur in real life. Other times its bigger, like expecting another team to fix a specific problem or assuming an entire system works a certain way. In these cases, there is only one mistake and that is making assumptions. Being more explicit and elaborate about problems and solutions will help you curb smaller bugs and issues from the beginning.

请记住这一经验法则,如有疑问,请提出疑问。 这意味着要了解其真正含义。 我犯的最大错误很少是由于误解。 有时,它就像错过了其中一种在现实生活中永远不会发生的极端案例一样小。 其他时候更大,例如期望另一个团队解决特定问题或假设整个系统以某种方式工作。 在这些情况下,只有一个错误,那就是假设。 对问题和解决方案进行更明确和详尽的介绍将帮助您从一开始就遏制较小的错误和问题。

不要沉迷于技术/框架,而沉迷于核心概念 (Don’t dwell into technologies/frameworks, dwell into core concepts)

Technologies and frameworks will come and go, there are so many of them in the market and it can be overwhelming. But they are all built on the core concepts. And if you understand the concepts switching between frameworks, languages and tools, will be effortless. Consider an example of Relational databases, there are so many of them, but if you understand the underlying principles, like ACID properties, indexes, transaction management, concurrency, you will not have to worry about the number of databases that are available.

技术和框架会来来去去,市场上有太多的技术和框架,它们可能会让人不知所措。 但是它们全都基于核心概念。 并且,如果您了解在框架,语言和工具之间进行切换的概念,那将很轻松。 考虑一个关系数据库的例子,其中有很多,但是如果您了解诸如ACID属性,索引,事务管理,并发之类的基本原理,则不必担心可用数据库的数量。

你周围的人很重要 (People around you matter a lot)

For a full-time job, you spend at least eight hours a day working, five days a week. That is a significant amount of your life. That means the people you work with have an incredible amount of influence over you and your overall happiness. The best teams I’ve worked with are the teams who I genuinely enjoy spending time with regardless of what we were working on. This means that I care a lot about who is getting hired to work in the team, who would eventually become my team-mate.

对于全职工作,您每天至少要花八个小时,一周要花五天。 那是你一生的重要时间。 这意味着与您一起工作的人会对您和您的整体幸福感产生不可思议的影响。 与我们合作过的最好的团队是我真正喜欢与他们共处的团队,无论我们在做什么。 这意味着我非常在乎谁被雇用来团队工作,谁最终会成为我的队友。

“Work with people where you feel a bit insecure” — Sundar Pichai, CEO of Alphabet and Google

“与您感到有些不安全感的人一起工作” – Alphabet和Google首席执行官Sundar Pichai

When we’re open to learning from others, we benefit from their experience as well as our own and we can inherit their wisdom and knowledge. The people we surround ourselves with are the biggest influence on our behaviour, attitudes, and results. When we stay with someone for a while, we tend to inherit their habits. Sometimes deliberately and sometimes automatically. And that is why it is very important to take that into consideration when switching jobs. Not just title and salary.

当我们愿意向他人学习时,我们将从他们的经验以及我们自己的经验中受益,我们可以继承他们的智慧和知识。 我们周围的人对我们的行为,态度和结果影响最大。 当我们与某人呆一段时间时,我们倾向于继承他们的习惯。 有时是故意的,有时是自动的。 这就是为什么在切换工作时将其考虑在内非常重要的原因。 不只是头衔和薪水。

成为问题解决者,而不仅仅是程序员 (Be a problem solver, not just a programmer)

Growing as a software engineer requires you to understand that programming is just a tool. Recognize that your ability to write code is a tool in your toolbox as a problem solver. Because you are a problem solver first. Learn to recognize the most important problems in front of you, and be ready to apply different perspectives to solve the problem. Do not only apply the programmer’s perspective. You have to learn to take a holistic view of the system in front of you!

随着软件工程师的成长,您需要了解编程只是一种工具。 认识到您编写代码的能力是工具箱中的工具,可以解决问题。 因为您首先是问题解决者。 学习认识到面前最重要的问题,并准备运用不同的观点来解决问题。 不仅要应用程序员的观点。 您必须学会在您面前全面了解系统!

Referring to the definition of “Software Engineer” described in the beginning, you have to take a lot of things into consideration so that your user/client can benefit from the application/solution that you are providing.

参考开头所述的“软件工程师”的定义,您必须考虑很多因素,以便您的用户/客户端可以从所提供的应用程序/解决方案中受益。

按自己的节奏工作 (Work at your own pace)

Jeff Bezos’ view on work-life balance:

杰夫·贝佐斯(Jeff Bezos)关于工作与生活平衡的观点:

“If I am happy at home, I come into the office with tremendous energy. And if I am happy at work, I come home with tremendous energy.”

“如果我在家很开心,我会充满力量地走进办公室。 而且,如果我在工作中感到高兴,我就会充满力量。”

Don’t bite off more than you can chew. Everybody is different and is motivated for different things in life. You have to figure out your motivation. Do not follow what others are doing around you. Find your balance in life and work towards achieving that. It is important if you want to stay here for long. You have to consider this as a marathon. Run at your pace, take breaks and enjoy the journey.

咬不超过你可以咀嚼的东西。 每个人都是不同的,并且对生活中的不同事物有动力。 您必须弄清楚自己的动机。 不要跟着别人在你身边做什么。 在生活中找到平衡,并努力实现这一目标。 如果您想在这里呆很长时间很重要。 您必须将其视为马拉松比赛。 以您的步调奔跑,休息一下,享受旅途。

避免破坏性的心态 (Avoid destructive mindsets)

There are plenty of things that can stifle you on your path to becoming a good software engineer, and often they are states of mind that can be difficult to recognize because they are internal and part of you. And there’s one thing I learned since I started programming, it’s that all unsuccessful developers typically share similar traits. Sometimes knowing what to avoid is more important than knowing what to do. For example, saying yes to everything.

有很多事情会扼杀您成为一名优秀的软件工程师的道路,而且它们往往是一种心态,很难识别,因为它们是您的内部和一部分。 自从我开始编程以来,我学到的一件事是,所有不成功的开发人员通常都具有相似的特征。 有时知道要避免什么比知道要做什么更重要。 例如,对所有内容说“是”。

I have elaborated on those traits in another one of my blog posts.

我在另一篇博客文章中详细介绍了这些特征。

未经测试的代码是您的最大敌人 (Code without test is your biggest enemy)

Writing tests is very important and better yet, learning to write tests before code is a cherry on top of that. A lot of programmers find the idea of writing tests before writing code absurd. They think that it is not useful and slows down the development process. In a sense, that is correct and it does impact the speed of development. But the speed of development would hardly matter if your system is not resilient.

编写测试非常重要而且更好,在代码编写之前学习编写测试是最重要的。 许多程序员发现在编写荒谬的代码之前先编写测试的想法。 他们认为它没有用,并且会拖慢开发过程。 从某种意义上说,这是正确的,并且确实影响了开发速度。 但是,如果您的系统不具有弹性,则开发速度几乎没有关系。

An engineer’s job is to deliver code that is not only functional but readable and maintainable. And Test-driven development helps you do that.

工程师的工作是提供不仅功能正常而且可读可维护的代码。 测试驱动的开发可以帮助您做到这一点。

According to Martin Fowler, TDD is:

根据Martin Fowler的说法,TDD为:

  • Writing a test for the next bit of functionality you want to add.

    为您要添加的下一个功能编写测试。
  • Writing the functional code until the test passes.

    编写功能代码,直到测试通过。
  • Refactoring both new and old code to make it well structured.

    重构新旧代码以使其结构良好。

One of the most important aspects of TDD is that it shifts the focus to WHAT of a problem from HOW. And that is a mindset that will help you grow as a software engineer. Consider reading this if you are looking for an example implementation of TDD.

TDD最重要的方面之一是,它将问题的焦点从HOW转移到WHAT。 这是一种心态,可以帮助您成长为软件工程师。 如果您正在寻找TDD的示例实现,请考虑阅读此内容 。

成为收藏家 (Become a collector)

Well, this is going out of context, but hear me out. I mean collecting the resources that you stumble upon. Blog posts, videos, talks, and everything in between, save them and organise them in a way that can be used at a later point in time.

好吧,这是脱离上下文的,但是请听我说。 我的意思是收集您偶然发现的资源。 博客文章,视频,对话以及介于两者之间的所有内容,都可以保存并组织起来,以便以后使用。

Image for post
Screenshot from author
作者的屏幕截图

The above image is just an example. You can find better ways of managing it. You will definitely solve a problem multiple times, or implement the same solution multiple times, instead of looking around the internet on how you solved it in the first place, this will come in very handy. I have written more about this in one of my blogs.

上面的图像只是一个例子。 您可以找到更好的管理方式。 您肯定会多次解决一个问题,或者多次实施相同的解决方案,而不是一开始就在互联网上四处寻找解决问题的方法,这将非常方便。 我在我的一个博客中写了更多有关此的内容。

深入挖掘,细节决定成败 (Dig deeper, the devil is in the details)

Recently I was working with Hibernate and Kotlin. I bumped into a problem where it was not possible to use data classes to create entities. I struggled for sometime before actually finding a nice article that explains the problem and the possible solution. And instead of jumping quickly to the solution and implementing it to my problem, I started digging deeper. I observed that there are a lot of libraries that have similar problems because of the compatibility issues with Kotlin. Next time when I see something like that I can quickly go through that article to refresh my memory and be done with the solution.

最近,我正在与Hibernate和Kotlin一起工作。 我遇到了一个问题,即无法使用数据类创建实体。 经过一段时间的努力,我才真正找到一篇不错的文章来解释问题和可能的解决方案。 我没有快速跳到解决方案并将其实施到我的问题上,而是开始深入研究。 我观察到很多库由于与Kotlin的兼容性问题而存在类似问题。 下次当我看到类似的内容时,我可以快速浏览该文章以刷新我的记忆,并完成解决方案。

Try to dedicate your time towards understanding the internal working of different libraries and frameworks that you use. This will help you relate different frameworks, and understand why one is better than the other. You will start forming opinions on which one to use in a given situation. And when you see some new framework, you will be able to learn it quicker. The pace at which the industry is evolving this habit will help you stay relevant for years to come.

尝试花费时间来理解所使用的不同库和框架的内部工作。 这将帮助您关联不同的框架,并理解为什么一个框架比另一个框架更好。 您将开始就在给定情况下使用哪种意见形成意见。 而且,当您看到一些新框架时,您将能够更快地学习它。 行业逐渐养成这种习惯的速度将帮助您在未来几年保持相关性。

最后的想法 (Final Thoughts)

Being a good software engineer is hard, and it takes time to understand why. I have shared insights from my experience. There is no perfect recipe for success and you have to keep evaluating different options and ways to achieve it. But one thing to keep in mind is that you have to be very critical about yourself. Ask for feedback from people around you and change what is not working. You have to continuously redefine yourself.

成为一名优秀的软件工程师很困难,而且花时间了解原因。 我分享了我的经验。 没有完美的成功秘诀,您必须不断评估获得成功的不同选择和方法。 但是要记住的一件事是,您必须对自己非常挑剔。 征求周围人的反馈,并改变不起作用的地方。 您必须不断重新定义自己。

You can find me on LinkedIn and Twitter.

您可以在LinkedIn和Twitter上找到我。

Image for post

其他有趣的文章 (Other Interesting Articles)

翻译自: https://levelup.gitconnected.com/lessons-ive-learned-in-5-years-as-a-software-engineer-ee483f12d83a

5g对嵌入式软件工程师


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

相关文章:

  • Linux-day6 存储结构与磁盘划分
  • echo 连接 命令_如何修复无法连接到WiFi的Echo或Google Home
  • Linux就该这么学——Day6
  • Day14 磁盘管理
  • 5g 软件软件开发_在5天内建立一个软件开发人员投资组合网站
  • Python 基础Day01
  • Step03day16学习笔记
  • day06-常用开发模块2
  • ARCGIS:将带有经纬度坐标的Excel文件转为shp文件,并将WGS84经纬度坐标转换成高斯3度带投影坐标
  • python根据经纬度转换详细地址_干货|利用Python将地址转换为经纬度坐标
  • 怎么把程序内部坐标转为屏幕坐标_(转)经纬度坐标转换为屏幕坐标
  • 百度地图 echarts tooltip属性 经纬度坐标不显示
  • 利用ArcGIS将经纬度数据转化成平面坐标数据
  • 经纬度坐标的shape面层计算面积的详细步骤
  • Javaweb之xml详解
  • 超级详细!!!SpringCloud完整知识点整理上篇 (涵盖知识点:Eureka、Zookeeper、Consul、Ribbon、Openfeign、Hystrix)
  • 回撤率 python_python 计算收益回撤比
  • 解决Hibernate连接postgresql数据库慢的问题
  • PLSQL操作Oracle创建用户和表(转)
  • hadoop hdfs设置quota
  • K8S资源配额概念和操作详解
  • 超算Disk quota exceed
  • kafka源码分析--- quota管理
  • 使用Python将PSD文件转换为JPG格式
  • 将PSD文件转换为JPG格式
  • 2020-人和事-11月-写作课
  • R数据分析入门记录
  • 在Python中执行ANCOVA
  • python基于pingouin包进行统计分析:使用ancova函数执行协方差分析、covar参数设置多个协方差变量、以dataframe的形式输出分析结果(包含SS、自由度、F值、p值、np2等)
  • druid设置支持emoji的简单实现
  • 这篇关于5g对嵌入式软件工程师_作为软件工程师在5年中学到的经验教训的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



    http://www.chinasem.cn/article/165871

    相关文章

    软件设计师备考——计算机系统

    学习内容源自「软件设计师」 上午题 #1 计算机系统_哔哩哔哩_bilibili 目录 1.1.1 计算机系统硬件基本组成 1.1.2 中央处理单元 1.CPU 的功能 1)运算器 2)控制器 RISC && CISC 流水线控制 存储器  Cache 中断 输入输出IO控制方式 程序查询方式 中断驱动方式 直接存储器方式(DMA)  ​编辑 总线 ​编辑

    【STM32】SPI通信-软件与硬件读写SPI

    SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

    免费也能高质量!2024年免费录屏软件深度对比评测

    我公司因为客户覆盖面广的原因经常会开远程会议,有时候说的内容比较广需要引用多份的数据,我记录起来有一定难度,所以一般都用录屏工具来记录会议内容。这次我们来一起探索有什么免费录屏工具可以提高我们的工作效率吧。 1.福晰录屏大师 链接直达:https://www.foxitsoftware.cn/REC/  录屏软件录屏功能就是本职,这款录屏工具在录屏模式上提供了多种选项,可以选择屏幕录制、窗口

    HomeBank:开源免费的个人财务管理软件

    在个人财务管理领域,找到一个既免费又开源的解决方案并非易事。HomeBank 正是这样一个项目,它不仅提供了强大的功能,还拥有一个活跃的社区,不断推动其发展和完善。 开源免费:HomeBank 是一个完全开源的项目,用户可以自由地使用、修改和分发。用户友好的界面:提供直观的图形用户界面,使得非技术用户也能轻松上手。数据导入支持:支持从 Quicken、Microsoft Money

    PDF 软件如何帮助您编辑、转换和保护文件。

    如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

    计算机视觉工程师所需的基本技能

    一、编程技能 熟练掌握编程语言 Python:在计算机视觉领域广泛应用,有丰富的库如 OpenCV、TensorFlow、PyTorch 等,方便进行算法实现和模型开发。 C++:运行效率高,适用于对性能要求严格的计算机视觉应用。 数据结构与算法 掌握常见的数据结构(如数组、链表、栈、队列、树、图等)和算法(如排序、搜索、动态规划等),能够优化代码性能,提高算法效率。 二、数学基础

    梳理2024年,螺丝钉们爱用的3款剪辑软件

    这年头,视频到处都是,就跟天上的星星一样数不清。不管你是公司里的新面孔,还是职场上的老狐狸,学会怎么剪视频,就好比找到了赢的秘诀。不管是给上司汇报工作,展示你的产品,还是自己搞点小视频记录生活,只要是剪辑得漂亮,肯定能一下子吸引大家的目光,让人记得你。咱们今天就来侃侃现在超火的三款视频剪辑工具,尤其是PR剪辑,你肯定听说过,这货在剪辑界可是大名鼎鼎,用它剪视频,既专业又麻利。 NO1. 福昕轻松

    秒变高手:玩转CentOS 7软件更换的方法大全

    在 CentOS 7 中更换软件源可以通过以下步骤完成。更换源可以加快软件包的下载速度,特别是当默认源速度较慢时。以下是详细步骤: 前言 为了帮助您解决在使用CentOS 7安装不了软件速度慢的问题,我们推出了这份由浪浪云赞助的教程——“CentOS7如何更换软件源加快下载速度”。 浪浪云,以他们卓越的弹性计算、云存储和网络服务受到广泛好评,他们的支持和帮助使得我们可以将最前沿的技术知识分

    excel翻译软件有哪些?如何高效提翻译?

    你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是老手,这一技巧都将是你的得力助手,让你在信息的海洋中畅游无阻。 方法一:使用同声传译王软件 同声传译王是一款专业的翻译软件,它支持多种语言翻译,可以excel

    一款支持同一个屏幕界面同时播放多个视频的视频播放软件

    GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬