如何做一个合格的微软技术工程师

news2025/1/19 4:06:28

我是荔园微风,作为一名在IT界整整25年的老兵,今天我们来重新审视一下如何做一个合格的微软技术工程师。

我认为要做一个合格的微软技术工程师,首先是要有兴趣从事这个职业。现在很多人是因为软件行业的薪资高才进入的,但我的看法是,工程师是没有办法一夜暴富的。甚至可以说如果你聪明的话,做工程师不如去做销售经理和市场经理的待遇和收入上升得更快一些。我认为做合格的微软技术工程师首先一定要从兴趣上爱微软技术这个行业,否则根本无法忍受成为一个真正合格的微软技术工程师要付出的代价。虽然现在像我的确不用写很多程序了,但从内心来讲,仍然对微软平台的开发有一种冲动和热情。

其次就是要打好基础。科班出身最好,如果不是也没有关系,我们公司也有一些不是科班出身的微软技术工程师,但我都让他们去购买一些诸如数据结构、操作系统、编译原理之类的基础书籍学习,为什么这样呢?因为计算机分为两个领域:算法领域、机器学习领域和编程开发领域。算法领域是数学家的事情,对他们来说,实现并不重要,重要的是找到一个算法,找到一个公式,建立一种模型。除去算法领域,其他的都属于纯计算机的范畴。对于任何一个大型的系统,其实都可以把它分解成为若干最基本的数据结构和基本算法,而这些都是在大学本科的课程中能够学到的。我曾经剖析过很多操作系统,包括DOS、Windows、UNIX、Linux,其实里面很多基础就是数据结构、数据库原理和操作系统的基本原理。

再次要做到不被周围纷乱的新名词、新事物所诱惑。现在新名词太多了,今天流行这个,,明天又是那个,很多人便被这些东西所吸引,去追风。大家都知道“活到老,学到老”,但学习要有正确的学习方法。有些人以自己知道一个新名词为荣,觉得很酷。但实际上任何一个新的技术如果你把它外表的新名词抛掉,去查看它的来源和历史,就会发现很多都是从老知识中派生出来的,本质并没有变。

最后就是要学会领悟和超越。微软技术中涉及基础知识太多了,每个技术都包含了很多深层的东西。要深入了解任何一门语言,都需要很长时间的积累,经过积累,才能领悟其中的道理。

如果一定要我对现在的计算机专业大学生说什么的话,我会说,首先还是学好自己的基础课程。我原来在浙大学习时,专业要求很严,使我不得不把基础课学好。我在上大学的前几个月就学编程,但那时候没有理论指导,只是靠兴趣,凭感觉,因此遇到了很多问题。当我在大学开始学习后,所学课程让我明白了很多困扰已久、百思不得其解的问题,所以内心产生了学习的欲望。这样基础打得扎实,课程学得也好,而且不是为了应付考试。现在想来,我很多灵感都是来自于学校打下的坚实基础。

其次我花了很多时间去实践。读书时没有现在这么好的条件,但我在学校一直利用任何一个机会在计算机上去做微软技术的开发和实践,这些实践打下的基础使我这些年来受益无穷,这也是发自内心的感受。

再次是利用大量的时间读VC程序源码。因为写程序一方面要读别人的程序,一方面是模仿,一方面是自己写,三者缺一不可。通过读这些源码,对语言的本质有了很深的了解,进而才能超越语言本身。后来我还读过C语言的库函数源代码,研究它是如何写得精致和高效的。而且当时还做了很多程序,去看C编译器输出的汇编代码。这些听起来好像都是很笨的方法,但效果是非常好的,这个习惯至今未改。

最后是经常的思考。思考和学习是结合在一起的,看到别人的项目和软件,我首先会想它是怎样做的,为什么这么做?我个人非常喜欢系统软件。除此之外,还有很多东西都可以让我去思考,其实在思考的过程中并不一定会得到答案,但重要的是你在思考,这样带着很多问题去看书,去听课,就会让学习变得有动力,有目的性。

