程序员的几个建议

2023-05-16

注:感觉这个文章说的挺有指导意义

 

每年都有无数年轻程序员,加入软件行业。

他们在学校里学过编程,但是对这个行业的现实一无所知。

Patrick McKenzie是美国一家小软件公司的老板,他写了一篇长文,介绍这个行业的一些实际情况。我看了以后很感慨,有些地方很受启发。我选择了一部分,翻译如下。

==================================

一、90%的编程工作来自内部软件

(90% of programming jobs are in creating Line of Business software)

计算机专业的学生,可能有一种印象,觉得大部分程序员,都在编写公开出售的软件或者通用软件。

这种看法是不对的。大部分程序员,实际上编写的是不公开的企业内部软件,比如追踪费用的软件、优化装运成本的软件、帮助记账的软件、设计新部件的软件、计算保单价格的软件、识别恶意订单的软件等等。

各种各样的商业公司,开发内部软件,解决它们自己的问题。市场上对程序员的大部分需求来源于此,只有极少数程序员直接编写面向外部顾客的软件。

内部软件的开发,通常非常乏味,令人厌倦。因为它们的技术复杂性低、技术决策非常保守、预算很少、缺乏长远考虑。但是,世界上大部分编程工作都是这种。

二、别人雇你的目的,是让你创造利润,不是让你编程

(Engineers are hired to create business value, not to program things)

商业公司最关心的(或者说唯一在乎的)事情,就是增加收入、降低成本。因此,它们实际上需要的不是程序员,而是能够帮助它们增加收入、降低成本的人。

开发优美的软件,解决技术难题,编写没有bug的代码,这些都不是商业公司的目的。它们雇佣你,是为了让你帮它们完成某个可以增加收入、降低成本的项目,而不是因为你是geek。

你个人对于公司的唯一价值,就在于你能多大程度上为它们增加收入、降低成本。

三、不要自称为程序员

