檔案狀態:    住戶編號:3390330
 amanda 的日記本
快速選單
到我的日記本
看他的最新日記
加入我的收藏
瀏覽我的收藏
分.師的工作技能 《前一篇 回她的日記本 後一篇》 千里馬的悲劇
 切換閱讀模式  回應  給他日記貼紙   給他愛的鼓勵  檢舉
篇名: 不要自稱程式設計師,老鳥的 9
作者: amanda 日期: 2013.08.04  天氣:  心情:
不要自稱程式設計師,老鳥的 9 個職涯建言
Don t Call Yourself A Programmer, And Other Career Advice
http://kevingo75.blogspot.tw/2012/01/9.html
http://sslab.co/content/bu-yao-zi-cheng-cheng-shi-she-ji-shi-lao-niao-de-9-ge-zhi-ya-jian-yan
http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/

不要自稱程式設計師,老鳥的 9 個職涯建言

由 lyhcode 在 週一, 11/07/2011 - 15:56 發表
原文標題: Don’t Call Yourself A Programmer, And Other Career Advice (原文連結)

如果有一門課,我能將它加到任何工程相關的學程,它將不會涉及編譯器、閘道或時間複雜度。 這門課的名稱可能是 不可不知的產業真實面 ;我們從來不教這門課,結果造成許多苦難。 若你將成為年輕的工程師,這篇文章就是你的「讀我檔案(README)」文件。 這邊文章告訴你那些學校沒有教的事,讓你知道「真實世界」實際如何運作,目的是讓你能夠快樂工作。 從缺乏自信及商務知識的工程師開始,我大概花了十年的歲月,經歷很多次的痛苦,才能明白這些。 我並不覺得這篇文章會是終極指南,但希望能告訴你那些大學職涯中心沒有講的事。

九成的程式設計工作來自企業內部軟體

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

從經濟學的觀點:任何東西(包括你)的價格,都是以它的供給和需求計算出來。 我們先來談需求面。 大部分的軟體,都不是公開販售、透過網際網路發行,或是從線上應用程式商店(App Store)下載。 多數的軟體來自企業內部需求、解決營運問題,例如追踪費用、最佳化運送成本、協助會計部門、設計新組件、計算保單價格、識別詐欺訂單等。 各式各樣的商業公司,開發內部軟體,解決它們自己的問題。市場上對程式設計師的大部分需求來源於此,只有極少數程式設計師直接開發銷售給外部顧客的軟體。 內部軟體的開發,通常非常乏味,令人厭倦。因為它們的技術複雜性低、技術決策非常保守、預算很少、缺乏長遠考慮。但是,世界上大部分程式設計工作都是這種。

軟體經常用於解決商業問題,不管它是多麼無趣或沒技術可言。 以公司內部的出差費用單為例,對於有 2,000 名員工的企業,紙上作業在電子化之後,可能節省每年 5,000 工時,以每小時 50 美元的成本計算,就可以省下每年 $250,000 的開支。 出差表單可能只是全世界最簡單的 CURD 程式,但如果它能夠為公司節省成本或增加收入,它就很重要。

公司僱用你是為了創造商業價值,不是讓你恣意寫程式

(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)

年輕工程師透過 Twitter 向我詢問職涯問題時,許多人問的是關於該學什麼程式語言或平台(例如 Java 或 .NET?),其實這無關緊要。

Java 的程式設計師,是否比 .NET 的程式設計師賺更多錢?爭論的人總是說 Java 或 .NET 程式設計師已經有一大票; 若你認真就輸了,因為 (1) 你不該把自己定義為程式設計師(理由請看上一節), (2) 執著這種無意義的辯論,對於從事程式設計工作毫無建樹。 現實生活中,不管學哪一種程式語言,通常只要幾個星期就能上手,再過個一年半載,當你成為老鳥,就沒人在乎你用什麼語言了。 最近我在 2010 年 3 月,用癡肥醜陋的 Java EE 開發網站後端系統,請相信我,根本沒人在乎我用什麼技術開發。 如果用 Python 的公司想找技術高手幫公司賺一大筆錢,即使我從不寫任何一行 Python 程式碼,也同樣能夠勝任。

天才型的工程師很稀少,在就業市場根本供不應求。 在 Matasano 公司每個人都會用 Ruby,但儘管你不是天才,只要你是優秀的工程師,他們還是願意錄用你。 (優秀的工程師的履歷,就是一連串幫公司增加收入和降低成本的事蹟。) Fog Creek 公司幾乎都用微軟平台,但儘管我無法拼寫「ASP.NET」這專有名詞,他們還是錄用我。