对于刚毕业之后学生,我想说,我认为最重要的不是做什么,而是怎样去做。因为刚开始你根本做不了判断。做一个微软技术项目的成功与否完全取决于对这个项目的态度和投入,而不取决于项目本身。我有一个信条:一件事情,要么我不做,要么我就认真做。因为如果不认真做,既浪费公司的时间,同时也浪费自己的时间。但如果认真做了,就会发现从这个项目得到的收获远远超过项目本身。下面我讲讲自己工作的一些经历,从中你会发现,机会是自己把握的。

我在很多工作过的岗位做了好几件很多人不愿意去做的事情。第一件是我被分派做一个系统集成开发。这是一个苦差事,但我想既然来做这件事情,就一定要做的最好。到客户了里之后,我并没有立刻动手做事,而是花了一个星期的时间来思考如何用新的开发方式来提高工作效率。然后是给企业进行微软技术培训时,很多人可能就随便讲讲课,应付了事。那时人工智能浪潮刚刚开始,但我从这次培训开始,找到了很多相关的资料,在学习过程中对知识图谱产生了浓厚的兴趣,并感觉做一套相关系统系统会非常有前途。而且通过和学员的交谈,发现他们很难学会技术化产品的操作,于是产生了开发一套系统的想法,这件事也奠定了我后来开发产品的知识基础和思路。再次是被指派到客户那里去解决系统无法处理大量数据的问题。因为当时每天要做数千万笔交易,这个访问量是非常大的,整套系统无法承受。要解决的就是如何在不升级硬件的情况下提高系统效率。这个事情没有人愿意去,一方面是远,更重要的是很难知道这件事情会做成怎样。当然我也不想去,但既然去了,就要做出成绩来。后来我把这个问题解决了。而且在解决这个问题的过程中获得了很大的收获,比如对企业级软件如何利用中间件来提高性能,提高容错能力有了很好的认识,还研究了企业级软件的体系结构,最重要的是了解了数据库系统如何优化,尤其是在处理海量数据访问的情况下,仍然能够保证速度和性能方面收益菲浅。


人的生命和精力是有限的,如何在有限的时间中更好的学习和提高自己,这是一个很重要的课题,有些人喜欢追逐新名词,蜻蜓点水的学习新东西,我觉得这样做既浪费精力,又使自己很累,而且效果也不好。其实计算机所有的东西都是相通的,换句话说,好的程序员在Windows、DOS、UNIX下编程没有什么区别,体现的就是编程的功力,用什么语言也不重要,体现的是你对问题如何去解决及对算法和数据结构的把握,对语言本质的了解。

同其他的开发人员一样,我也遇到过很多的问题,我解决流程一般是:学习基础理论知识一聚焦一扎实的做事,而每个环节都要思考。

做一个合格的微软技术工程师,不能只埋头编程,一定要跳出开发者技术眼光,能够到市场和客户那里去看一看。我比较幸运,因为做过的项目都有客户需求,这样就可以和客户建立很好的技术沟通。在我上研究生的后半年,我花了很多时间到公司中学习其他的各种技能,学习谈生意,接触客户。当时我对编程以外的很多事情都有兴趣,包括攒机器、装软件、做培训。这些事情看起来很无聊,但一方面提高了同他人沟通的能力,另一方面也让我知道了客户和企业的需求。后来又接触到了售后服务的问题。所有这些都让我清楚了做产品要从用户的角度出发,而不能从自己的角度出发。

.所以我建议可以一段时间不写程序,出去走走。就象徐霞客如果只坐在房间里,写不出来很好的作品,而出去游历一下名山大川,感受一下大自然,回来之后自会有另外的一番感受和境界。

软件就象文化一样,是一个需要知识积累和沉淀的。我们的程序员与其杞人忧天,不如扎实的把自己能做的事情做好。

另外我建议年轻的微软技术工程师不要急于搞某种新出来的技术概念。因为从另一方面讲是对自己没有信心的一种表现。我觉得要做一名职业的工程师,他的青春和职业生命也应该是比较长的。很多非常年轻的工程师很早就开始研究某种新出来的技术概念之类的,自己感觉比较时髦。可是作为一个专业的工程师,如果没有丰富的实践经验,脱离一个很扎实的基础,就算是学到了某种新出来的技术概念的一个皮毛,那成功的可能性也是很小的。

