<The best career advice I’ve receive>--影响一生的职业建议

本文分享了作者在职业生涯中的关键建议,包括避免成为快餐师、自我推销、重视人际交往、保持冷静以及理解领导力的重要性。通过导师的指导和个人反思,作者学会了如何在职场上取得成功并建立良好的人际关系。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于上一篇非常建设性的文章,这里也不敢独占,在此分享出来。故找到原文链接,再此也找到译文。

认为是非常好的文章!!!

我希望我的blog 不单单只记录一下自己的技术分享和进步,我更希望能把这类文章作为自己的进步的一个overview!

也推荐给大家,冯大辉,冯先生!我很喜欢的一个大家。鄙人认为看了那么blog,认为冯先生的blog才是最有质量的!

here is a blog address:http://www.dbanotes.net 

 
前段时间我和一个同事进行了一次有趣的讨论。我们重新审视了我们的工作历史,并探讨了那些可以称之为丰富多彩的个人特性是如何对我们产生长期的负面影响的。之后我发现在我刚走出校园的时候确实有点混蛋(某些人也许会说我现在依然有点混蛋,不过这是题外话了)。那时候的我是一个自负,刻薄并不知道尊重其他人的人。不过我想那时候的我知道这些并反而对于这样的我感到自豪。

过去,我喜欢直接指出那些更加资深的工程师他们的错误,尽管大多说时间我是对的,但我却没有能力去让它起作用。曾经在一次正在进行的会议中,有个高级工程师打断了我,他当时说的话我至今记忆犹新,“如果你还不闭嘴的话,我就把你揍出屎来。”当时我对这句话嗤之以鼻因为我知道他不敢,但多年以后我才意识到这句话的背后含义:他真的想要这么做。

从那之后我成长了许多,我学会了注意言辞并不受本性的影响去尊重别人。我会在专业场合将讽刺之言抑制于口,而在与好朋友的私人场合下将其宣泄于外。 我并非无师自通学会自制力以及很多其他的宝贵经验,它们是在伴我一路走来的导师的精心指导下学会的。如果不是他们,也许我那糟糕的人际关系早已挫毁我的事业。

回想起来,正是由于这些我所接触到的人才使得我的事业变得如此顺风顺水。一路之上的导师们将一个纯粹的菜鸟塑造成一个我可以为之自豪的人。更重要的是,在他们的潜移默化之下,我现在不仅是一个好的程序员——同时也是一个好的队友和好人。他们对我的人生的影响是如此之深,以致我现在依然会将他们的建议转述给我现在指导的同事们。

同时,我也发现他们的建议具有普适性,所以我想将这些伴我一路成长的建议 分享给大家  。当然, 由于我的记忆力没有那么好所以我所复述的会与原话有些出入, 不过我想我应该已经抓到了它们中的精髓部分。

不要做快餐师 

我最早的一份工作只持续了8个月所在的公司就倒闭了。 当我在和我的经理讨论接下来我该去做什么的时候,他给我了这样的建议:

Nicholas, 你比你的代码更有价值。 不论你的下一份工作是什么,确保你不会成为一个快餐师。不要接受一份告诉你了做什么以及如何去做的工作。 你需要工作在人们不仅欣赏你的工作能力也同样欣赏你对产品的观点的地方。

我一直把它牢记在心里。 成为一个履行者并不好——你需要去参与到通向实现之路的过程中。好的工程师不会仅仅 服从安排,他们给产品的主人发送反馈并与他们一起工作来使得产品变得更好。幸运的是, 我明智地去选择我的工作并从不使自己陷入到人们不尊重或者不重视我的观点的环境中。

​自我推销

一天我在雅虎的第二任经理将我拉到一边并给我了一些建议。他说他曾经观察我的工作并觉得我有些内向

你的工作完成的很棒,真的很棒。我喜欢你的代码样式并且它们很少出bug。但是问题是其他人并没有意识到这一点。如果你想要获得与你所做的事相称的名分,你得让其他人了解这些。要让别人注意到你,你需要做一些自我推销。

我花了一些时间来领会他上所说的话,不过最终我想通了。如果你工作做的好,但是没有人知道你工作做的好,那么工作做的再好对你也没有任何人知道。 你的上司可以去支持你但是却不能为你证明你的情况。组织中的群众需要了解你的价值,达到这个目的的最好的方法是告诉别人你做了什么。

现在我会把这条建议提给许多同事。自我推销并不意味着:“看我,看我,我很牛B。" 它意味着让别人知道你在某个时间点完成了一个重要指标或者学到了一些新的知识。它也意味着向别人展示你所引以为傲的工作成果。它意味着为彼此的成就而庆贺。它意味在组织中有存在感。在角落里默写代码稍显古怪 ——别这样搞。发封简短的邮件:“嘿,我刚搞了个新的邮件布局。你们觉得它怎么样?"会大有裨益。

  始关乎人