有些公司的人資部門招聘制度很差勁,如果你的履歷缺少一些關鍵字(如 Java 或 .NET),他們甚至不會找你去面試。 你應該不會想去這些有病的公司,但如果你真的想去,你還是可以花幾個晚上或週末時間, 把那些「熱門就業關鍵字」補寫到履歷中,也可以修改一下手邊的專案,讓你的經歷和那些詞彙扯上邊。 如果你想在一家用 .NET 的公司學 Ruby,那就用 Ruby 完成那種一次性的專案, 接著你就成為專業 Ruby 程式設計師,因為你用 Ruby 寫程式,而公司也為此付給你薪水。 (好笑嗎?我在用 Java 的公司這樣做,以 Ruby 寫個小專案,幫公司賺了 $30,000 美元,我的老闆很高興,而且可以預料的,他根本從來沒問過我用什麼技術開發。)

同事和主管不會一直是你的朋友

(Co-workers and bosses are not usually your friends)

你花了很多時間和同事在一起,你和其中幾位可能變成很要好的朋友,通常在這三年,你為維持親切的關係,邀請他們共進晚餐,而他們也同樣邀請你。 你認識的每個人,都會覺得你是個不錯的人,這對你的人際關係很有幫助;但是,可別妄想每個人都是你的朋友。

舉例來說,你在求職面試時,正在和一位看起來和藹可親的 28 歲主管談話,他看起來有點像幾年後的你。 但你畢竟不是他的朋友,面試官只是試著想幫公司用最便宜的價格把你招募進來。 也許討論魔獸爭霸讓你覺得彼此之間存在某種情誼, 但事實上面試官真正要做的事情,雖然合乎常理,卻是你真正的朋友不可能做的, 像是希望你對薪資的要求能降低個幾千塊; 或是要你多為公司付出一些時間,而減少跟真正的朋友在一起的時間。 你會有其他待人親切、好相處的同事們,開始建議你做一些你不是很想做的事情,例如「我需要從你剛完成的這個專案多拿到一些績效」,甚至「我們必須一起完成這件事情,雖然對你沒什麼好處,但是對我的目標達成很重要」。 當這些事情發生時,可別太訝異!

別過度評價競爭者的平均技能

(You radically overestimate the average skill of the competition because of the crowd you hang around with)

許多人已經成功晉升資深工程師,卻無法正確實作 FizzBuzz 。想想看:你或許已經可以去那些你自認不夠資格應徵的公司工作,他們雖然聘用比較厲害的麻瓜,但依然是麻瓜。

看徵才廣告求職成功是一場意外

(“Read ad. Send in resume. Go to job interview. Receive offer.” is the exception, not the typical case, for getting employment)

很多工作從來不公開招募,多數值得被聘用的人也不公開求職(參考約耳談軟體的 文章)。 職缺的資訊可以很快用電子郵件傳遞,當某家公司的決策者知道他需要找誰,只要透過他的朋友或生意夥伴,他們其中會有人認識這位要找的人,可能是家人、大學室友、會議中結識或過去的同事等。 約出來見面晤談,達成工作協議後,再交給人資部門正式聘用即可。

對於大多數你想要得到的工作,「新創公司的第一位員工」實際上很難讓你的履歷可以被人資部門接受,只有兩個人的新創公司,對於人資部門來說並不算正式的工作經歷。 (你不會想成為新創公司的第一位員工,但你可以當最後一位共同創辦人。) 想要成為 Googler 的一份子嗎?只要你像其他 Googler 一樣工作,他們會有正式的程序,可以助你一臂之力。 (他們也有許多非正式的管道,給有機會成為 Googler 的你,例如:將你正在工作的公司買下來。當你被幾億美元的資金圍繞,就會有很多有趣的選項來解決問題。)

有許多理由可以說明為何求才都是私下進行,其中一點是公開求才會收到數以百計的大量履歷轟炸(特別是目前的景氣狀況下),包括許多根本不適合這項職缺的人。 另外一點是,如果你對要找的人沒有更進一步的認識,很可能找來一位平庸的資深工程師(non-FizzBuzzer)。

