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

2023-11-12

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

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

其次就是要打好基础。科班出身最好,如果不是也没有关系,我们公司也有一些不是科班出身的微软技术工程师,但我都让他们去购买一些诸如数据结构、操作系统、编译原理之类的基础书籍学习,为什么这样呢?

因为计算机分为三个领域:算法领域、机器学习领域和编程开发领域。算法领域是数学家的事情,对他们来说,实现并不重要,重要的是找到一个算法,找到一个公式,建立一种模型。除去算法领域,其他的都属于计算机的范畴。对于任何一个大型的系统,其实都可以把它分解成为若干最基本的数据结构和基本算法,而这些都是在大学本科的课程中能够学到的。我曾经剖析过很多操作系统,包括DOS、Windows、UNIX、Linux,其实里面很多基础就是数据结构、数据库原理和操作系统的基本原理。

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

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

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

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

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

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

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

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


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

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

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

.所以我建议可以一段时间不写程序,出去走走。就像徐霞客如果只坐在房间里,写不出来很好的作品,而出去游历一下名山大川,感受一下大自然,回来之后自会有另外的一番感受和境界。软件就像文化一样,是一个需要知识积累和沉淀的。

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

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何做一个合格的微软技术工程师 的相关文章

随机推荐

  • 树莓派内核编译

    一 概述 树莓派的github主页 https github com raspberrypi 里面包含了linux源码 交叉编译工具链等内容 对于我们要用到的有两个仓库 https github com raspberrypi linux
  • QT笔记-QTableWidget点击表格头,显示菜单项

    1 添加控件 2 示例源码 h private slots void OnClickHeader int head void OnClickMenu QAction action cpp void Textdemo OnInitTableW
  • [css3] 动画案例---会呼吸的圆

  • Python 源代码缩进格式化工具

    前言 昨天在跟小伙伴聊天 当他谈起自己正在做的项目时 一脸愁容 他吐槽道 该项目的 Python 代码库由多个人共同维护 由于每个人使用的编辑器不同 每个人的编码风格也不同 最终导致了 代码的缩进千奇百怪 有缩进 2 个空格的 有缩进 4
  • 《Linux0.11源码解读》理解(四) head之重新设置IDT/GDT

    上节提到 现在cs ip指向0地址 此处存储着作为操作系统核心代码的system模块 是由head s和 main c以及后面所有源代码文件编译链接而成 head s 以下简称head 紧挨着main c 我们先执行head 重新设置内核栈
  • 带外数据

    定义带 外 数据 想 像一下在银行人们排起队等待处理他们的帐单 在这个队伍中每个人最后都会移到前面由出纳员进行服务 现在想像一下一个走入银行 越过整个队伍 然后用枪抵 住出纳员 这个就可以看作为带 外 数据 这个强盗越过整个队伍 是因为这把
  • 第六天哈希表

    哈希表 哈希表是根据关键码的值而直接进行访问的数据结构 其实呢 数组就是一张哈希表 其中 关键码就是索引下标 然后通过下标访问数组中的元素 什么时候想到用哈希法 当我们遇到了要快速判断一个元素是否出现集合里的时候 就要考虑哈希法 这 要枚举
  • 平衡球迷宫教程(一)

    平衡球迷宫教程 一 今天分享一个简单的小游戏 平衡球迷宫 这个游戏简单易上手 非常适合刚刚接触unity人员作为基础练习 一 建立一个道路 可以让小球在上面滚动 这里我建立的道路是用3D物体中cube建立的起初用的地板plane 但是后期更
  • ChatGPT专业应用:生成奖项方案

    正文共 925 字 阅读大约需要 4 分钟 人力资源等必备技巧 您将在4分钟后获得以下超能力 生成奖项方案 Beezy评级 A级 经过寻找和一段时间的学习 一部分人能掌握 主要提升效率并增强自身技能 推荐人 Kim 编辑者 Yolanda
  • C#文件读写

    C 的IO类库提供了丰富的IO操作 下面我来总结一下其IO类库提供的一些操作文件系统的方法 一 操作驱动器 C 用DriveInfo来操作驱动器 1 创建对象 a 我们可以通过静态方法DriveInfo GetDrives 来获取所有的Dr
  • 掌握VS2010调试 -- 入门指南

    1 导言 在软件开发周期中 测试和修正缺陷 defect defect与bug的区别 Bug是缺陷的一种表现形式 而一个缺陷是可以引起多种Bug的 的时间远多于写代码的时间 通常 debug是指发现缺陷并改正的过程 修正缺陷紧随debug之
  • vue 拖拽功能样式优化

    拖拽需求完成之后 发现拖拽的过程中很丑 放下的时候光标处也是禁止 虽然说功能不影响 但是用户体验还是不太好 不够专业 所以请做以下优化 1 把需要拖拽的图标加上可拖拽属性 div 需要拖拽的元素 div draggable true 2 在
  • 数据库表关系设计

    数据库表设计 设计原则 考虑问题时 一定要站在一头考虑 常用的关联关系 主外键关联 主外键设计原则 我自己的主键可以充当别人的外键 核心知识 主键不能重复的 外键可以重复 一对一 业务场景 用户 user 表与用户详情表 user info
  • sql如何查看数据库表的关联关系?

    SHOW CREATE TABLE 表名 不管是Navicat还是MySQL Workbench 要查询表的创建sql语句的话 在新建查询中执行以下sql SHOW CREATE Table BinLots 执行之后 Create Tabl
  • 在Jenkins管道中添加Webhook

    你有没有尝试过在Jenkins中添加GitHub webhook 在这篇博客中 我将演示在您的管道中添加webhook的最简单方法 首先 什么是webhook webhook的概念很简单 webhook是一个HTTP回调 当通过HTTP P
  • 【简单题】(2018)第九届蓝桥杯省赛 C/C++ A组(第一题、第二题)

    第一题 题目 标题 分数1 1 1 2 1 4 1 8 1 16 每项是前一项的一半 如果一共有20项 求这个和是多少 结果用分数表示出来 类似 3 2当然 这只是加了前2项而已 分子分母要求互质 注意 需要提交的是已经约分过的分数 中间任
  • Linux最全解压命令(*.tar *tar.gz *.gz *.tar.bz2 *.bz2 *tar.xz *.xz *tar.Z *.Z *.rar *.zip *.7z *.7za)

    压缩解压命令 这里重点介绍tar命令 它是一个打包程序 它可 以调用其它的命令 如 gzip bzip2 除此之外还有 rar zip命令 注 无特殊说明 代表文件夹 代表次一级文件夹 代表文件 一 tar 用法 tar 选项 FILE c
  • JavaScript 实现 -- 快速排序

    文章目录 快速排序 快排原理 代码实现 快排过程 时间复杂度 算法稳定性 快速排序 快速排序算法是在分治算法基础上设计出来的一种排序算法 和其它排序算法相比 快速排序算法具有效率高 耗费资源少 容易实现等优点 快排原理 选择一个基准数 通过
  • http://wp.qq.com/index.html,登录页

    1Tj HOKWyW28 TMmb Xf OJiNeTZg9K yE gt f oxqaOEW9 jFA LtDl6 zX wJXf lC nHKnU2Txt1ISzG1B3mhYAL90 e 9DBh8eGt gt u7b3F r Yl1
  • 如何做一个合格的微软技术工程师

    我是荔园微风 作为一名在IT界整整25年的老兵 今天我们来重新审视一下如何做一个合格的微软技术工程师 我认为要做一个合格的微软技术工程师 首先是要有兴趣从事这个职业 现在很多人是因为软件行业的薪资高才进入的 但我的看法是 工程师是没有办法一