My Biggest Regret As A Programmer

本贴最后更新于 3180 天前,其中的信息可能已经时移世改

A little over 20 years ago I was at a crossroads. My second company was petering out when our 5 years of building Deltagraph for the publisher ended (they wanted to move into the nascent internet space). At that point I had 13 years experience as a programmer but also 9 years or so experience running a company (at the same time).

I no longer wanted to do both. My first company 85-87 not only built a new kind of spreadsheet program but also published it ourselves. I led the company, did all the press interviews, managed the investors, did all the usual business stuff and also was one of the three programmers and the UI designer. After we shipped the product in early 87 I also wound up in the hospital. Trying to be both leader and programmer was simply too much.

So at that point in 1994 I could have gone either into technical management or continued as a programmer. I chose programmer because it was easier. Today I now realize how wrong I was despite all the great stuff I’ve been able to work on and ship over the past 20 years. Going towards the CTO/CIO/VP Engineering route, which was fairly new back then, would have been a much better plan.

I was in the Bay area for a year around 1995 and worked at Apple for the last half. Apple looked to be falling apart and I left to return to Texas as I didn’t want to see my favorite company die around me. Big mistake.

Not only did Apple begin a huge turnaround a year later when Steve came back, but the whole Dotcom explosion happened. Being both an experienced programmer and leader who understood what it took to deliver (we did 9 major releases of the apps during my time, all of which I built the master floppies for, with no need for hot fixes which were hard to do then anyway) I can only imagine how in demand I could have been. Once you get to the level of one of those titles you can keep moving forward and up.

My sister started as a programmer 30 years ago but jumped into management within the first year and has been a VP at a big company for the past 15 or so years. The huge parent of the travel company I worked for a couple years ago had a CEO who started 15 years earlier as a programmer. Of course these types of jobs can be hard and unpleasant but for that the renumeration is way greater. My sister has 10X the assets I have.

Over the years I’ve seen how little ability you have as a programmer, no matter how good you are, at making a difference or changing things that are broken. I simply didn’t realize how little room you have to advance as just a programmer (or even architect or the like); the power to change exists at a level not available to you as a mere delivery device. Add to that the financial benefits, the higher likelihood of substantial IPO participation, and all the other things you gain access to, and being a programmer means you have to be happy with the opportunity to build cool things.

Over the years the worst places I’ve worked or helped as a consultant for those 5 or so years I did that were almost always due to inept, incompetent or downright idiotic technology management. There isn’t enough room in this blog to list them all.

Take the VP of engineering for a bank who remarked that he didn’t need to understand technology as he managed people, yet still made technology decisions. The CIO at the same place never believed anything his employees told him but believed everything vendors told him. Of course we knew he was taking kickbacks as we kept buying things we had no use for and he kept writing articles for them relating how wonderful their products were for us. Yet we used almost none of it. Some time after I left he was fired and perp-walked out of the company yet immediately got another similar CIO position.

The worst job I ever had started out as what I thought would be awesome. A post-startup had a successful niche in their industry; both they and their arch-rivals (different niche) both wanted to launch into a broader public market and the market was heating up. I was hired as a second programmer. The other programmer and manager had been hired to build a new broader online store as the existing one was too inflexible and slow for a big market. The company had zero technical leadership otherwise, the CEO and the other two founders had no technical experience or knowledge. The programmer constantly talked about how wonderful his backend code was and the manager supported him. I built a front end piece, put up demos, checked in my source every day. When I thought it a good time to integrate I discovered the other programmer after 10 months had checked in—nothing. When I pointed this out the manager said “he never checks in anything until it’s perfect”. Yet no one called this out as stupid other than me. I spent the next two months trying desperately to get the 3 founders to bring in people who could actually deliver (I knew several people) but they were afraid to make any changes and admit they had screwed up in hiring these two guys. Eventually I gave up and left.

A year later after still getting nothing from this guy they fired both of them. They tried to hire some consulting firm but got nothing from them either. By this time it was too late. The rivals? They became a billion dollar public company and I see their commercials on TV sometimes. I always want to throw a shoe at the TV when I see them. We had everything but a damn store and in reality actual technology leadership. If I had been such a person instead of a programmer I would have had the track record and clout to make it happen. But all I was was a programmer.