譯註:你可以創業,或是和別人一起創業,當個共同創辦人,實際創業的經驗會讓你學習到非常多;但是請避免在一家只有兩人的新創公司當員工,因為員工和創辦人是不同的心態,當一家公司還沒有任何規模,而你就只想當一位員工,那對你的履歷沒有加分效果,甚至你要避免在履歷上面出現這種工作經驗。
譯註:如果你想在優秀的軟體公司工作,儘管現在的公司差強人意,但最好的方法是,當下就開始學習用優秀軟體公司的方法工作,當你成為優秀的軟體開發者,你將有機會進入優秀的公司,或是你的公司被優秀的軟體公司買下,總之你有機會變成一份子。
如何提高求職時的談判能力?

(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)

前面說過,工程師被雇傭,不是因為會編程,而是因為能夠創造商業價值。所以,你讓人們相信你能創造價值,這是幫助你找到工作的最重要的能力。這種能力與你真的能創造多少價值,實際上聯繫不是很緊密。 我認識的一些最優秀的程序員,往往拙於表達。因此,別人不是不想與他們一起工作,就是低估了他們的價值。相反地​​,如果你看上去很會編程,並且很善於表達,別人就會真的這樣看待你。

- See more at: http://sslab.co/content/bu-yao-zi-cheng-cheng-shi-she-ji-shi-lao-niao-de-9-ge-zhi-ya-jian-yan#sthash.7c3QHar3.dpuf


---------------------------------------------

Don t Call Yourself A Programmer, And Other Career Advice
Posted on October 28, 2011 by Patrick in Uncategorized

If there was one course I could add to every engineering education, it wouldn’t involve compilers or gates or time complexity. It would be Realities Of Your Industry 101, because we don’t teach them and this results in lots of unnecessary pain and suffering. This post aspires to be README.txt for your career as a young engineer. The goal is to make you happy, by filling in the gaps in your education regarding how the “real world” actually works. It took me about ten years and a lot of suffering to figure out some of this, starting from “fairly bright engineer with low self-confidence and zero practical knowledge of business.” I wouldn’t trust this as the definitive guide, but hopefully it will provide value over what your college Career Center isn’t telling you.

90% of programming jobs are in creating Line of Business software: Economics 101: the price for anything (including you) is a function of the supply of it and demand for it. Let’s talk about the demand side first. Most software is not sold in boxes, available on the Internet, or downloaded from the App Store. Most software is boring one-off applications in corporations, under-girding every imaginable facet of the global economy. It tracks expenses, it optimizes shipping costs, it assists the accounting department in preparing projections, it helps design new widgets, it prices insurance policies, it flags orders for manual review by the fraud department, etc etc. Software solves business problems. Software often solves business problems despite being soul-crushingly boring and of minimal technical complexity. For example, consider an internal travel expense reporting form. Across a company with 2,000 employees, that might save 5,000 man-hours a year (at an average fully-loaded cost of $50 an hour) versus handling expenses on paper, for a savings of $250,000 a year. It does not matter to the company that the reporting form is the world’s simplest CRUD app, it only matters that it either saves the company costs or generates additional revenue.

There are companies which create software which actually gets used by customers, which describes almost everything that you probably think of when you think of software. It is unlikely that you will work at one unless you work towards making this happen. Even if you actually work at one, many of the programmers there do not work on customer-facing software, either.

Engineers are hired to create business value, not to program things: Businesses do things for irrational and political reasons all the time (see below), but in the main they converge on doing things which increase revenue or reduce costs. Status in well-run businesses generally is awarded to people who successfully take credit for doing one of these things. (That can, but does not necessarily, entail actually doing them.) The person who has decided to bring on one more engineer is not doing it because they love having a geek around the room, they are doing it because adding the geek allows them to complete a project (or projects) which will add revenue or decrease costs. Producing beautiful software is not a goal. Solving complex technical problems is not a goal. Writing bug-free code is not a goal. Using sexy programming languages is not a goal. Add revenue. Reduce costs. Those are your only goals.

Peter Drucker — you haven’t heard of him, but he is a prophet among people who sign checks — came up with the terms Profit Center and Cost Center. Profit Centers are the part of an organization that bring in the bacon: partners at law firms, sales at enterprise software companies, “masters of the universe” on Wall Street, etc etc. Cost Centers are, well, everybody else. You really want to be attached to Profit Centers because it will bring you higher wages, more respect, and greater opportunities for everything of value to you. It isn’t hard: a bright high schooler, given a paragraph-long description of a business, can usually identify where the Profit Center is. If you want to work there, work for that. If you can’t, either a) work elsewhere or b) engineer your transfer after joining the company.