(Don't call yourself a programmer)

很多公司的经理不懂计算机,在他们心目中,"程序员"就是一群高成本的劳动力,只会在一台复杂的机器上干一些难懂的事情。

如果你自称为"程序员",当公司需要压缩成本的时候,某些经理首先就会想到解雇你。有一家公司叫Salesforce,口号是"没有软件",意思就是如果经理们购买了他们的服务,就不再需要别的软件管理销售业务了,也就是说,不再需要自己雇佣程序员了。

正确的做法是,你应该把自己描述成与增加收入、降低成本有关系的人,比如"xx产品的开发者"或"改进者"。有一个Google Adsense程序员的自我介绍,是这样写的:"Google公司97%的收入,与我的代码有关。"

四、不要限定自己

(You are not defined by your chosen software stack)

年轻学生经常会问,应该选择哪种语言或平台?学会Java,是不是比学会.NET容易找工作?

过分强调某一种语言或平台,都是不必要的。如果你把自己限定为Java程序员或.NET程序员,你就已经输了,因为首先你不应该自称为程序员(理由见上一点),其次这种限定使得你自动被排除在世界上大多数编程工作之外。

现实生活中,学会一种新语言,只需要几个星期,然后再过半年到一年,你就会变成老手。那时,根本没人在乎你以前用什么语言。

天才程序员是很少的,可是需要天才程序员的工作机会却很多很多,大多数场合都是需求远远大于供给。这意味着,即使你不是天才程序员,只要你是一个优秀工程师,那些招聘公司也会立刻录用你,因为它们知道招聘到天才程序员的机会微乎其微。(重复一遍,所谓"优秀工程师",就是你的履历上有一连串增加收入、降低成本的记录。)

某些公司的人事部门,会根据某个关键词(比如Java或.NET)过滤简历。虽然这样的公司根本不值得去,但是如果你真的想过这一关,也很容易:投入几个晚上和周末,在你当前的项目中设法用到这个关键词,然后再把它写进简历就行了。

五、如何提高求职时的谈判能力?

(How do I become better at negotiation?)

(1)记住你不是在求职,不是在展示编程技巧,而是在推销某种商业需求(增加收入或降低成本)的解决方案。

(2)面试时,要有自信,要平等的对话。你要的是一个互利的录用合同,不要每次对方提出要求,你都说Yes。

(3)雇主可能会问"你的上一份工资是多少",他们其实在说"给我一个理由,压低你的报酬"。你要想好如何适当地回答这个问题。

(4)要还价。这里不仅仅指钱,还指其它你关心的方面。如果你无法要求更高的薪水,那就试着要求更多的假期。

(5)在对方决定录用你以后,才开始讨论薪水。因为那时,他们已经在你身上,投入了大量的时间和金钱,产生了一定的成本,此时他们可能觉得一些小问题已经不值得再纠缠了,比如每年的工资增加几千元。

六、创业公司是否适合应届毕业生?

(Are startups great for your career as a fresh graduate?)

如果你一毕业就加入创业公司,最可能的结果是,接下来几年你都工作得非常辛苦,然后公司悲惨地失败了,你失业了,不得不又去另一家创业公司工作。

如果你真的想去创业公司,应该首先找一家大公司干上两年,攒一点钱,积累一些经验,然后精心挑选后再去创业公司。

在创业公司工作,一般情况下,你遇到的都是创业者。他们大多数人没有能力在两年后雇佣你;而在大公司工作,你遇到的都是其他大公司的人,他们中很多人将来有能力雇用你或者帮你介绍工作。

七、在创业公司工作是否值得推荐?

(So would you recommend working at a startup? )

选择创业公司,就是选择一条职业道路,而不是选择一种生活方式。可惜很多人把这两者颠倒了,他们推荐创业公司,实际上是在推荐一种你感兴趣的生活方式。

如果你确实喜欢这种生活方式,老实说,你在大公司里也可以得到它们。在许许多多大公司里,你都有机会钻研最新的技术,而且还能5点半准时回家照顾孩子。

八、沟通技能是最重要的职业技能

(Your most important professional skill is communication)

前面说过,工程师被雇佣,不是因为会编程,而是因为能够创造商业价值。所以,你让人们相信你能创造价值,这是帮助你找到工作的最重要的能力。这种能力与你真的能创造多少价值,实际上联系不是很紧密。

我认识的一些最优秀的程序员,往往拙于表达。因此,别人不是不想与他们一起工作,就是低估了他们的价值。相反地,如果你看上去很会编程,并且很善于表达,别人就会真的这样看待你。

http://www.ruanyifeng.com/blog/2011/10/dont_call_yourself_a_programmer.html

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

程序员的几个建议 的相关文章

  • Linux 下静态链接库.a 和动态链接库.so 的生成

    1 库 所谓的库就是一种可执行代码的二进制形式 xff0c 可以被操作系统载入内存执行 2 静态库和动态库 静态库 a 文件的命名方式 xff1a libxxx a 库名前加 lib xff0c 后缀是 a 库名是 xxx 链接时间 xff
  • CSDN如何转载别人的博客

    在参考 如何快速转载CSDN中的博客 后 xff0c 由于自己不懂html以及markdown相关知识 xff0c 所以花了一些时间来弄明白怎么转载博客 xff0c 以下为转载CSDN博客步骤和一些知识小笔记 参考博客原址 xff1a ht
  • 你有一条linux命令学习之解压缩.tar .gz .xz .bz .zip

    下载的包解压还是压缩本地的包 xff0c 都要用到解压缩命令 1 tar tar命令生成的压缩包 1 命令语法 tar xcfvzjJ pathname tar file 2 参数 c 创建包 x 解压包 v 显示解压缩过程 f 指定包名
  • raspberry pi 3 ModelB 更换内核、文件系统初探

    1 镜像烧录 1 下载官方最新镜像 xff1a https www raspberrypi org downloads 2 Win32DiskImager烧录 xff1a https sourceforge net projects win
  • char类型与int类型的相互转换、

    相关知识 xff1a 1 计算机中的一个unsigned char型数据表示0 255 xff0c 而一个signed char型数据表示 128 43 127 xff0c 都是256的数字 这256个数字 xff0c 在计算机的存储单元都
  • 使用printf输出各种格式的字符串

    xfeff xfeff 分类 xff1a 43 43 主题 使用printf输出各种格式的字符串 日期 2004 06 29 43 43 1 原样输出字符串 printf 34 s 34 str 2 输出指定长度的
  • float型变量和“零值”比较的方法

    前一段时间读了一下林锐博士的 高质量C C 43 43 编程指南 xff0c 其中有一个比较经典的问题 请写出float x与 零值 比较的if语句 xff1f 当时只知道不能直接用float类型的值与0进行 61 61 或 61 比较 x
  • 全局变量和局部变量

    全局变量也称为外部变量 xff0c 它是在函数外部定义的变量 它不属于哪一个函数 xff0c 它属于一个源程序文件 其作用域是整个源程序 在函数中使用全局变量 xff0c 一般应作全局变量说明 只有在函数内经过说明的全局变量才能使用 但是在
  • c 内存管理

    其他相关链接 xff1a https blog csdn net wind19 article details 5964090 一 几个基本概念 在C语言中 xff0c 关于内存管理的知识点比较多 xff0c 如函数 变量 作用域 指针等
  • Springboot操作MongoDB,包括增改查及复杂操作

    单条件查询 使用BasicDBObject配置查询条件 List span class token generics function span class token punctuation lt span AbstractMongoEn
  • 搭建Spark实战环境(3台linux虚拟机集群)(一)样板机的搭建

    系统及软件配置 系统配置 内存 xff1a 16g 2400 cpu xff1a i5 9400F 软件配置 Windows 10 1903版本VMware workstation 15 10CentOS centos release 7
  • 独立个人项目开发心得 - 任务切分、挑战性、实用性和半途而废

    在写文章前容许我啰嗦一下 xff1a 对于软件开发 xff0c 我走了不少弯路 xff0c 有时觉得自己作为API侠 xff0c 无所不能 xff0c 有时又觉得自己很多LeetCode题写不出来 xff0c 无能为力 我有一个博客 xff
  • 传统软件服务器与游戏服务器架构区别

    项目智能客服爬虫SLG游戏语言javapythonkotlin模型异步事件驱动可能没什么模型可言actor模型传输协议httphttptcp 43 netty传输结构jsonjsonprotobuf数据库oracle xff0c redis
  • Linux C++ Socket实战

    本文主要介绍Linux C 43 43 基础Socket网络编程 大部分知识来自于网站 xff1a https www geeksforgeeks org socket programming cc Socket编程状态图 从图中可以看到
  • CSAPP第二章-信息的表示与处理-随手记

    仅作为学习 深入理解计算机系统 第二章时的笔记 xff0c 仅记录对自己有启发的部分 xff0c 不作为知识整理 xff08 直接看电子书就可以了 xff09 因为这本书知识点非常多 xff0c 所以我会抽时间多次阅读 xff0c 本文也会
  • Vue的路由配置及手动改地址栏为啥又跳转回来??

    vue cli xff08 vue脚手架 xff09 超详细教程 xff1a https blog csdn net wulala hei article details 85000530 这个教程里面是使用 vue init webpac
  • GPS卫星轨道

    GPS卫星轨道周期几乎是24小时 xff0c 而自己的卫星在太阳同步轨道上的周期大概是1 5个小时 xff0c 那么就是说太阳同步轨道已经绕几周了 xff0c GPS卫星才饶一周 所以当算多普勒频移的时候只需要算出GPS一个周期时间内的多普
  • 快速了解S7-1200 PLC的存储器及存储区的寻址方式

    S7 1200 PLC的存储器地址包括输入I 输出Q 位存储器M 数据块DB xff0c 以及本地或临时存储器L eg xff1a 标识存储区M0 0 MB0 MW0 MD0 分别是 B位 字节B 8位 字W 16位 双字D 32位 输入过
  • 网络编程之UDP简单示例

    UDP编程函数recvfrom inet pton sendto UDP协议 user data protrol 用户数据协议特点 xff1a TCP xff1a 面向连接 gt 一定双方连接上了才能进行通信 xff01 UDP xff1a
  • 微信开发(二)http请求工具类

    说明 进行微信开发 xff0c 后台程序需要与微信服务器进行交互 xff0c 通过调用接口来完成服务 xff0c 阅读微信开发文档 xff0c 发现接口的调用都是通过http请求进行的 xff0c 所以必须有个HttpUtil来支撑 xff

随机推荐

  • STM32寄存器与结构体

    piaolin 发表于 2015 9 30 01 02 只看该作者 倒序浏览 阅读模式 第16集 蜂鸣器实验 这个实验和流水灯是一样的 xff0c 只是将相对应的IO口拉高拉低即可控制蜂鸣器 值得注意的是电路设计方面 xff0c 根据视频描
  • 字节序

    1 字节序 字节序 xff0c 又称端序或尾序 xff0c 指的是多字节数据在内存中的存放顺序 例如一个int型变量x占用4个字节 xff0c 假设它的起始地址 amp x为0x10 xff0c 那么x将会被存储在 0x10 0x11 0x
  • extern “C“的作用及理解

    1 意图 extern 34 C 34 是C 43 43 特有的指令 xff08 C无法使用该指令 xff09 xff0c 目的在于支持C 43 43 与C混合编程 2 作用 extern C 的作用是告诉C 43 43 编译器用C规则编译
  • Linux命令 nautilus

    nautilus是GNOME桌面下的一个文件管理工具 通过这个命令我们可以在终端下非常方便的打开指定目录的文件 nautilus 命令后面一个 xff0c 表示当前目录 命令模式为 nautilus pwd支持绝对路径和相对路径两种方式 x
  • windows下C语言实现TCP通信

    编译器 xff1a vs2017 语言 xff1a c语言 具体的原理可以在其他博客看到 在我学习winsock编程时 xff0c 发现那些博客代码居然在我机器上没一个能运行 xff0c 可能是我水平有限 于是我根据winsock相关知识
  • 关于USB转串口型设备的latency问题

    USB转串口型设备在通讯时默认有16ms延时 xff0c 这在控制任务中往往是不能接受的 xff0c 为了改善这个情况需要改变latency的值为最小值1 在Windows环境下 xff0c 可以如下操作 xff1a 右键属性 端口设置 高
  • 航模lipo锂电池过放抢救/处理方式

    实验室用的tattu航模电池经常因为疏忽导致过放 xff0c 逐渐也摸索出来过放的抢救方法 当然最好的方法还是不要过放 xff1a xff09 1 首先是检查电池剩余电压 xff0c 用普通的电压表就可以了 xff0c 今天刚搞崩了了一块
  • 基于DCT+huffman变换的图像压缩解压缩FPGA实现

    目录 一 理论基础 二 verilog程序 三 仿真结果 一 理论基础 整个算法涉及到DCT变换和Huffman编码两个部分 其整体流程图如下所示 nbsp 这里 我们将做三个方面的工作
  • C++代码编译过程

    C 43 43 代码编译过程 源代码从生成到可执行文件可以分成四个步骤 xff1a 预处理 编译 汇编和链接 以下是linux下GCC生成一个可执行文件a out的过程 xff1a 一 预处理 预处理过程主要是处理那些源文件和头文件中以 开
  • Linux终端美化

    1 安装终端软件terminator 可自行选择 sudo apt get install terminator y 2 安装zsh sudo apt get install zsh y 3 安装oh my zsh sh c 34 curl
  • windows 7 浏览器无法进网站,提示安全证书存在问题(GlobalSign)

    下载更新包就行了kb4474419 http www catalog update microsoft com search aspx q 61 kb4474419
  • linux下共享库(.so文件)的调用

    需要的文件 libxxxx so xxxx h 记住 复制文件的时候千万不要用ROOT权限 xff0c 不然编译时会找不到这个共享库 最好时把库放到 usr lib chmod 777 chown username CMakeLists t
  • 3.RT-Thread线程的创建与删除,动态线程、静态进程

    在实际应用中 xff0c 经常添加多个 c 文件和 h 文件 xff0c RT Thread借助自动构建系统 Scon xff0c 它会自动添加你的 c和 h文件到你的工程中 xff0c Scon工具根据package kernel目录下的
  • Windows环境下使用VSCode和CMake学习Eigen库的使用

    YOUTUBE LINK https www youtube com watch v 61 wP4cwAtU g8 Eigen xff1a http eigen tuxfamily org index php title 61 Main P
  • Linux环境下使用 VScode + CMake +CMakeTools开发调试 C++ 程序

    插件 xff1a Bracket Pair Colorizer xff1a 括号颜色区分 C C 43 43 IntelliSense xff1a 代码提示 Chinese Simplified Language Pack for Visu
  • 四旋翼定高篇之惯导加速度+速度+位置三阶互补融合方案

    2017年03月13日 原文链接 四旋翼定高篇之惯导加速度 43 速度 43 位置三阶互补融合方案 笔者最近正在做四旋翼惯性导航的部分 xff0c 利用加速度计进行速度估计 位置估计 xff0c 从而实现四旋翼的垂直方向上的定高 水平方向上
  • x86_64 OpenWrt/LEDE 环境下使用mentohust配置锐捷上网共享网络

    OpenWrt 可以被描述为一个嵌入式的 Linux 发行版 xff08 主流路由器固件有 dd wrt tomato openwrt三类 xff09 对比一个单一的 静态的系统 xff0c OpenWrt的包管理提供了一个完全可写的文件系
  • 视觉SLAM14讲 第七讲 视觉里程计1

    C 43 43 代码 特征提取 xff1a 找出2张图片中相似的点 特征 xff1a 关键点 例如角点 xff0c 明暗变化大的点 43 描述子 记录的关键点的特征信息 xff0c 方向 xff0c 旋转 等 FAST特征点 xff1a 角
  • 基于FPGA的7x7矩阵求逆verilog开发

    up目录 一 理论基础 二 核心程序 三 测试结果 一 理论基础 nbsp nbsp nbsp nbsp 矩阵运算在科学计算 数字信号处理和图像处理等领域有着广泛的应用 上述应用领域的实时性要求很高 因此如何快速实现矩阵运算具有重要的意义
  • 程序员的几个建议

    注 xff1a 感觉这个文章说的挺有指导意义 每年都有无数年轻程序员 xff0c 加入软件行业 他们在学校里学过编程 xff0c 但是对这个行业的现实一无所知 Patrick McKenzie是美国一家小软件公司的老板 xff0c 他写了一