大公司的工程师是怎么废掉的...
大家好,我是砖一。
此文作者以嵌入式工程师为基本视角,细说了从初阶到高阶工程师的资质需求,并提示工程师职业道路上的陷阱。可供参考。
一,基础知识
一个嵌入式工程师,很多都是从51单片机或者STM32单片机开始,对于单片机的开发环境,开发流程,基础外设都了解,做过一些实际的案例,比如点流水灯之类的。那么对于基本的中断的概念,寄存器的概念,看门狗,AD等基本原理能大概的讲出来。掌握硬件设计方法,能设计原理图PCB,至少两层板。
能画出三极管及MOS管作为开关管的实际应用电路,对电源芯片的设计有基本的了解。能利用网络进行信息检索,能在理解别人图纸的基础上进行copy。
这是一个本科嵌入式毕业生应该具备的水平。项目做的多的同学,可能在某些专业方向有较深的钻研,和较多的涉猎,比如对一些基本的传感器,编码器,执行机构的了解等,再比如研究生同学会使用matlab等软件进行算法仿真,控制方向的同学会用单片机调用FOC库控制PMSM电机,图像方向的同学会调用opencv进行一些图像处理等。
这个阶段如果有国际开源社区贡献经验的,那就是非常加分了。至少在英语和git使用上是基本过关了。
二,项目心态
做过完整项目的工程师都明白,在项目的推进过程中,会经历各种心态,有时候会让人崩溃,可能很多次都想放弃,但是你体会过坚持并有结果的感觉后,就明白没有干不出来的项目(其实是项目论证阶段的时候,更高阶的工程师已经做个评估了)。项目心态其实就是技术人员的死磕心态,没有搞不定的难题,没有干不出来的项目。
一般工作三年左右的工程师,应该都经历过完整项目了。很多工程师可能第一年的时候都在补大学的课,所以三年比较保险。三年工作经验的工程师可能还不具备全局视野和架构视野,但是一定要具备良好的项目心态了。
并且3年左右的工程师正是在死磕心态的支持下,可能各种论坛,各种帖子去搜索解决问题的方法,应该也要具备独立解决问题的能力了。
三,技术架构
技术架构是个什么东西,项目做的多了,接触的项目大了,会发现一个问题,所有的项目都有共通之处,所有的嵌入式设备都是换汤不换药。那么有没有积累一套稳定的基础程序库和架构就显得非常重要了。比如,串口协议编解码,log系统,滤波算法,操作系统,GUI,按键io,定时器库等。
这些东西我一向不主张重复造轮子,因为世界上聪明人实在是太多了,github搜一下,找一些适合自己的基础库进行集成改造。看看别人写的东西之后,会发现自己的技术思路有时候真的很low。
比如按键,很多人认为是一个非常简单的东西,但是一个按键,多个按键,单击,双击,三击,长按,短按等,你如果按照你的逻辑来写,90%的人会写的非常笨。
再比如,环形缓冲,以前我刚参加工作的时候,看到同事写的串口环形缓冲区程序,觉得同事真牛逼。
诸如此类就太多了,所以有时候,开阔的技术视野比你闷着头在那里发奋图强实际要有效的多。然后站在巨人的肩膀上,去发现bug,去修改,去完善,慢慢的就越来越健壮了。同时,你也会拥有更谦卑的心态。技术架构,建议探索、参考一些经典的开源硬件项目。
四,技术视野
技术视野来自于几个方面:
1. 一个是做的项目够多,接触的东西够多
2. 对技术有足够的好奇心,想了解清楚底层究竟是如何在运行
3. 勤奋(有时候来自于热情,并不需要刻意)
接触开源硬件是扩展技术视野非常好的途径,最好是参与进去,如果有兴趣的话。px4,到现在我都还没有把整个架构完全弄清楚,里面会涉及到非常多的知识,linux,gcc,cmake,docker,python解析,nuxt系统(类linux,posix接口),git,mavlink协议,各种算法及paper,仿真方法,编译下载等。但是这是一个非常有意思的过程。再回过头去玩单片机的时候,你就知道一个单片机要运转大型复杂的项目应该是什么样子的了。
五,成熟方案
成熟方案就是你在做过很多项目后,这些项目成果。都是可以稳定市场化的东西。在以上那些基础上,你做过的项目,在硬件和软件上都应该是稳定的,且是可以市场化的东西。你在不需要浪费一个开发周期就可以拿来用的东西,就是成熟方案。
比如你做过的电机驱动,你做过的打印机方案等。这时候本质上讲,你是可以开方案公司的了。至少技术上是可以的了。但是还缺点啥?
六,一通百通
这个时候,你对任何你遇到的项目,仿佛总有办法把它又快又好的干出来了,因为看到一个新案子的时候,你看问题的角度和新手是不同的了,无非是你所积累的架构的一个变种而已。要不就执行机构变一下,要不就是传感器变一下。
选型能力
上面说,你要开方案公司的话还缺点东西,其实缺的就是选型能力,不是技术上跑通了,就可以市场化的,市场化比如要同行对比,你是否体现了成本优势,技术领先优势,解决了独到问题等。成本问题就涉及到你积累的供应商资源,以及你搜索供应商资源和实际的对外沟通能力了。
笔者曾经给一款消费电子产品降本,三到六个月之后,整个行业全部都换成笔者设计的那套方案了。
七,其他能力
如果还要考察其他能力的话,那就是性格和人品了,因为降成本有时候是一个很敏感的东西,意味着你会在公司打破某种微妙平衡,你会碰到非常大的阻力,常常会让你觉得自己吃力不讨好。但凡你有一点怀疑和退缩,你就会妥协。
所以技术的上层是更复杂的一些东西了。这个时候的坚守靠的是价值观,你坚信你把更大的利益让给了消费者,你用你的技术视野和项目推进能力是创造了最终价值的。
八,当心温柔陷阱
很多人做十年,都停留在基础层级,甚至在退化,他们公司做系统集成,他每天只需要做串口协议的解析和转发工作,换一个产品,还是做这个,而一套程序成熟后又没什么大改的地方,最多就是不同的用户要不同的功能,对协议进行一些增删而已。
这种公司一般还都是大公司,慢慢的,做这个工作的工程师在某种程度上就被废掉了。同理,天天调pid,换一套系统,还在一样的。所以很多公司要求要有一个产品从零到一的过程。
在这种陷阱里似乎很舒服,但也有些危险,容易遭受年轻人的挑战,他们比你年轻、有精力,工作更拼命。工程师危机呀~
作为技术人不停地跟技术难题死磕、更新知识,或许这才是对的状态,以图长久的保持市场竞争力。
转自:最后一个bug
免责声明:本文转自网络,版权归原作者所有,如涉及作品版权问题,请及时与我们联系,谢谢!
相关文章:
大公司的工程师是怎么废掉的...
大家好,我是砖一。 此文作者以嵌入式工程师为基本视角,细说了从初阶到高阶工程师的资质需求,并提示工程师职业道路上的陷阱。可供参考。 一,基础知识 一个嵌入式工程师,很多都是从51单片机或者STM32单片机开始&…...
将yolov8权重文件转为onnx格式并在c#中使用
yolo模型转ONNX 在yolov8中,我们将训练结果的.pt权重文件转换为onnx格式只需要使用ultralytics库中的YOLO类,使用pip安装ultralytics库,然后执行下面python代码 from ultralytics import YOLO# 加载YOLOv8模型 model YOLO("best.pt&q…...
在Spring Boot启动时禁止自动配置数据源相关的组件、@SpringBootApplication
一、SpringBootApplication(exclude {DataSourceAutoConfiguration.class})注解 在Spring Boot启动时禁止自动配置数据源相关的组件。 SpringBootApplication(exclude {DataSourceAutoConfiguration.class})注解的使用案例 这个注解通常应该写在微服务项目的主启动类上&…...
程序人生:不积跬步无以致千里
程序人生 癸卯年冬月,往渭南韩城,拜访司马迁祠。入门攀爬而上,至人有困乏之时,抬头现:高山仰止。归路下山,始现三官洞,遥想西汉时三官洞,出口处刻意再拜别:高山仰止。泪…...
通过二叉树例题深入理解递归问题
目录 引入: 例1:二叉树的前序遍历: 例2: N叉树的前序遍历: 例3:二叉树的最大深度: 例4:二叉树的最小深度 例5:N叉树的最大深度: 例6:左叶子…...
【Android 协程常见用法】
我们这里只讲解一下,协程在Android项目中常见用法,原理知识不在进行说明了。 依赖 lifecycleScope只能在Activity、Fragment中使用,会绑定Activity和Fragment的生命周期。依赖库: implementation androidx.lifecycle:lifecycle…...
python 进程笔记一 (概念+示例代码)
1. 进程的概念 进程是资源分配的最小单位,也是线程的容器,线程(python 线程 (概念示例代码))是CPU调度的基本单位,一个进程包括多个线程。 程序:例如xxx.py是一个程序 进程…...
各中间件数据库默认访问端口总结
说明 在生态丰富的开发环境下,我们常常需要接触很多中间件产品,中间件默认的连接端口以及可视化ui访问端口也时不时的需要用到,这里循序渐进做好登记,以备查阅! 中间件/数据库名称默认端口管理台端口默认账号密码rabbi…...
鲲鹏arm64架构下安装KubeSphere
鲲鹏arm64架构下安装KubeSphere 官方参考文档: https://kubesphere.io/zh/docs/quick-start/minimal-kubesphere-on-k8s/ 在Kubernetes基础上最小化安装 KubeSphere 前提条件 官方参考文档: https://kubesphere.io/zh/docs/installing-on-kubernetes/introduction/prerequi…...
python 函数-02-返回值注释格式
01 函数返回值 1)python中函数可以没有返回值,也可以有通过return的方式 – 【特殊性,区别于java c#等】 2)返回值可以是一个或者多个,多个时通过逗号隔开 – 【特殊性,区别于java c#等】 3)多…...
【前端素材】推荐优质后台管理系统Upcube平台模板(附源码)
一、需求分析 后台管理系统在多个层次上提供了丰富的功能和细致的管理手段,帮助管理员轻松管理和控制系统的各个方面。其灵活性和可扩展性使得后台管理系统成为各种网站、应用程序和系统不可或缺的管理工具。 当我们从多个层次来详细分析后台管理系统时࿰…...
可视化 RAG 数据 — 用于检索增强生成的 EDA
原文地址:Visualize your RAG Data — EDA for Retrieval-Augmented Generation 2024 年 2 月 8 日 Github:https://github.com/Renumics/rag-demo/blob/main/notebooks/visualize_rag_tutorial.ipynb 为探索Spotlight中的数据,我们使用Pa…...
数学建模论文、代码百度网盘链接
1.[2018中国大数据年终总决赛冠军] 金融市场板块划分与轮动规律挖掘与可视化问题 2.[2019第九届MathorCup数模二等奖] 数据驱动的城市轨道交通网络优化策略 3.[2019电工杯一等奖] 露天停车场停车位的优化设计 4.[2019数学中国网络数模一等奖] 基于机器学习的保险业数字化变革…...
mysql 迁移-data目录拷贝方式
背景:从服务器进水坏掉,50多G的数据库要重新做主从,但以导入导出的方式太慢,简直是灾难性的,一夜都没好,只好想到了拷贝mysql数据文件的方式 拷贝的数据文件的前提 1.数据库版本必需一致(可以…...
学习 LangChain 的 Passing data through
学习 LangChain 的 Passing data through 1. Passing data through2. 示例 1. Passing data through RunnablePassthrough 允许不改变或添加额外的键来传递输入。这通常与 RunnableParallel 结合使用,将数据分配给映射中的新键。 RunnablePassthrough() 单独调用&…...
C# OpenVINO PaddleSeg实时人像抠图PP-MattingV2
目录 效果 项目 代码 下载 C# OpenVINO 百度PaddleSeg实时人像抠图PP-MattingV2 效果 项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using System; using System.Diagnostics; using System.Drawing; using System.Security.Cryptography; using System.Text; us…...
【Android 11】AOSP Settings WIFI随机MAC地址功能
AOSP Settings WIFI随机MAC地址功能 背景 最近客户提出了想要实现随机WIFIMAC地址的功能(我们默认WIFI的MAC地址是固定的)。网上搜到了一篇不错的文章,本次改动也是基于这个来写的。 由于客户指定使用的settings是AOSP的,所以在…...
dmrman备份还原
脱机还原工具-dmrman 前言 根据达梦官网文档整理 一、概述 DMRMAN 命令行设置参数执行又可分为命令行指定脚本、命令行指定语句两种执行方式。 指定语句 $ DMRMAN RMAN>BACKUP DATABASE/dmdata/data/DAMENG/dm.ini;指定脚本 创建一个名为 cmd_file.txt 的文件&#x…...
网页403错误(Spring Security报异常 Encoded password does not look like BCrypt)
这个错误通常表现为"403 Forbidden"或"HTTP Status 403",它指的是访问资源被服务器理解但拒绝授权。换句话说,服务器可以理解你请求看到的页面,但它拒绝给你权限。 也就是说很可能测试给定的参数有问题,后端…...
单细胞多组学整合与对齐的计算方法
Computational Methods for Single-cell Multi-omics Integration and Alignment Bioinformatics-2022-密西根大学 关键词:单细胞;多组学;机器学习;无监督学习;集成 摘要 最近发展起来的生成单细胞基因组数据的技术在生物学领域产生了革命性的影响。多组学测定提…...
33.openeuler OECA认证模拟题16
一 、选择题 1.如何查看系统支持的 shell? A、cat /etc/passwd B、cat /etc/shells C、echo SSHELL D、echo $0 答案 :B 2.下列哪项不是 shell的功能? A 、 用户界面,提供用户与内核交互接口 B 、 命令解释器 C 、提供编译环境 D 、 提供各种管理工具,…...
javaScript数组去重的几种实现方式——适用非引用数据去重
最传统的使用循环遍历 //最传统的使用循环遍历 function getUnique(arr) {let newArr [];for (let i 0; i < arr.length; i) {for (let j i 1; j < arr.length; j) {if (arr[i] arr[j]) {i; //相同丢掉前面的元素}}newArr.push(arr[i]);}return newArr; } 利用Set实…...
Nexus Repository Manager
Nexus Repository Manager https://s01.oss.sonatype.org/#welcome https://mvnrepository.com/-CSDN博客...
Python世界之运算符
一、算术运算符 以下假设变量: a10,b20: 运算符 描述 实例 加 - 两个对象相加 a b 输出结果 30 - 减 - 得到负数或是一个数减去另一个数 a - b 输出结果 -10 * 乘 - 两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结…...
蓝桥杯倒计时47天!DFS基础——图的遍历
倒计时47天! 深度优先搜索——DFS 温馨提示:学习dfs之前最好先了解一下递归的思想。 DFS基础——图的遍历 仙境诅咒 问题描述 在一片神秘的仙境中,有N位修仙者,他们各自在仙境中独立修炼,拥有自己独特的修炼之道…...
体验LobeChat搭建私人聊天应用
LobeChat是什么 LobeChat 是开源的高性能聊天机器人框架,支持语音合成、多模态、可扩展的(Function Call)插件系统。支持一键免费部署私人 ChatGPT/LLM 网页应用程序。 地址:https://github.com/lobehub/lobe-chat 为什么要用Lobe…...
ClickHouse 指南(三)最佳实践 -- 主键稀疏索引
在ClickHouse主索引的实用介绍 ClickHouse release 24.1, 2024-01-30 1、简介 在本指南中,我们将深入研究ClickHouse索引。我们将详细说明和讨论: ClickHouse中的索引与传统的关系数据库管理系统有何不同ClickHouse是如何构建和使用表的稀疏主索引的什么是在Clic…...
【Nginx】Nginx配置反向代理 和 https
nginx.conf配置 进入linux /etc/nginx/ 打开nginx.conf 进行以下配置 http {include mime.types;default_type application/octet-stream;sendfile on;keepalive_timeout 65;server {#监听443端口listen 443 ssl;#你的域名server_name huiblog.top;#ssl证书的pe…...
ChatGPT第七讲
ChatGPT为什么会被热炒? 2023年上半年,ChatGPT引起了广泛的热议,对于ChatGPT有多热,不需要我重复了,你可能在网上看到了很多报道,标题如《ChatGPT揭开AI战幔:杀死黄页一样摧毁Google?…...
Chapter 2 of Effective C++ (构造/析构/赋值运算)
条款06:了解C默默编写并调用哪些函数 Know what functions C silently writes and calls 编译器会为空类生成一个copy构造函数、copy assignment操作符和一个析构函数。此外如果你没有声明任何构造函数,它也会生成一个默认构造函数。 (对C1…...
哪些平台可以发布推广信息/seo1现在怎么看不了
正则表达式是处理字符串的强大工具。作为一个概念而言,正则表达式对于Python来说并不是独有的。 正则表达式是一个特殊的字符序列,它能帮助开发人员方便的检查一个字符串是否与某种模式匹配。Python 自1.5版本起增加了re 模块,它提供 Perl 风…...
网站建设流程 文档/seo培训学什么
Bootstrap是最广泛采用的开源前端框架之一。 将Bootstrap包含在您的项目中,您将能够立即生成响应式网页。 如果您尝试将Masonry与Bootstrap Tabs小部件(Bootstrap必须提供的众多JavaScript组件之一)一起使用,那么您可能会偶然发现…...
dede如何制作手机网站/seo优化上海牛巨微
打开你的Mac电脑是不是都会有很多应用程序和服务会在后台自动启动?有的是我们需要的,但是有的不需要,那么开机启动,会耽搁你的开机时间,今天macz将为您介绍在Mac上添加,删除和延迟启动项的方法。 但是过多使用它们会增加设备的启动时间并降低其性能。这就是为什么必须在M…...
wordpress 文章不显示没有图片/舆情管理
看门狗是当CPU进入错误状态后,无法恢复的情况下,使计算机重新启动 由于计算机在工作时不可避免的受到各种各样的因素干扰,即使再优秀的计算机程序也可能因为这种干扰使计算机进入一个死循环,更严重的就是导致死机。 有两种办法来处…...
纸业建站服务/域名是什么意思
面向AI编程的本质是什么? 面向AI编程的本质是编程的第五代编程语言,与自然语言非常相似,但是是有区别的。 因此出现了针对与AI通话的提示工程。 简单地回顾一下编程语言的发展史, 第一代编程语言是机器语言,它直接使…...
营销型企业网站建设的流程是/小广告公司如何起步
最近不少人后台私信包括还有一些朋友都在问我现在Python还好就业不好就业?发展前景怎么样?我30多岁了,还能不能转行编程?Python该怎么学?如果做Python到底该做爬虫还是数据分析还是web?…等等这样的问题&am…...