Engineers in particular are usually very highly paid Cost Centers, which sets MBA’s optimization antennae to twitching. This is what brings us wonderful ideas like outsourcing, which is “Let’s replace really expensive Cost Centers who do some magic which we kinda need but don’t really care about with less expensive Cost Centers in a lower wage country”. (Quick sidenote: You can absolutely ignore outsourcing as a career threat if you read the rest of this guide.) Nobody ever outsources Profit Centers. Attempting to do so would be the setup for MBA humor. It’s like suggesting replacing your source control system with a bunch of copies maintained on floppy disks.

Don’t call yourself a programmer: “Programmer” sounds like “anomalously high-cost peon who types some mumbo-jumbo into some other mumbo-jumbo.” If you call yourself a programmer, someone is already working on a way to get you fired. You know Salesforce, widely perceived among engineers to be a Software as a Services company? Their motto and sales point is “No Software”, which conveys to their actual customers “You know those programmers you have working on your internal systems? If you used Salesforce, you could fire half of them and pocket part of the difference in your bonus.” (There’s nothing wrong with this, by the way. You’re in the business of unemploying people. If you think that is unfair, go back to school and study something that doesn’t matter.)

Instead, describe yourself by what you have accomplished for previously employers vis-a-vis increasing revenues or reducing costs. If you have not had the opportunity to do this yet, describe things which suggest you have the ability to increase revenue or reduce costs, or ideas to do so.

There are many varieties of well-paid professionals who sling code but do not describe themselves as slinging code for a living. Quants on Wall Street are the first and best-known example: they use computers and math as a lever to make high-consequence decisions better and faster than an unaided human could, and the punchline to those decisions is “our firm make billions of dollars.” Successful quants make more in bonuses in a good year than many equivalently talented engineers will earn in a decade or lifetime.

Similarly, even though you might think Google sounds like a programmer-friendly company, there are programmers and then there’s the people who are closely tied to 1% improvements in AdWords click-through rates. (Hint: provably worth billions of dollars.) I recently stumbled across a web-page from the guy whose professional bio is “wrote the backend billing code that 97% of Google’s revenue passes through.” He’s now an angel investor (a polite synonym for “rich”).

You are not defined by your chosen software stack: I recently asked via Twitter what young engineers wanted to know about careers. Many asked how to know what programming language or stack to study. It doesn’t matter. There you go.

Do Java programmers make more money than .NET programmers? Anyone describing themselves as either a Java programmer or .NET programmer has already lost, because a) they’re a programmer (you’re not, see above) and b) they’re making themselves non-hireable for most programming jobs. In the real world, picking up a new language takes a few weeks of effort and after 6 to 12 months nobody will ever notice you haven’t been doing that one for your entire career. I did back-end Big Freaking Java Web Application development as recently as March 2010. Trust me, nobody cares about that. If a Python shop was looking for somebody technical to make them a pile of money, the fact that I’ve never written a line of Python would not get held against me.

Talented engineers are rare — vastly rarer than opportunities to use them — and it is a seller’s market for talent right now in almost every facet of the field. Everybody at Matasano uses Ruby. If you don’t, but are a good engineer, they’ll hire you anyway. (A good engineer has a track record of — repeat after me — increasing revenue or decreasing costs.) Much of Fog Creek uses the Microsoft Stack. I can’t even spell ASP.NET and they’d still hire me.

There are companies with broken HR policies where lack of a buzzword means you won’t be selected. You don’t want to work for them, but if you really do, you can add the relevant buzzword to your resume for the costs of a few nights and weekends, or by controlling technology choices at your current job in such a manner that in advances your career interests. Want to get trained on Ruby at a .NET shop? Implement a one-off project in Ruby. Bam, you are now a professional Ruby programmer — you coded Ruby and you took money for it. (You laugh? I did this at a Java shop. The one-off Ruby project made the company $30,000. My boss was, predictably, quite happy and never even asked what produced the deliverable.)

Co-workers and bosses are not usually your friends: You will spend a lot of time with co-workers. You may eventually become close friends with some of them, but in general, you will move on in three years and aside from maintaining cordial relations you will not go out of your way to invite them over to dinner. They will treat you in exactly the same way. You should be a good person to everyone you meet — it is the moral thing to do, and as a sidenote will really help your networking — but do not be under the delusion that everyone is your friend.