在我职业生涯的早期,我很追逐职称。我最想知道的一件事就是如何去升职。于是我在雅虎首页的第一次和上司的一对一会议上,我问他怎么做才可以晋升。他的话语至今萦绕在我耳边:

从某种程度上来说,已经不能根据技术来评价你了,现在要看你与人之间的交往方式了。

我不知道这是不是我曾经接受到的关于软件工程专业的最好建议。他太对了。在那个阶段,已经没有人回去怀疑我的技术能力了。在他们眼中,我是一个写的一手优质的好代码并很少出bug的家伙。我所欠缺的是领导能力。

之后,我曾看到无数的工程师遇到他们的事业瓶颈。他们聪明,写的一手好代码,然而由于与他人协作能力的缺乏却让他们裹足难前。每当有人在软件工程事业中停滞,我都会将这条建议转述给他们,而且它的确能恰到好处的帮到他们。

它没你想象的那么重要

在雅虎的有段时间,我非常失落。不,与其说是失落,倒不如说是愤怒更加准确。我靠频繁的与他人争辩来发泄我的怒火。一切都糟透了,我并不想如此下去。在一个特别艰难的日子,我向我的一位导师请教当一切都如此之糟的时候如何去保持冷静。他的回应是:

这很简单。你必须认识到:这些都不重要。今天一些蹩脚的代码被准入了,明天网站挂了。那又怎样呢?工作不是你生活的全部。工作问题都不是真的问题。对你最重要的是工作之外发生的事情。我回到家看到我老婆在等着我,这就很美好了。

那时我才从马塞诸塞州搬到加利福尼亚,朋友也很难交。工作完全构成了我的生活,只有它才让我感觉到自己还是一个完整的人。工作的走向完全意味着我生活的走向。这次谈话让我明白了我必须得去找寻生活中除工作之外, 在其中可以忘记工作上的烦恼的的部分。

他是对的,当我试着转变心态并将那些工作上的烦心事归类于“工作上的事”,我又能清醒的思考了。我会冷静的对待工作并有了更好的人际关系。

人各有路

当我在雅虎首次升任首席工程师的时候,我曾向我的主管请教说如何更好地理解这个角色所肩负的责任。我知道我需要更像一个领导,但是不知道如何去有威信。我找他寻求帮助,他如此说:

我不能明确的告诉你如何去变得有威信,这需要你自己去找。千人千路,你唯一需要做的是去找一个你可以接受并让你感到合适的方式。很遗憾我不能告诉你它是什么,但既然你在这个位置,就必须去找到它。

那一年我花了许多时间去观察那些权威人物以及他们与其他人交往的方式。我把他们走路,说话,处理问题的方式做了笔记。在经历百种尝试之后,我终于找到了属于我的那种方式。这是每个追求权威的人都要经历的荆棘之路,每个人都独一无二。不过相对他人而言,我比较幸运的是在出发之前已经有导师指给我了线索。

从“如何做”到“做什么”

在一次我与经理的谈话中,我问他对于处于新职位的我的期望是什么。他回答说:

以你今天的位置来说,你已经明白了“如何做”这个问题,比如说我们会告诉你需要完成什么然后你能明白的想出如何去完成。不过对于你的新职位,你需要学会回答“做什么”这个问题,我期待你来告诉我你需要做什么。

这是许多工程师泥足深陷的部分,也许如果不是这条建议,我也会陷进去。从“如何做”到“做什么”的转变非常困难而且需要大量的时间。它也需要你去成熟的均衡自己的个人欲望以及工作重点。毕竟,如果你能够任意支配你的时间,你也需要为你的产出负责。

在Box,我们称之为“奔跑的开环”,它意味着你们可以在尽量少的关注下做你们的事情,但是你们所做的整合起来却依然需要对公司或者机构可以造成积极的影响。许多想要到达下一级别的工程师会在此受挫,所以我依然会将这条建议给予需要的人。

在其位,谋其政

我曾经参与过一个会议,一言不发的从开始坐到结束。后面在一次与主管的一对一会议中,我提到了这件事,说我刚参加了一个不明不白的会并且没有发表任何一件。他说:

这种事永远不要有下次了。需要你参与一个会议,事出必有因。如果你不知道这原因,那么问下别人。如果没来由那么就撤吧。你现在扮演的是领导角色,就需要做领导该做的事情。不要默默地走进房间。尽可能表现出你的控制力,同时其他人也会认同它。