I could go on and on but the key is that you can’t make changes in how people do things in a technical sense unless you have the ability, the authority and the opportunity. Once you make that call and assuming you find the right places to grow, the sky is really the limit.

When I was on TV (Computer Chronicles) in early 1987 showing our product Trapeze the other presenter was Mike Slade who was product manager of Excel. At the time young me thought him some random marketing weenie (young people can be pretty stupid). Yet he started all these companies later including ESPN, worked for Apple in various leadership roles, was a good friend of Steve Jobs and started his own VC firm.

And today I am still just a programmer. Who’s the weenie now? I doubt I will ever be able to really retire. Thankfully I am still good at delivery (I was recruited into my present job by a former manager who needed what he knew I can do) but still all I will be until I croak is what I am now.

Being a programmer for nearly 35 years and still being able to get things done and ship is still fun and I’ve been able to work on amazing things over the years. But I can still feel the regret of not seeking the challenge of just leadership. In some ways programming was the easy choice. Given how close I got to the whole Dotcom timeframe, or even the return of Steve to Apple, and still had recent leadership experience, I could have been almost anything.

So yes I regret not taking that choice and seeing where it would have led me, yet I would have missed all the fun of writing code and the soul-draining jobs that often come with it where you can’t really fix anything.

I came to a fork in the road and took the one less traveled. Perhaps now I realize why.

source: http://thecodist.com/article/my-biggest-regret-as-a-programmer

  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    574 引用 • 3533 回帖
  • 遗憾
    2 引用 • 8 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • ss

    @Vanessa 一个愤世嫉俗的老程序员瞎掰掰。关于做程序员还是做管理纠结来纠结去。做了很久程序员就羡慕管理的,做了管理的觉得管理的人很傻就觉得还是程序员好。纠结来纠结去截止文章发稿,作者觉得还是程序员好一点,还是啥好?不知道现在改了没有。
    看看这个纠结劲:

    But I can still feel the regret of not seeking the challenge of just leadership. In some ways programming was the easy choice. Given how close I got to the whole Dotcom timeframe, or even the return of Steve to Apple, and still had recent leadership experience, I could have been almost anything.

    So yes I regret not taking that choice and seeing where it would have led me, yet I would have missed all the fun of writing code and the soul-draining jobs that often come with it where you can’t really fix anything.

    啊,真替他纠结啊,到老还惦记着 return of Steve to Apple 那件事。直接最适合做一个湿人了。

  • 其他回帖
  • ss

    原作者很的样子。

    When I started programming for money in 1981, there weren't a whole lot of choices to argue about. I started with Fortran but was also exposed to various assembly languages, Jovial (the precursor to Ada), Pascal and someone once handed me some sample code written in PL/1 which gave me a headache. I had used Basic and a little APL but that was pretty much it. I knew of Cobol, at least enough to run away. Most people just knew one and maybe a little assembly.

    ...

    When I started coding in C in 1985 I didn't change languages (other than a dab of 68000 assembly) for 10 years. Eventually C++ become an on-again-off-again lover. Objective-C came and went and came again bigtime. Java dominated for a while while Javascript waxed and wained and waxed so many times like some kind of Karate Kid metaphor. In the past decade I've dabbled in Ruby briefly, dissed PHP in this blog and then learned to appreciate it (this blog is still written in it) and then had people scream at me to run away.

    Of course I've longed to go deep functional with Haskell or Erlang or Scala or even Clojure but the brain isn't functional enough to add another language at this time. Someone pointed out Rust as a great language but I really wanted to learn Metal. Somehow I spent a swift time learning Swift but it kept mutating while I coded. Any more language puns and I will be Brainfucked.

    ...

    用过这么多编程语言语言:

    Fortran->PL/1->Basic/ APL->C->C++ ->java->javasrcipt->php-> Haskell or Erlang or Scala or even Clojure -> Metal ->Swift

    结论:

    You could give up programming languages entirely except for APL. I guarantee once you master APL your brain will explode and the problem will be solved without exception.

  • 转管理后,静静的写下代码就是一种享受

  • @Vanessa http://blog.jobbole.com/99428/ 这里有翻译,不允许转载,直接贴链接了。。。

  • 查看全部回帖