For example, at a job interview, even if you are talking to an affable 28 year old who feels like a slightly older version of you he is in a transaction. You are not his friend, you are an input for an industrial process which he is trying to buy for the company at the lowest price. That banter about World of Warcraft is just establishing a professional rapport, but he will (perfectly ethically) attempt to do things that none of your actual friends would ever do, like try to talk you down several thousand dollars in salary or guilt-trip you into spending more time with the company when you could be spending time with your actual friends. You will have other coworkers who — affably and ethically — will suggest things which go against your interests, from “I should get credit for that project you just did” (probably not phrased in so many words) to “We should do this thing which advances my professional growth goals rather than yours.” Don’t be surprised when this happens.

You radically overestimate the average skill of the competition because of the crowd you hang around with: Many people already successfully employed as senior engineers cannot actually implement FizzBuzz. Just read it and weep. Key takeaway: you probably are good enough to work at that company you think you’re not good enough for. They hire better mortals, but they still hire mortals.

“Read ad. Send in resume. Go to job interview. Receive offer.” is the exception, not the typical case, for getting employment: Most jobs are never available publicly, just like most worthwhile candidates are not available publicly (see here). Information about the position travels at approximately the speed of beer, sometimes lubricated by email. The decisionmaker at a company knows he needs someone. He tells his friends and business contacts. One of them knows someone — family, a roommate from college, someone they met at a conference, an ex-colleague, whatever. Introductions are made, a meeting happens, and they achieve agreement in principle on the job offer. Then the resume/HR department/formal offer dance comes about.

This is disproportionately true of jobs you actually want to get. ”First employee at a successful startup” has a certain cachet for a lot of geeks, and virtually none of those got placed by sending in a cover letter to an HR department, in part because two-man startups don’t have enough scar tissue to form HR departments yet. (P.S. You probably don’t want to be first employee for a startup. Be the last co-founder instead.) Want to get a job at Googler? They have a formal process for giving you a leg up because a Googler likes you. (They also have multiple informal ways for a Googler who likes you an awful lot to short-circuit that process. One example: buy the company you work for. When you have a couple of billion lying around you have many interesting options for solving problems.)

There are many reasons why most hiring happens privately. One is that publicly visible job offers get spammed by hundreds of resumes (particularly in this economy) from people who are stunningly inappropriate for the position. The other is that other companies are so bad at hiring that, if you don’t have close personal knowledge about the candidate, you might accidentally hire a non-FizzBuzzer.

Networking: it isn’t just for TCP packets: Networking just means a) meeting people who at some point can do things for you (or vice versa) and b) making a favorable impression on them.

There are many places to meet people. Events in your industry, such as conferences or academic symposia which get seen by non-academics, are one. User groups are another. Keep in mind that user groups draw a very different crowd than industry conferences and optimize accordingly.

Strive to help people. It is the right thing to do, and people are keenly aware of who have in the past given them or theirs favors. If you ever can’t help someone but know someone who can, pass them to the appropriate person with a recommendation. If you do this right, two people will be happy with you and favorably disposed to helping you out in the future.

You can meet people over the Internet (oh God, can you), but something in our monkey brains makes in-the-flesh meeting a bigger thing. I’ve Internet-met a great many people who I’ve then gone on to meet in real life. The physical handshake is a major step up in the relationship, even when Internet-meeting lead to very consequential things like “Made them a lot of money through good advice.” Definitely blog and participate on your industry-appropriate watering holes like HN, but make it out to the meetups for it.

Academia is not like the real world: Your GPA largely doesn’t matter (modulo one high profile exception: a multinational advertising firm). To the extent that it does matter, it only determines whether your resume gets selected for job interviews. If you’re reading the rest of this, you know that your resume isn’t the primary way to get job interviews, so don’t spend huge amount of efforts optimizing something that you either have sufficiently optimized already (since you’ll get the same amount of interviews at 3.96 as you will at 3.8) or that you don’t need at all (since you’ll get job interviews because you’re competent at asking the right people to have coffee with you).

Your major and minor don’t matter. Most decisionmakers in industry couldn’t tell the difference between a major in Computer Science and a major in Mathematics if they tried. I was once reduced to tears because a minor academic snafu threatened my ability to get a Bachelor of Science with a major in Computer Science, which my advisor told me was more prestigious than a Bachelor of Science in Computer Science. Academia cares about distinctions like that. The real world does not.