想成大事的人要能够经受住各种磨难,要有韧性。任何一个产品都是用心血浇灌成的。做开发的过程中,有时一个调试问题解决了,刚松口气,有了很大的成就感,突然又出现了一个新问题,就这样在希望和绝望的巅峰和谷底之间来回震荡,真的是很考验你的韧性。

但当你把一个比较完美的作品做出来的时候,会感觉自己太累了。所以我送所有的微软件技术工程师一句话:你觉得自己很聪明,是天才,但天下这种人太多了,你想在三到五年就把别人十年做的事情做一遍,那你也一定会把别人在十年中所受的苦难在这三到五年经历一遍,没有韧性是绝对不行的。

作者简介:荔园微风,1981年生,高级工程师,浙大工学硕士,软件工程项目主管,做过程序员、软件设计师、系统架构师,早期的Windows程序员,Visual Studio忠实用户,C/C++使用者,是一位在计算机界学习、拼搏、奋斗了25年的老将,经历了UNIX时代、桌面WIN32时代、Web应用时代、云计算时代、手机安卓时代、大数据时代、ICT时代、AI深度学习时代、智能机器时代,我不知道未来还会有什么时代,只记得这一路走来,充满着艰辛与收获,愿同大家一起走下去,充满希望的走下去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/997313.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

并查集快速合并

对于一组数据,并查集主要支持两个动作: union(p,q) - 将 p 和 q 两个元素连接起来。 find(p) - 查询 p 元素在哪个集合中。 isConnected(p,q) - 查看 p 和 q 两个元素是否相连接在一起。 在上一小节中,我们用 id 数组的形式表示并查集&am…

基于SSM的宿舍管理系统【附源码文档】

基于SSM的宿舍管理系统【附源码文档】 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatis工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:管理员、宿舍管理员、学生 管理员:院系信息、班级信…

7X24即时新闻监测

即时新闻----是我们最快获取新闻内容的重要途径。一般内容简短精悍,更新频率高,很多字少事大的新闻首先在即时新闻里体现。即便是为我们及时获取新闻资讯带来方便,但我们仍然不可能一直盯着即时新闻页面看吧。我们希望当有重要新闻事件时&…

Unity中Shader抓取屏幕并实现扭曲效果(优化)

文章目录 前言一、在之前顶点着色器的输入中,放弃了使用结构体传入,而是直接从应用程序阶段传入参数,这样写的话,对于程序来说,不方便扩张,所以需要对其进行修改实现1、定义结构体用于传入顶点坐标系2、因为…

查找:顺序查找的实现以及相关优化

1.算法思想 顺序查找,又叫“线性查找”,通常用于线性表。 适用于顺序表、链表,表中元素有序无序都OK。 可在0索引处存“哨兵”,从尾部向头部挨个查找优点:循环时无需判断下标是否越界。 代码实现(哨兵)&…

SpringCloud Alibaba 入门到精通 - Nacos

SpringCloud Alibaba 常用组件 一、基础结构搭建1.父工程创建2.子工程创建 二、Nacos:注册中心1.服务端搭建2.注册中心-客户端搭建3.注册中心-管理页面4.注册中心-常用配置5.注册中心-核心功能总结 三、Nacos注册中心集成Load Balancer 、OpenFeign1.Nacos客户端集成…

Python Opencv实践 - SIFT关键点检测

参考资料: 关键点检测SIFT算法笔记_亦枫Leonlew的博客-CSDN博客 SIFT特征检测算子和sift cv2.xfeatures2d.SIFT_create出错的解决办法_self.siftcv2.xfeatures2d.sift_create()_刘凯数据分析的博客-CSDN博客 import cv2 as cv import numpy as np import matplo…

Nodejs 第十五章(child_process)

child_process 子进程 子进程是Nodejs核心API,如果你会shell命令,他会有非常大的帮助,或者你喜欢编写前端工程化工具之类的,他也有很大的用处,以及处理CPU密集型应用。 创建子进程 Nodejs创建子进程共有7个API Sync…