推荐标签 标签

  • 书籍

    宋真宗赵恒曾经说过:“书中自有黄金屋,书中自有颜如玉。”

    78 引用 • 391 回帖
  • Dubbo

    Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,是 [阿里巴巴] SOA 服务化治理方案的核心框架,每天为 2,000+ 个服务提供 3,000,000,000+ 次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。

    60 引用 • 82 回帖 • 603 关注
  • DNSPod

    DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。

    6 引用 • 26 回帖 • 518 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    354 引用 • 1823 回帖 • 1 关注
  • 尊园地产

    昆明尊园房地产经纪有限公司,即:Kunming Zunyuan Property Agency Company Limited(简称“尊园地产”)于 2007 年 6 月开始筹备,2007 年 8 月 18 日正式成立,注册资本 200 万元,公司性质为股份经纪有限公司,主营业务为:代租、代售、代办产权过户、办理银行按揭、担保、抵押、评估等。

    1 引用 • 22 回帖 • 772 关注
  • TensorFlow

    TensorFlow 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即张量(tensor)。

    20 引用 • 19 回帖 • 1 关注
  • 架构

    我们平时所说的“架构”主要是指软件架构,这是有关软件整体结构与组件的抽象描述,用于指导软件系统各个方面的设计。另外还有“业务架构”、“网络架构”、“硬件架构”等细分领域。

    142 引用 • 442 回帖
  • Flume

    Flume 是一套分布式的、可靠的,可用于有效地收集、聚合和搬运大量日志数据的服务架构。

    9 引用 • 6 回帖 • 637 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 400 关注
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 653 关注
  • Mac

    Mac 是苹果公司自 1984 年起以“Macintosh”开始开发的个人消费型计算机,如:iMac、Mac mini、Macbook Air、Macbook Pro、Macbook、Mac Pro 等计算机。

    166 引用 • 595 回帖
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    12 引用 • 65 回帖 • 446 关注
  • 区块链

    区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。

    91 引用 • 751 回帖 • 1 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    70 引用 • 193 回帖 • 416 关注
  • 反馈

    Communication channel for makers and users.

    123 引用 • 913 回帖 • 250 关注
  • Kotlin

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,由 JetBrains 设计开发并开源。Kotlin 可以编译成 Java 字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行。在 Google I/O 2017 中,Google 宣布 Kotlin 成为 Android 官方开发语言。

    19 引用 • 33 回帖 • 63 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    88 引用 • 1235 回帖 • 410 关注
  • 代码片段

    代码片段分为 CSS 与 JS 两种代码,添加在 [设置 - 外观 - 代码片段] 中,这些代码会在思源笔记加载时自动执行,用于改善笔记的样式或功能。

    用户在该标签下分享代码片段时需在帖子标题前添加 [css] [js] 用于区分代码片段类型。

    90 引用 • 562 回帖 • 1 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 75 关注
  • 钉钉

    钉钉,专为中国企业打造的免费沟通协同多端平台, 阿里巴巴出品。

    15 引用 • 67 回帖 • 335 关注
  • Vim

    Vim 是类 UNIX 系统文本编辑器 Vi 的加强版本,加入了更多特性来帮助编辑源代码。Vim 的部分增强功能包括文件比较(vimdiff)、语法高亮、全面的帮助系统、本地脚本(Vimscript)和便于选择的可视化模式。

    29 引用 • 66 回帖 • 2 关注
  • 工具

    子曰:“工欲善其事,必先利其器。”

    288 引用 • 734 回帖
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    26 引用 • 196 回帖 • 17 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 50 关注
  • V2Ray
    1 引用 • 15 回帖 • 1 关注
  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    123 引用 • 74 回帖 • 2 关注
  • React

    React 是 Facebook 开源的一个用于构建 UI 的 JavaScript 库。

    192 引用 • 291 回帖 • 370 关注