Your professors might understand how the academic job market works (short story: it is ridiculously inefficient in engineering and fubared beyond mortal comprehension in English) but they often have quixotic understandings of how the real world works. For example, they may push you to get extra degrees because a) it sounds like a good idea to them and b) they enjoy having research-producing peons who work for ramen. Remember, market wages for people capable of producing research are $80~100k+++ in your field. That buys an awful lot of ramen.

The prof in charge of my research project offered me a spot in his lab, a tuition waiver, and a whole $12,000 dollars as a stipend if I would commit 4~6 years to him. That’s a great deal if, and only if, you have recently immigrated from a low-wage country and need someone to intervene with the government to get you a visa.

If you really like the atmosphere at universities, that is cool. Put a backpack on and you can walk into any building at any university in the United States any time you want. Backpacks are a lot cheaper than working in academia. You can lead the life of the mind in industry, too — and enjoy less politics and better pay. You can even get published in journals, if that floats your boat. (After you’ve escaped the mind-warping miasma of academia, you might rightfully question whether Published In A Journal is really personally or societally significant as opposed to close approximations like Wrote A Blog Post And Showed It To Smart People.)

How much money do engineers make?

Wrong question. The right question is “What kind of offers do engineers routinely work for?”, because salary is one of many levers that people can use to motivate you. The answer to this is, less than helpfully, “Offers are all over the map.”

In general, big companies pay more (money, benefits, etc) than startups. Engineers with high perceived value make more than those with low perceived value. Senior engineers make more than junior engineers. People working in high-cost areas make more than people in low-cost areas. People who are skilled in negotiation make more than those who are not.

We have strong cultural training to not ask about salary, ever. This is not universal. In many cultures, professional contexts are a perfectly appropriate time to discuss money. (If you were a middle class Japanese man, you could reasonably be expected to reveal your exact salary to a 2nd date, anyone from your soccer club, or the guy who makes your sushi. If you owned a company, you’d probably be cagey about your net worth but you’d talk about employee salaries the way programmers talk about compilers — quite frequently, without being embarrassed.) If I were a Marxist academic or a conspiracy theorist, I might think that this bit of middle class American culture was specifically engineered to be in the interests of employers and against the interests of employees. Prior to a discussion of salary at any particular target employer, you should speak to someone who works there in a similar situation and ask about the salary range for the position. It is <%= Date.today.year %>; you can find these people online. (LinkedIn, Facebook, Twitter, and your (non-graph-database) social networks are all good to lean on.)

Anyhow. Engineers are routinely offered a suite of benefits. It is worth worrying, in the United States, about health insurance (traditionally, you get it and your employer foots most or all of the costs) and your retirement program, which is some variant of “we will match contributions to your 401k up to X% of salary.” The value of that is easy to calculate: X% of salary. (It is free money, so always max out your IRA up to the employer match. Put it in index funds and forget about it for 40 years.)

There are other benefits like “free soda”, “catered lunches”, “free programming books”, etc. These are social signals more than anything else. When I say that I’m going to buy you soda, that says a specific thing about how I run my workplace, who I expect to work for me, and how I expect to treat them. (It says “I like to move the behavior of unsophisticated young engineers by making this job seem fun by buying 20 cent cans of soda, saving myself tens of thousands in compensation while simultaneously encouraging them to ruin their health.” And I like soda.) Read social signals and react appropriately — someone who signals that, e.g., employee education is worth paying money for might very well be a great company to work for — but don’t give up huge amounts of compensation in return for perks that you could trivially buy.

How do I become better at negotiation? This could be a post in itself. Short version:

a) Remember you’re selling the solution to a business need (raise revenue or decrease costs) rather than programming skill or your beautiful face.

b) Negotiate aggressively with appropriate confidence, like the ethical professional you are. It is what your counterparty is probably doing. You’re aiming for a mutual beneficial offer, not for saying Yes every time they say something.

c) ”What is your previous salary?” is employer-speak for “Please give me reasons to pay you less money.” Answer appropriately.

d) Always have a counteroffer. Be comfortable counteroffering around axes you care about other than money. If they can’t go higher on salary then talk about vacation instead.

e) The only time to ever discuss salary is after you have reached agreement in principle that they will hire you if you can strike a mutually beneficial deal. This is late in the process after they have invested a lot of time and money in you, specifically, not at the interview. Remember that there are large costs associated with them saying “No, we can’t make that work” and, appropriately, they will probably not scuttle the deal over comparatively small issues which matter quite a bit to you, like e.g. taking their offer and countering for that plus a few thousand bucks then sticking to it.