这条建议让我想起了高中时候表演课上学到的内容:没人知道你正在虚张声势。如果你能在紧张的时候表现的很轻松,那么其他人就不会知道你很紧张。领导力也是如此。俗语有云:假戏久坐假成真。从那时起,我不会再默不作声的参加会议。我会确定一个会议是否真的需要我去参加才去参加。

退一步海阔天空

曾经有段时间,团队中充满了各种争论。不过通常我会借用自己的权威性来结束这些争论,我也为之感到骄傲。那时我有种“终结者”的感觉,然后我的上司注意到了这点,并给我了如下建议:

我看到了正在进行的大量争论,并且我知道你常常最终会赢。虽然在大多时间你都是对的,但偶尔也让他们赢一次吧。从中挑选真正对你有意义的事情并为之努力,然后放过其他事情。百争百胜其实并没有必要。

对于这条建议,我一开始是抵触的。既然几乎所有时间我都是对的,凭什么要让别人赢?不过那时候我已经开始去相信他的直觉了,所以我决定放手一试。最终的结果是再没有那么多的争论了。人们不再觉得他们必须要胜过我,我也更善于辨明一件事情是否值得我去那么关心。我会在重要事项上坚持我的观点,至于其他的交由他们来解决。自此,所有会议的激烈程度都大幅下降了。

总结

回望毕业时那傲慢地自己,谁能料到我的事业人生会有今天。那时的我对谁也不服气,在别人眼里是个聪明却难相处的家伙,只有情非得已之下他们才会来和我打交道。如果不是这一路上的各位导师,以及事业早期那几次难堪的失败,我那糟糕的人际沟通技巧(或者由此导致的其他不足)早已将我完全搞垮。这些天,我会定期地去找那些比我有经验的人并寻求建议。可能我已不再犯那些明显的大错误,但是我更不会去等到错误发生之后才去找寻求那些我信任的资深人士的意见。

我在雅虎的最近五年是我事业转折点中最重要的一些。我不仅能够研究大量的有趣的问题,更重要的是我有幸结识了组织中许多很棒的经理以及其他导师。时至今日,我可以成为一个不管是在工作中还是在真实生活中都会为之自豪的人,这些谈话居功至伟。

如果要我给一条首要的建议,那就是“找出在工作中在某一方面(技术,组织能力等)强过你的人,并去靠近他们。试试看去经常性的跟他们一起吃午饭或和咖啡来汲取他们大脑中的大量知识,你的事业甚至是你的人生都会走向出乎意料的更好。

原文链接: http://www.nczonline.net/blog/2013/10/15/the-best-career-advice-ive-received/


