10年碼齡的老外碼農(nóng)酒后吐槽,該說的不該說的全說了
上個(gè)月,一個(gè)有著10年碼齡的程序猿喝高了,在社交網(wǎng)站Reddit上吐槽。然后被瘋狂轉(zhuǎn)發(fā),點(diǎn)贊??烧f是講出了咱們很多碼農(nóng)的心聲。咱們國內(nèi)這邊也有不少版本了。我們也湊湊熱鬧翻譯一版。跟大家一塊兒欣賞一下:
今天是有點(diǎn)兒高了,跟老鐵們吐一下槽。有一天我會(huì)后悔嗎?嗯,只有上帝知道!區(qū)區(qū)不才,這是在下,工作10年的奇葩總結(jié)。
還在傻傻等老板給升職加薪嗎?趕緊跳槽吧,哥兒們。世界上沒有神仙皇帝,一切全靠我們自己!
現(xiàn)在都講究全棧工程師,又焦慮了不是?可這真的不重要。就拿我所在的軟件領(lǐng)域,你可以折騰出15種花樣。在web編程或嵌入式,可能有所不同。但是所有的事情,基本上其核心的原則也就只有10到20條,技術(shù)棧只不過是讓解決問題容易一些。沒有必要去搞懂勾股定理的16種證明方法。
大家勸你另謀高就是幾個(gè)意思。如果在一個(gè)地方待的不爽,可以考慮拎桶走人了。
在一些公司里找到了志同道合的好基友??墒悄悴荒芸傆羞@種狗屎運(yùn)。有的時(shí)候沒有好基友也能開開心心,有好基友的公司并不是就不會(huì)碰上賽心事兒。
我學(xué)會(huì)了跟老板盡量交心,當(dāng)然這要把握好度,讓他能放心地把事情交給你就剛剛好。會(huì)觸到什么霉頭?炒我魷魚?花兩周再找個(gè)下家好了。
如果一個(gè)季度有那么一兩次,凌晨2點(diǎn)被從被窩里薅起來,那事兒就有點(diǎn)兒嚴(yán)重了,要么搞定要么走人吧。
唉,再搞一杯。
好的老板和好員工總是能惺惺相惜。
當(dāng)我還是個(gè)小白,也曾狂熱于技術(shù),編寫代碼,計(jì)算機(jī)科技。現(xiàn)在不糾結(jié)了。
好代碼能被一個(gè)小白工程師看懂,偉大的代碼學(xué)生都能懂,最好的代碼,是不敲代碼。
作為一個(gè)工程師,最沒學(xué)好的就是怎么寫文檔。擦,有沒有人教我一下啊。我是認(rèn)真的,誰給提點(diǎn)兒好建議,我真的很想花錢,找人給我上一課(很貴也在所不惜,一千美金夠不夠啊,教教我怎么寫出個(gè)能讓人滿意的,高大上的文檔)
接上條,寫一個(gè)完美的設(shè)計(jì)更改需求,可能也是個(gè)高科技的活。
這些大戰(zhàn)跟我有什么鳥關(guān)系(vim vs emacs, mac vs linux, 這些…),除了下面這個(gè)??聪旅孢@條。
越來越老,就越來越覺得,動(dòng)態(tài)語言真是個(gè)好東西。擦,是我說的,怎么著?來咬我呀。
在一個(gè)地方,當(dāng)我覺得自己算最聰明一個(gè)了,就到了離開的時(shí)候了。
真不理解為毛給全棧web工程師這點(diǎn)可憐的薪水。噢,不,講真的,這些家伙基本工資一年就算掙50萬美金也不算多。擦,人家得懂前端,后端,各種瀏覽器,網(wǎng)絡(luò),數(shù)據(jù)庫,還有什么緩存,網(wǎng)絡(luò)端和移動(dòng)端區(qū)別,啥,公司要上個(gè)新框架?這當(dāng)然也得懂。講真,作為懂王,為啥網(wǎng)端大佬工資這么低。
我們應(yīng)該多雇點(diǎn)兒實(shí)習(xí)生,真是棒極了。這些小不點(diǎn)兒充滿奇思妙想。再指點(diǎn)一下江山,真是棒極了。我喜歡。
再搞一口
千萬別跟偶像見面。我花了5千大洋去聽偶像的課。他可是亮瞎眼的明星,但最后我發(fā)現(xiàn)他和你我也并沒有太多不同,都是包裝炒作而已。
技術(shù)棧很重要。噢,對(duì),我好像剛剛講了這不重要,好吧,接著聽我嘮一嘮。你聽人講Python 開發(fā),和講C++ 開發(fā),你會(huì)說這區(qū)別蠻大的,對(duì)不對(duì)?因?yàn)楦墒裁椿罹偷糜檬裁垂ぞ?。如果你不明白該用什么,那就用Java吧。這種編程語言雖然爛到家了,但它又什么都能干。
最偉大的編程語言是lisp。我應(yīng)該學(xué)一下了。
對(duì)于一個(gè)新手來說,學(xué)習(xí)SQL語言是迅速致富的不二法門。讓其它的語言都見鬼去吧。你不用懂別的,就懂個(gè)SQL就可以了。薪資數(shù)據(jù)處理專家?能拿5萬美金。懂SQL的薪資數(shù)據(jù)處理專家?9萬美金!大公司里懂管理架構(gòu)的大牛?4萬美金。懂管理架構(gòu)的大牛又懂SQL?那就可以稱得上項(xiàng)目經(jīng)理,拿到15萬美金了。
如果說要重視測(cè)試(Test),那么就需要把測(cè)試驅(qū)動(dòng)開發(fā) (TDD)供上神壇。
政府部門工作并不真的像傳說中的香餑餑,至少對(duì)于初入職場(chǎng)的工程師來說是這樣。120K美金加上各種福利還有養(yǎng)老金,的確有些誘人,但是你愿意出賣你的靈魂,撲在那些只有內(nèi)部人才懂的技術(shù)上嗎?非常尊重公務(wù)員,但那里的確是個(gè)養(yǎng)老的地方。此建議不適用于政府承包商。
第三方獵頭就是寄生蟲。話說回來,如果你能找到個(gè)狠角色,跟他們建立良好關(guān)系,對(duì)你的職業(yè)生涯大有好處。怎么樣才能知道是個(gè)好獵頭呢?好獵頭通常不會(huì)在第三方公司超過三年。他們常常被大公司挖走。
如果公司員工少于100人,期權(quán)估計(jì)就是個(gè)大餅。反之,它有可能讓你10年之內(nèi)成為大款兒。
在家工作很滋潤,但沒有白板用,有點(diǎn)兒不得勁兒。
我從來沒在Facebook,Google這樣的大公司待過,所以我不知道是否錯(cuò)過了什么。但我招羅了一些(也有些沒用)這些大公司出來的員工,他們也是迷迷糊糊的。
我覺得我個(gè)人取得的報(bào)酬,相比于自身價(jià)值簡直九牛一毛。你們都知道,用金錢來衡量一個(gè)人有時(shí)候是愚蠢的。
經(jīng)理的權(quán)利比你想象的小的多的多,想想吧,為什么那個(gè)經(jīng)理不把誰誰開掉,因?yàn)樗荒馨颜l誰開掉。
頭銜最沒鳥用。什么什么大公司的首席,杰出員工,通通沒什么用。你做過什么,完成了什么項(xiàng)目,這才是大家最關(guān)心的。
我們接著聊聊頭銜:職業(yè)初期,頭銜越來越高是個(gè)好事情。初級(jí)到中級(jí),中級(jí)到高級(jí),高級(jí)到首席。如果你已經(jīng)是職場(chǎng)老人了,頭銜越低越好。這樣,工資還是一樣,如果有晉升機(jī)會(huì)又可以加薪了。也就是說,職場(chǎng)頭10年,頭銜的晉升代表著技能和責(zé)任的增長。之后,越低的頭銜讓你工資更容易增長。
退休金計(jì)劃要交滿。
要和善地對(duì)待身邊的每個(gè)人。這樣做不是為了升職加薪(雖然肯定有所幫助),這樣做本身就是它的價(jià)值所在。
如果過去這個(gè)月,我沒從新手那里學(xué)到什么,那一定是大意了。
見鬼,酒沒了。
為課程,書籍,會(huì)議付費(fèi)是物有所值的。我參加了數(shù)次會(huì)議,幾個(gè)1千5百大洋的課程,很多很多書,還訂閱了一些。很值,這樣我就可以在工作中更裝了。
講真的,為什么不給web開發(fā)人員更高的工資?他們可是懂王啊!!!
腕管綜合癥,背部拉傷,都不是鬧著玩兒的。花1千大洋買點(diǎn)兒好設(shè)備吧。
我碰到過的一位大神是個(gè)數(shù)學(xué)博士。從老兄那兒我學(xué)了很多。希望他還好。
曾經(jīng),在高中時(shí)代,我有一個(gè)非常棒的女同學(xué)。我的意思是我們經(jīng)常一起晃蕩了幾年,無所不談。然后謠言四起,說我喜歡她,一起那啥啥的。她不能正確的看待這個(gè)問題,開始忽視我的存在。這讓人有點(diǎn)兒郁悶。拿個(gè)現(xiàn)在時(shí)髦的詞兒講,就是我被“拉黑”了。但我并沒有懷恨在心,還是希望她元?dú)鉂M滿。要是能穿越回去,應(yīng)該會(huì)有個(gè)好一些的結(jié)局吧。
我還在8年級(jí)有個(gè)小女朋友,雖然我不太喜歡她了,也還沒想著結(jié)束,就這樣吧。這真是有點(diǎn)兒蛋疼。抱歉,Lena。
你知道作為一個(gè)軟件工程師,最棒的是什么?你可以碰到和你一樣的家伙們。并不是說你們都喜歡運(yùn)動(dòng),看電視這些。就是說你們常常鉆同樣的牛角尖,這真是棒極了。
技術(shù)領(lǐng)域讓女生走開。這是什么鬼行業(yè)。這真需要改變,不是嗎?我在工作中一直熱心的幫助這些女工程師,我還想做更多。你說該如何下手?
黑人工程師,一樣的啊。什么鬼?
我對(duì)一個(gè)技術(shù)經(jīng)常是愛極生恨。當(dāng)我開始討厭這個(gè)技術(shù)時(shí)往往又覺得它還不錯(cuò),老愛推薦給別人。Jenkins是個(gè)什么鬼,老兄,我即使給一個(gè)新客戶推薦這個(gè)軟件,并不是說明我能減少它運(yùn)行故障帶來的災(zāi)難。
繼續(xù)吐槽,git棒極了,我正在用呢。然并卵,GUI圖形界面去死吧,還是讓我用命令行吧。7個(gè)命令多好記呀,其它的Google一下就好啦。
我說過我做數(shù)據(jù)這一行,我要去學(xué)個(gè)數(shù)據(jù)方面的課程。Pandas,真是受夠了啊啊啊。
我的工作還算容易,因?yàn)槲矣幸蝗喊氲踝蛹夹g(shù)分析師。他們懂編程,但又不是軟件工程師。這真是謝天謝地,如果他們發(fā)現(xiàn)什么不對(duì)勁兒,他們總會(huì)說這肯定是設(shè)計(jì)問題。我愛死他們了。他們可比最棒的工程師棒多了。
暗色調(diào)棒極了。直到你被逼著使用亮色調(diào)。這就是為什么我是用亮色調(diào)。
我對(duì)加密太了解了,突然發(fā)現(xiàn)一點(diǎn)兒都不懂啊。
大哥,酒怎么又沒了呢。
熟知各種套路才能做一個(gè)好工程師。然而成為一個(gè)更棒的高級(jí)工程師,你需要知道有時(shí)候需要打破套路。
如果大家都認(rèn)為所有問題都是Bug惹的禍,該繼續(xù)了。
很多創(chuàng)業(yè)公司熱衷于讓員工打開心扉,展現(xiàn)“真我”。好吧,如果這個(gè)真我的愛好是愛看小電影可咋整?工作和私生活還是井水不犯河水的好。
開心時(shí)刻和同事們喝喝酒挺好的。我更樂意和小孩子們,家人和朋友們?cè)谝黄稹?/p>
什么是超級(jí)領(lǐng)導(dǎo)力?明明是你的錯(cuò)誤,可你的頭兒把責(zé)任全都攬過去。你肯定知道我就算為她赴湯蹈火也在所不惜。
是的,我效力過的最棒的老板總是大力支持我的觀點(diǎn),同時(shí)他們會(huì)跟我盡力解釋那些跟我相沖突的觀點(diǎn)。我一直想做到像他們一樣。
去他娘的副業(yè)。如果你喜歡搞副業(yè),也挺棒的!但我更醉心于忙著在reddit上吐吐槽。
算法和數(shù)據(jù)結(jié)構(gòu)很重要,在一定程度上來講。但你見過老中醫(yī)面試的時(shí)候還要考考有機(jī)化學(xué)之類的嗎?我們的專業(yè)面試真是狗屁不通。
那些搞開發(fā)的小男生,小女生們都是機(jī)靈鬼兒。至少某個(gè)地下行業(yè)有錢賺了。
干不干我喜歡的不重要,重要的是別干我討厭的事兒。
你做的事兒離產(chǎn)品越近,你就越能體會(huì)什么是給公司創(chuàng)造價(jià)值。跟你做的事兒是否有技術(shù)含量真沒關(guān)系。在初創(chuàng)公司尤其如此。
Linux真的挺重要的,即使在我還是Window程序猿時(shí)。為毛?因?yàn)槲易詈筮€是加入了Linux陣營。在周末加班加點(diǎn)兒地安裝Arch真是挺激動(dòng)人心滴。
我學(xué)會(huì)了小心對(duì)付那些模糊的字眼,像大數(shù)據(jù)之類的。WTF是個(gè)敏感詞兒嗎?我對(duì)付過Spark和Kafka每10分鐘的上萬行的數(shù)據(jù)流,還有Python和MySQL,一小時(shí)10億行的數(shù)據(jù)流。那些該死的標(biāo)號(hào)真是見了他媽的鬼了。
并不是所有好職位都在硅谷。但大部分都是。
好吧,如果你想鄙視我一下,千萬被給我差評(píng),咱可不在乎這個(gè)。就當(dāng)沒看見好了。最讓我郁悶的就是我啰啰嗦嗦講了大半天,貼出來沒半點(diǎn)兒反應(yīng)了。如果你覺得這是個(gè)爛貼,就這樣吧。
附原文:
I'm drunk and I'll probably regret this, but here's a drunken rank of things I've learned as an engineer for the past 10 years.
The best way I've advanced my career is by changing companies.
Technology stacks don't really matter because there are like 15 basic patterns of software engineering in my field that apply. I work in data so it's not going to be the same as webdev or embedded. But all fields have about 10-20 core principles and the tech stack is just trying to make those things easier, so don't fret overit.
There's a reason why people recommend job hunting. If I'm unsatisfied at a job, it's probably time to move on.
I've made some good, lifelong friends at companies I've worked with. I don't need to make that a requirement of every place I work. I've been perfectly happy working at places where I didn't form friendships with my coworkers and I've been unhappy at places where I made some great friends.
I've learned to be honest with my manager. Not too honest, but honest enough where I can be authentic at work. What's the worse that can happen? He fire me? I'll just pick up a new job in 2 weeks.
If I'm awaken at 2am from being on-call for more than once per quarter, then something is seriously wrong and I will either fix it or quit.
pour another glass
Qualities of a good manager share a lot of qualities of a good engineer.
When I first started, I was enamored with technology and programming and computer science. I'm over it.
Good code is code that can be understood by a junior engineer. Great code can be understood by a first year CS freshman. The best code is no code at all.
The most underrated skill to learn as an engineer is how to document. Fuck, someone please teach me how to write good documentation. Seriously, if there's any recommendations, I'd seriously pay for a course (like probably a lot of money, maybe 1k for a course if it guaranteed that I could write good docs.)
Related to above, writing good proposals for changes is a great skill.
Almost every holy war out there (vim vs emacs, mac vs linux, whatever) doesn't matter... except one. See below.
The older I get, the more I appreciate dynamic languages. Fuck, I said it. Fight me.
If I ever find myself thinking I'm the smartest person in the room, it's time to leave.
I don't know why full stack webdevs are paid so poorly. No really, they should be paid like half a mil a year just base salary. Fuck they have to understand both front end AND back end AND how different browsers work AND networking AND databases AND caching AND differences between web and mobile AND omg what the fk there's another framework out there that companies want to use? Seriously, why are webdevs paid so little.
We should hire more interns, they're awesome. Those energetic little fucks with their ideas. Even better when they can question or criticize something. I love interns.
Sip
Don't meet your heroes. I paid 5k to take a course by one of my heroes. He's a brilliant man, but at the end of it I realized that he's making it up as he goes along like the rest of us.
Tech stack matters. OK I just said tech stack doesn't matter, but hear me out. If you hear Python dev vs C++ dev, you think very different things, right? That's because certain tools are really good at certain jobs. If you're not sure what you want to do, just do Java. It's a shitty programming language that's good at almost everything.
The greatest programming language ever is lisp. I should learn lisp.
For beginners, the most lucrative programming language to learn is SQL. Fuck all other languages. If you know SQL and nothing else, you can make bank. Payroll specialtist? Maybe 50k. Payroll specialist who knows SQL? 90k. Average joe with organizational skills at big corp? $40k. Average joe with organization skills AND sql? Call yourself a PM and earn $150k.
Tests are important but TDD is a damn cult.
Cushy government jobs are not what they are cracked up to be, at least for early to mid-career engineers. Sure, $120k + bennies + pension sound great, but you'll be selling your soul to work on esoteric proprietary technology. Much respect to government workers but seriously there's a reason why the median age for engineers at those places is 50+. Advice does not apply to government contractors.
Third party recruiters are leeches. However, if you find a good one, seriously develop a good relationship with them. They can help bootstrap your career. How do you know if you have a good one? If they've been a third party recruiter for more than 3 years, they're probably bad. The good ones typically become recruiters are large companies.
Options are worthless or can make you a millionaire. They're probably worthless unless the headcount of engineering is more than 100. Then maybe they are worth something within this decade.
Work from home is the tits. But lack of whiteboarding sucks.
I've never worked at FAANG so I don't know what I'm missing. But I've hired (and not hired) engineers from FAANGs and they don't know what they're doing either.
My self worth is not a function of or correlated with my total compensation. Capitalism is a poor way to determine self-worth.
Managers have less power than you think. Way less power. If you ever thing, why doesn't Manager XYZ fire somebody, it's because they can't.
Titles mostly don't matter. Principal Distinguished Staff Lead Engineer from Whatever Company, whatever. What did you do and what did you accomplish. That's all people care about.
Speaking of titles: early in your career, title changes up are nice. Junior to Mid. Mid to Senior. Senior to Lead. Later in your career, title changes down are nice. That way, you can get the same compensation but then get an increase when you're promoted. In other words, early in your career (<10 years), title changes UP are good because it lets you grow your skills and responsibilities. Later, title changes down are nice because it lets you grow your salary.
Max out our 401ks.
Be kind to everyone. Not because it'll help your career (it will), but because being kind is rewarding by itself.
If I didn't learn something from the junior engineer or intern this past month, I wasn't paying attention.
Oops I'm out of wine.
Paying for classes, books, conferences is worth it. I've done a few conferences, a few 1.5k courses, many books, and a subscription. Worth it. This way, I can better pretend what I'm doing.
Seriously, why aren't webdevs paid more? They know everything!!!
Carpal tunnel and back problems are no joke. Spend the 1k now on good equipment.
The smartest man I've every worked for was a Math PhD. I've learned so much from that guy. I hope he's doing well.
Once, in high school, there was thing girl who was a great friend of mine. I mean we talked and hung out and shared a lot of personal stuff over a few years. Then there was a rumor that I liked her or that we were going out or whatever. She didn't take that too well so she started to ignore me. That didn't feel too good. I guess this would be the modern equivalent to "ghosting". I don't wish her any ill will though, and I hope she's doing great. I'm sorry I didn't handle that better.
I had a girlfriend in 8th grade that I didn't want to break up with even though I didn't like her anymore so I just started to ignore her. That was so fucked up. I'm sorry, Lena.
You know what the best part of being a software engineer is? You can meet and talk to people who think like you. Not necessarily the same interests like sports and TV shows and stuff. But they think about problems the same way you think of them. That's pretty cool.
There's not enough women in technology. What a fucked up industry. That needs to change. I've been trying to be more encouraging and helpful to the women engineers in our org, but I don't know what else to do.
Same with black engineers. What the hell?
I've never really started hating a language or technology until I started becoming intimately familiar with it. Also, I think a piece of tech is good if I hate it but I simultaneously would recommend it to a client. Fuck Jenkins but man I don't think I would be commuting software malpractice by recommending it to a new client.
That being said, git is awful and I have choice but to use it. Also, GUI git tools can go to hell, give me the command line any day. There's like 7 command lines to memorize, everything else can be googled.
Since I work in data, I'm going to give a data-specific lessons learned. Fuck pandas.
My job is easier because I have semi-technical analysts on my team. Semi-technical because they know programming but not software engineering. This is a blessing because if something doesn't make sense to them, it means that it was probably badly designed. I love the analysts on the team; they've helped me grow so much more than the most brilliant engineers.
Dark mode is great until you're forced to use light mode (webpage or an unsupported app). That's why I use light mode.
I know enough about security to know that I don't know shit about security.
Crap I'm out of wine.
Being a good engineer means knowing best practices. Being a senior engineer means knowing when to break best practices.
If people are trying to assign blame to a bug or outage, it's time to move on.
A lot of progressive companies, especially startups, talk about bringing your "authentic self". Well what if your authentic self is all about watching porn? Yeah, it's healthy to keep a barrier between your work and personal life.
I love drinking with my co-workers during happy hour. I'd rather spend time with kids, family, or friends.
The best demonstration of great leadership is when my leader took the fall for a mistake that was 100% my fault. You better believe I would've walked over fire for her.
On the same token, the best leaders I've been privileged to work under did their best to both advocate for my opinions and also explain to me other opinions 'that conflict with mine. I'm working hard to be like them.
Fuck side projects. If you love doing them, great! Even if I had the time to do side-projects, I'm too damn busy writing drunken posts on reddit
Algorithms and data strictures are important--to a point. I don't see pharmacist interviews test trivia about organic chemistry. There's something fucked with our industry's interview process.
Damn, those devops guys and gals are f'ing smart. At least those mofos get paid though.
It's not important to do what I like. It's more important to do what I don't hate.
The closer I am to the product, the closer I am to driving revnue, the more I feel valued regardless of how technical my work is. This has been true for even the most progressive companies.
Linux is important even when I was working in all Windows. Why? Because I eventually worked in Linux. So happy for those weekend where I screwed around installing Arch.
I've learned to be wary for ambiguous buzz words like big data. WTF is "big" data? I've dealt with 10k rows streaming every 10 minutes in Spark and Kafka and dealt with 1B rows batched up hourly in Python and MySQL. Those labels can go fuck themselves.
Not all great jobs are in Silicon Valley. But a lot are.
Finally, if you really want to hurt me, don't downvote I don't care about that. Just ignore this post. Nothing makes me sadder than when I wrote a long post and then nobody responds. So if you hate this post, just ignore.