f) Read a book. Many have been written about negotiation. I like Getting To Yes. It is a little disconcerting that negotiation skills are worth thousands of dollars per year for your entire career but engineers think that directed effort to study them is crazy when that could be applied to trivialities about a technology that briefly caught their fancy.

How to value an equity grant:

Roll d100. (Not the right kind of geek? Sorry. rand(100) then.)

0~70: Your equity grant is worth nothing.

71~94: Your equity grant is worth a lump sum of money which makes you about as much money as you gave up working for the startup, instead of working for a megacorp at a higher salary with better benefits.

95~99: Your equity grant is a lifechanging amount of money. You won’t feel rich — you’re not the richest person you know, because many of the people you spent the last several years with are now richer than you by definition — but your family will never again give you grief for not having gone into $FAVORED_FIELD like a proper $YOUR_INGROUP.

100: You worked at the next Google, and are rich beyond the dreams of avarice. Congratulations.

Perceptive readers will note that 100 does not actually show up on a d100 or rand(100).

Why are you so negative about equity grants?

Because you radically overestimate the likelihood that your startup will succeed and radically overestimate the portion of the pie that will be allocated to you if the startup succeeds. Read about dilution and liquidation preferences on Hacker News or Venture Hacks, then remember that there are people who know more about negotiating deals than you know about programming and imagine what you could do to a program if there were several hundred million on the line.

Are startups great for your career as a fresh graduate?

The high-percentage outcome is you work really hard for the next couple of years, fail ingloriously, and then be jobless and looking to get into another startup. If you really wanted to get into a startup two years out of school, you could also just go work at a megacorp for the next two years, earn a bit of money, then take your warchest, domain knowledge, and contacts and found one.

Working at a startup, you tend to meet people doing startups. Most of them will not be able to hire you in two years. Working at a large corporation, you tend to meet other people in large corporations in your area. Many of them either will be able to hire you or will have the ear of someone able to hire you in two years.

So would you recommend working at a startup? Working in a startup is a career path but, more than that, it is a lifestyle choice. This is similar to working in investment banking or academia. Those are three very different lifestyles. Many people will attempt to sell you those lifestyles as being in your interests, for their own reasons. If you genuinely would enjoy that lifestyle, go nuts. If you only enjoy certain bits of it, remember that many things are available a la carte if you really want them. For example, if you want to work on cutting-edge technology but also want to see your kids at 5:30 PM, you can work on cutting-edge technology at many, many, many megacorps.

(Yeah, really. If it creates value for them, heck yes, they’ll invest in it. They’ll also invest in a lot of CRUD apps, but then again, so do startups — they just market making CRUD apps better than most megacorps do. The first hour of the Social Network is about making a CRUD app seem like sexy, the second is a Lifetime drama about a divorce improbably involving two heterosexual men.)

Your most important professional skill is communication: Remember engineers are not hired to create programs and how they are hired to create business value? The dominant quality which gets you jobs is the ability to give people the perception that you will create value. This is not necessarily coextensive with ability to create value.

Some of the best programmers I know are pathologically incapable of carrying on a conversation. People disproportionately a) wouldn’t want to work with them or b) will underestimate their value-creation ability because they gain insight into that ability through conversation and the person just doesn’t implement that protocol. Conversely, people routinely assume that I am among the best programmers they know entirely because a) there exists observable evidence that I can program and b) I write and speak really, really well.

(Once upon a time I would have described myself as “Slightly below average” in programming skill. I have since learned that I had a radically skewed impression of the skill distribution, that programming skill is not what people actually optimize for, and that modesty is against my interests. These days if you ask me how good of a programmer I am I will start telling you stories about how I have programmed systems which helped millions of kids learn to read or which provably made companies millions. The question of where I am on the bell curve matters to no one, so why bother worrying about it?)

Communication is a skill. Practice it: you will get better. One key sub-skill is being able to quickly, concisely, and confidently explain how you create value to someone who is not an expert in your field and who does not have a priori reasons to love you. If when you attempt to do this technical buzzwords keep coming up (“Reduced 99th percentile query times by 200 ms by optimizing indexes on…”), take them out and try again. You should be able to explain what you do to a bright 8 year old, the CFO of your company, or a programmer in a different specialty, at whatever the appropriate level of abstraction is.