<think>根据提供的XML片段,这是一个.NET项目的项目文件(.csproj)的一部分。该配置用于将应用程序发布为单个可执行文件(自包含),并针对Windows x64平台进行编译和发布。 配置解释: - `<OutputType>Exe</OutputType>`: 指定输出类型为可执行文件。 - `<TargetFramework>net8.0</TargetFramework>`: 目标框架为.NET 8.0。 - `<RuntimeIdentifier>win-x64</RuntimeIdentifier>`: 指定运行时标识符为Windows x64平台。 - `<SelfContained>true</SelfContained>`: 表示发布为自包含应用程序(包含.NET运行时)。 - `<PublishSingleFile>true</PublishSingleFile>`: 将应用程序打包为单个可执行文件。 - `<PublishTrimmed>true</PublishTrimmed>`: 启用剪裁,减少发布文件的大小(仅适用于自包含应用)。 这个配置应该放在项目文件(.csproj)的`<PropertyGroup>`标签内。通常,项目文件与项目同名,扩展名为.csproj。 示例:假设项目名为MyApp,则项目文件名为MyApp.csproj,其内容可能如下: ```xml <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <!-- 添加以下配置 --> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <SelfContained>true</SelfContained> <PublishSingleFile>true</PublishSingleFile> <PublishTrimmed>true</PublishTrimmed> </PropertyGroup> </Project> ``` 发布命令: 使用命令行发布应用程序(在项目目录下): ```bash dotnet publish -c Release ``` 发布后的文件位于:`bin\Release\net8.0\win-x64\publish\` 目录下,其中包含一个单独的可执行文件(以及可能的依赖文件,除非使用PublishSingleFile将所有依赖打包进一个文件)。 注意:由于启用了`<PublishSingleFile>true</PublishSingleFile>`,发布目录中应该只有一个可执行文件(可能还有一个小的配置文件)。但是,如果应用程序有非托管依赖,则可能不会全部打包进单个文件,这取决于具体的情况。 关于剪裁(PublishTrimmed)的注意事项: 剪裁会移除应用程序未使用的程序集,以减少发布包的大小。但是,剪裁可能会导致一些动态加载的类型或程序集(如通过反射)无法正常工作,因此需要测试应用程序在剪裁后的行为。 如果需要为多个平台发布,可以在命令行中指定不同的运行时标识符(RID),而不在项目文件中固定设置。例如: ```bash dotnet publish -c Release -r win-x64 dotnet publish -c Release -r linux-x64 ``` 在这种情况下,可以从项目文件中移除`<RuntimeIdentifier>`元素,改为在命令行中指定。 完整示例(项目文件不指定RID): ```xml <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <SelfContained>true</SelfContained> <PublishSingleFile>true</PublishSingleFile> <PublishTrimmed>true</PublishTrimmed> </PropertyGroup> </Project> ``` 然后通过命令行发布指定平台: ```bash dotnet publish -c Release -r win-x64 --self-contained true ``` 这样同一个项目文件就可以用于发布多个平台。</think>### 在 .NET 项目中配置单文件发布 您提供的 XML 配置是用于 .NET 项目的项目文件(`.csproj`)中的设置,这些设置用于配置应用程序的单文件发布。以下是完整的解释和配置位置: #### 配置位置和完整示例 这个配置应该放在项目的 `.csproj` 文件中,具体位置在 `<PropertyGroup>` 元素内。以下是完整的 `.csproj` 文件示例: ```xml <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <!-- 基本配置 --> <OutputType>Exe</OutputType> <TargetFramework>net8.0</TargetFramework> <!-- 单文件发布配置 --> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <SelfContained>true</SelfContained> <PublishSingleFile>true</PublishSingleFile> <PublishTrimmed>true</PublishTrimmed> <!-- 可选优化配置 --> <DebugType>none</DebugType> <DebugSymbols>false</DebugSymbols> <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract> </PropertyGroup> </Project> ``` #### 配置项详解 1. **`<RuntimeIdentifier>win-x64</RuntimeIdentifier>`** - 指定目标运行时环境(RID) - 常用值:`win-x64`, `win-x86`, `linux-x64`, `osx-x64` - 可以使用 `dotnet --list-runtimes` 查看所有可用 RID 2. **`<SelfContained>true</SelfContained>`** - 打包完整的 .NET 运行时,无需目标机器安装 .NET - 设为 `false` 则依赖目标机器的 .NET 运行时 3. **`<PublishSingleFile>true</PublishSingleFile>`** - 将所有依赖打包到单个可执行文件中 - 默认输出文件名:`<项目名>.exe` 4. **`<PublishTrimmed>true</PublishTrimmed>`** - 启用 IL 剪裁,移除未使用的程序集 - 可显著减小文件大小(约减少 50-70%) - 注意:可能破坏反射等动态功能 #### 发布命令 配置完成后,使用以下命令发布应用程序: ```bash # 发布到当前目录下的 publish 文件夹 dotnet publish -c Release -o publish # 指定运行时标识符(如果未在 csproj 中设置) dotnet publish -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true ``` #### 高级配置示例 针对不同平台的配置: ```xml <PropertyGroup> <!-- 条件编译:根据目标平台设置不同配置 --> <RuntimeIdentifier Condition="'$(OS)' == 'Windows_NT'">win-x64</RuntimeIdentifier> <RuntimeIdentifier Condition="'$(OS)' != 'Windows_NT'">linux-x64</RuntimeIdentifier> <!-- 文件压缩设置 --> <EnableCompressionInSingleFile>true</EnableCompressionInSingleFile> <!-- 排除特定文件 --> <ExcludeFromSingleFile>appsettings.json</ExcludeFromSingleFile> </PropertyGroup> ``` #### 单文件发布的工作原理 1. **打包过程**: - 将所有托管程序集嵌入到可执行文件中 - 将本机库提取到临时目录运行 - 使用内存映射文件加载程序集 2. **运行时行为**: - 应用程序启动时自解压到临时目录 - 程序集直接从内存加载(非磁盘) - 退出时自动清理临时文件 #### 注意事项 1. **调试限制**: - 单文件应用更难调试,建议开发时禁用单文件发布 - 使用条件编译: ```xml <PublishSingleFile Condition="'$(Configuration)' == 'Release'">true</PublishSingleFile> ``` 2. **文件大小优化**: - 使用 `UPX` 进一步压缩可执行文件: ```bash upx --best --lzma publish/your_app.exe ``` 3. **剪裁问题排查**: - 如果剪裁导致功能异常,添加剪裁分析器: ```xml <ItemGroup> <TrimmerRootAssembly Include="YourProblematicAssembly" /> </ItemGroup> ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值