yolo增加MPDIoU loss

边界框回归(Bounding Box Regression,BBR)在目标检测和实例分割中被广泛应用,是定位目标的重要步骤。然而,大多数现有的边界框回归损失函数在预测框与实际标注框具有相同的宽高比但宽度和高度值完全不同的情况下无法进…

基于SSM的鲜花商城系统【附源码文档】

基于SSM的鲜花商城系统【附源码文档】 开发语言:Java数据库:MySQL技术:SpringSpringMVCMyBatis工具:IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色:用户、管理员 用户:登录、注册、商品查询、公告预…

sql注入漏洞(CVE-2022-32991)

简介 CVE-2022-32991是Web Based Quiz System v1.0版本中存在的SQL注入漏洞,该漏洞源于welcome.php中的eid参数缺少对外部输入SQL语句的验证。攻击者可利用该漏洞执行非法SQL命令窃取数据库敏感数据。 打开靶场环境,如下 1.进行注册登录 2.点击任意一处…

Python异常处理——走BUG的路,让BUG无处可走

作者:Insist-- 个人主页:insist--个人主页 本文专栏:Python专栏 专栏介绍:本专栏为免费专栏,并且会持续更新python基础知识,欢迎各位订阅关注。 目录 一、了解python异常 1、BUG 单词的由来 2、什么是异…

并联电容器电容量测试

试验目的 开展并联电容器电容量试验的目的是检查其电容值的变化情况, 以判断电容器内部接线是否正确, 内部各电容单元是否存在断线、 击穿短路或绝缘受潮等现象, 以避免在运行中发生事故。 试验设备 电容电感测试仪 厂家: 湖北众拓高试 试验方法 并联电容器电容量…

std : : vector

一.简介 std::vector 的底层实现通常基于动态数组(dynamic array),它是一种连续分配的内存块,允许元素的快速随机访问。下面是 std::vector 的一些关键特点和底层实现细节: 连续内存块:std::vector 内部使…

【Unity的HDRP下ShaderGraph实现权重缩放全息投影_(内附源码)】

实现权重缩放全息投影 效果如下 效果如下 顶点位置偏移 链接: 提取码:1234

NtripShare Cloud GNSS解算云平台之动态、快速静态、静态解算

过去半年以来基本精力都在测量机器人自动化监测领域,相对GNSS平台本身除了进行逻辑更新之外,算法层面基本没尽兴大的改动,目前NtripShare Cloud V3版本中支持三种解算方式,即动态、快速静态、静态。 1、动态---RTK算法&#xff0…

C++:vector

目录 一、关于vector 二、vector的相关函数 三、相关函数的使用 ①构造函数 ②size ③[] ​编辑 ④push_back ⑤迭代器iterator ⑥reserve ⑦resize ⑧find ⑨insert ⑩erase ⑪sort 一、关于vector vector比较像数组 观察可知,vector有两个模板参数…

使用Linux下的MySQL数据库

PS:文章最后有“开心一刻”,记得看哦,给生活增加点儿趣味。 大家好,我是Linux持续学习者。在本文中,我们将介绍如何在Linux系统下安装、配置和使用MySQL数据库。MySQL是一款使用最广泛的开源关系型数据库管理系统&…

Qt的窗口系统

代码仓库以及参考文件见文章底部 坐标体系 要想学好GUI,界面的坐标系首先要搞清楚 在Qt编程中,以左上角为原点,X向右增加,Y向下增加。 对于所有嵌套的窗口,其坐标是相对于父窗口来说的。 QWidget 所有窗口以及窗口控件都是从QWidget直接或者间接派生出来的。 对象模…

VL系列 Exchanging-based Multimodal Fusion with Transformer 论文阅读笔记

多模态融合 Exchanging-based Multimodal Fusion with Transformer 论文阅读笔记 一、Abstract二、引言三、相关工作3.1 深度多模态融合 四、方法4.1 低维投影和 embedding 归一化低维投影Embedding 归一化 4.2 多模态交换Transformer 基础CrossTransformer 4.3 训练目标 五、实…