You will often be called to do Enterprise Sales and other stuff you got into engineering to avoid: Enterprise Sales is going into a corporation and trying to convince them to spend six or seven figures on buying a system which will either improve their revenue or reduce costs. Every job interview you will ever have is Enterprise Sales. Politics, relationships, and communication skills matter a heck of a lot, technical reality not quite so much.

When you have meetings with coworkers and are attempting to convince them to implement your suggestions, you will also be doing Enterprise Sales. If getting stuff done is your job description, then convincing people to get stuff done is a core job skill for you. Spend appropriate effort on getting good at it. This means being able to communicate effectively in memos, emails, conversations, meetings, and PowerPoint (when appropriate). It means understanding how to make a business case for a technological initiative. It means knowing that sometimes you will make technological sacrifices in pursuit of business objectives and that this is the right call.

Modesty is not a career-enhancing character trait: Many engineers have self-confidence issues (hello, self). Many also come from upbringings where modesty with regards to one’s accomplishments is culturally celebrated. American businesses largely do not value modesty about one’s accomplishments. The right tone to aim for in interviews, interactions with other people, and life is closer to “restrained, confident professionalism.”

If you are part of a team effort and the team effort succeeds, the right note to hit is not “I owe it all to my team” unless your position is such that everyone will understand you are lying to be modest. Try for “It was a privilege to assist my team by leading their efforts with regards to $YOUR_SPECIALTY.” Say it in a mirror a thousand times until you can say it with a straight face. You might feel like you’re overstating your accomplishments. Screw that. Someone who claims to Lead Efforts To Optimize Production while having the title Sandwich Artist is overstating their accomplishments. You are an engineer. You work magic which makes people’s lives better. If you were in charge of the database specifically on an important project involving people then heck yes you lead the database effort which was crucial for the success of the project. This is how the game is played. If you feel poorly about it, you’re like a batter who feels poorly about stealing bases in baseball: you’re not morally superior, you’re just playing poorly

All business decisions are ultimately made by one or a handful of multi-cellular organisms closely related to chimpanzees, not by rules or by algorithms: People are people. Social grooming is a really important skill. People will often back suggestions by friends because they are friends, even when other suggestions might actually be better. People will often be favoritably disposed to people they have broken bread with. (There is a business book called Never Eat Alone. It might be worth reading, but that title is whatever the antonym of deceptive advertising is.) People routinely favor people who they think are like them over people they think are not like them. (This can be good, neutral, or invidious. Accepting that it happens is the first step to profitably exploiting it.)

Actual grooming is at least moderately important, too, because people are hilariously easy to hack by expedients such as dressing appropriately for the situation, maintaining a professional appearance, speaking in a confident tone of voice, etc. Your business suit will probably cost about as much as a computer monitor. You only need it once in a blue moon, but when you need it you’ll be really, really, really glad that you have it. Take my word for it, if I wear everyday casual when I visit e.g. City Hall I get treated like a hapless awkward twenty-something, if I wear the suit I get treated like the CEO of a multinational company. I’m actually the awkward twenty-something CEO of a multinational company, but I get to pick which side to emphasize when I want favorable treatment from a bureaucrat.

(People familiar with my business might object to me describing it as a multinational company because it is not what most people think of when “multinational company” gets used in conversation. Sorry — it is a simple conversational hack. If you think people are pissed off at being manipulated when they find that out, well, some people passionately hate business suits, too. That doesn’t mean business suits are valueless. Be appropriate to the circumstances. Technically true answers are the best kind of answers when the alternative is Immigration deporting you, by the way.)

At the end of the day, your life happiness will not be dominated by your career. Either talk to older people or trust the social scientists who have: family, faith, hobbies, etc etc generally swamp career achievements and money in terms of things which actually produce happiness. Optimize appropriately. Your career is important, and right now it might seem like the most important thing in your life, but odds are that is not what you’ll believe forever. Work to live, don’t live to work.
標籤:
瀏覽次數:171    人氣指數:371    累積鼓勵:10
 切換閱讀模式  回應  給他日記貼紙   給他愛的鼓勵 檢舉
給本文愛的鼓勵:  最新愛的鼓勵
分.師的工作技能 《前一篇 回她的日記本 後一篇》 千里馬的悲劇
 
住戶回應
 
時間:2013-08-04 03:16
她, 41歲,宜蘭縣,資訊
*給你留了一則留言*
  
 
時間:2013-08-04 00:28
她, 41歲,宜蘭縣,資訊
*給你留了一則留言*
  


給我們一個讚!