{"id":841,"date":"2015-01-20T08:35:52","date_gmt":"2015-01-20T00:35:52","guid":{"rendered":"http:\/\/ufqi.com\/blog\/?p=841"},"modified":"2015-01-20T08:35:52","modified_gmt":"2015-01-20T00:35:52","slug":"earn-most-for-programmer","status":"publish","type":"post","link":"https:\/\/ufqi.com\/blog\/earn-most-for-programmer\/","title":{"rendered":"\u638c\u63e1C\/C++\u7684\u7a0b\u5e8f\u5458\u6700\u80fd\u6323\u94b1"},"content":{"rendered":"<div id=\"ld_xcjsmi_56767\">\n<div>\n<div>\n<div id=\"__w2_bGQNyKA_topic_list_item\">\n<div id=\"ld_xcjsmi_56772\"><\/div>\n<div>-Quora \u4e0a\u7684\u8ba8\u8bba\uff0c\u53ea\u4ece\u7ecf\u6d4e\u4e0a\u8bf4\uff0c\u90a3\u4e9b\u7f16\u7a0b\u8bed\u8a00\u8ba9\u7a0b\u5e8f\u5458\u8d5a\u5f97\u6700\u591a\uff1f<\/div>\n<div><\/div>\n<div>\u9605\u5de5\u7a0b\u5e08\u65e0\u6570\u7684\u8c37\u6b4c\u7684\u5de5\u7a0b\u7ecf\u7406Carter Page\u56de\u7b54\u8bf4\uff0c\u5b66C\/C++\uff0c\u800c\u4e24\u8005\u76f8\u6bd4\u8f83\u65f6\uff0c\u53c8\u8fdb\u4e00\u6b65\u7684\u9009\u62e9C++\uff0c\u65e2\u6709C\u7684\u98ce\u683c\uff0c\u4e5f\u6709OO\u601d\u60f3\u3002<\/div>\n<div><\/div>\n<div>\u5982\u4e0b\u662f\u539f\u6587\u3002\u6700\u540e\u4e00\u8282\u7ed9\u4e2a\u6bd4\u55bb\u751a\u597d\uff0c\u8bf4\u600e\u4e48\u80fd\u6210\u4e3a\u7f57\u9a6c\u8bed\u7cfb\u7684\u597d\u7684\u6f14\u8bb2\u8005\uff0c\u7b54\u6848\u662f\u5b66\u4e60\u62c9\u4e01\u6587\u3002<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"ld_xcjsmi_56768\">\n<div>\n<div>\n<div><\/div>\n<p><a id=\"__w2_vMJ4OZo_link\" href=\"http:\/\/www.quora.com\/Financially-speaking-which-computer-languages-can-earn-the-most-for-the-programmer\" target=\"_blank\">Financially speaking, which computer languages can earn the most for the programmer?<\/a><\/div>\n<\/div>\n<\/div>\n<div id=\"ld_xcjsmi_56769\">\n<div id=\"__w2_WP4Idsj_answer\">\n<div id=\"__w2_WP4Idsj_answer_wrapper\">\n<div id=\"__w2_WP4Idsj_answer_user_wrapper\">\n<div id=\"ld_kcgvzz_69425\">\n<div>\n<div><a id=\"__w2_lTOxjCA_link\" href=\"http:\/\/www.quora.com\/Carter-Page-1\" target=\"_blank\"><img loading=\"lazy\" alt=\"Carter Page\" src=\"http:\/\/qph.is.quoracdn.net\/main-thumb-53440117-100-fhligrprcpmycdrnhdpzsyrivagqdxtj.jpeg\" width=\"100\" height=\"100\" \/><\/a><a id=\"__w2_kH5GsQq_link\" href=\"http:\/\/www.quora.com\/Carter-Page-1\" target=\"_blank\">Carter Page<\/a>,\u00a0Engineering Manager at Google<\/p>\n<div id=\"ld_bzyrjc_71307\"><span style=\"color: #999999\">1.6k<\/span><span style=\"color: #999999\">\u00a0<\/span><span style=\"color: #999999\">upvotes by<\/span><span style=\"color: #999999\">\u00a0<\/span><a id=\"__w2_A0oWIik_link\" href=\"http:\/\/www.quora.com\/Solomon-Duskis-1\" target=\"_blank\">Solomon Duskis<\/a><span style=\"color: #999999\">,<\/span><span style=\"color: #999999\">\u00a0<\/span><a id=\"__w2_lnPxPGD_link\" href=\"http:\/\/www.quora.com\/Troy-Manchester\" target=\"_blank\">Troy Manchester<\/a><span style=\"color: #999999\">,<\/span><span style=\"color: #999999\">\u00a0<\/span><a id=\"__w2_rDyZ8jJ_link\" href=\"http:\/\/www.quora.com\/Simon-Hayes-3\" target=\"_blank\">Simon Hayes<\/a><span style=\"color: #999999\">,<\/span><span style=\"color: #999999\">\u00a0<\/span><a id=\"__w2_Pcs39l4_toggle_link\" href=\"http:\/\/www.quora.com\/#\"><span style=\"color: #999999\">(more)<\/span><\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div id=\"__w2_WP4Idsj_answer_voters\"><\/div>\n<\/div>\n<div id=\"ld_kcgvzz_69426\"><\/div>\n<div id=\"__w2_WP4Idsj_answer_content_wrapper\">\n<div id=\"ld_kcgvzz_69427\">\n<div>There is a short answer, but this a borderline religious discussion, so it requires some context first.<\/p>\n<p>I&#8217;ve hired many software engineers, and the single most valuable skill is the ability to pick up anything and master it quickly.<\/p>\n<p>Some years ago an offshore company was producing Java for me with inconsistent quality.\u00a0 I was able to build remote teams by looking at their resumes, but I couldn&#8217;t interview them individually because they didn&#8217;t speak English.\u00a0 This kind of constraint makes for an interesting experiment.<\/p>\n<p>The developers&#8217; resumes looked good, with years of experience.\u00a0 Still, the code was often buggy, hard-to-read, and poorly organized.\u00a0 As an experiment I started asking just for their C++ developers.\u00a0 Some of them didn&#8217;t know Java, but I was willing to pay them for a few weeks to learn it.\u00a0 With the help of their coworkers, they picked up the language and its idioms, and excelled as our top Java programmers.<\/p>\n<p>So here&#8217;s the short answer: Learn C\/C++<\/p>\n<p>You might never use it professionally, but it contains a lifetime of lessons.\u00a0 And the hardest problems, the ones that the top engineers are asked to solve, will sooner or later hit some foundational C code.<\/p>\n<p>Here are some things that are written in C:<\/p>\n<ul>\n<li>The Java virtual machine is written in ANSI C<\/li>\n<li>Linux is written in C (and some assembly, but mostly C)<\/li>\n<li>Python is written in C<\/li>\n<li>Mac OS X kernel is written in C<\/li>\n<li>Windows is written in C and C++<\/li>\n<li>The Oracle database is written in C and C++<\/li>\n<li>Cisco routers, those things which connect the Internet, also C<\/li>\n<\/ul>\n<p>Name anything that is foundational, complex, and performance critical.\u00a0 It was written in C, with a sprinkling of assembly thrown in.<\/p>\n<p>C will make you a better Java programmer.\u00a0 You&#8217;ll know when the JVM is using the stack and when it&#8217;s using the heap, and what that means.\u00a0 You&#8217;ll have a more intuitive sense of what garbage collection does.\u00a0 You&#8217;ll have a better sense of the relative performance cost of objects versus primitives.<\/p>\n<p>C++ will make you a better Python programmer.\u00a0 Its class mechanism is largely based on C++.\u00a0 You&#8217;ll have to learn to write clean, well-organized code if you ever expect to maintain it.\u00a0 You&#8217;ll learn to be careful with your global variables.<\/p>\n<p>C will make you a better Objective-C programmer.\u00a0 You&#8217;ll know how to manage your refcounts and which piece of code should &#8220;own&#8221; an object.\u00a0 You&#8217;ll be able to avoid memory leaks.<\/p>\n<p>So which is better C or C++?\u00a0 I lean slightly to C++ because they are very similar, but with C++ you get the added benefit of object-oriented programming.\u00a0 Even if you decide you&#8217;re only ever going to program in functional languages, learning how to think in OO teaches organizational patterns that are critical to engineering and maintaining really large projects.<\/p>\n<p>So maybe you won&#8217;t make as much per hour as you would during some brief, weird supply\/demand anomaly like COBOL in &#8217;99, but once you know C, you can learn that language, and the next, and the next.\u00a0 Because if there&#8217;s one long-term constant in this industry, today&#8217;s hot skill is a quaint novelty in a few years.\u00a0 Learn the skills behind the skills and you&#8217;ll do great.<\/p>\n<p>*** EDIT ***<\/p>\n<p>Based on many of the comments below, I should clarify.<\/p>\n<p>Nowhere do I say you should program in C for a living.\u00a0 Or learn C as your only language.\u00a0 Or that you can make more per hour on C than programming in Foobar.\u00a0 Generally speaking, you shouldn&#8217;t even program your applications in C unless you have a really good reason.<\/p>\n<p>But you should learn C.\u00a0 Because it&#8217;s the abstraction other languages use to understand the physical machine.\u00a0 You can strut like a champ when the other programmers are still scratching their heads.\u00a0 And that will make you more &#8220;senior&#8221; and earn you more money in the long run.<\/p>\n<p>If you want to be the best and best-paid Formula 1 driver, learn how to take that engine apart.\u00a0 Not because it is your job, but because it will make you better at your job.\u00a0 And as the cars change and evolve over time, you&#8217;ll get what makes them different too.<\/p>\n<p>TL;DR (thanks to Juan Mendes)<br \/>\nQ: How do become a better speaker of all Romance languages?<br \/>\nA: Learn Latin (and a bit of Greek won&#8217;t hurt).<\/p>\n<div><a id=\"__w2_qKiQLBm_link\" href=\"http:\/\/www.quora.com\/Financially-speaking-which-computer-languages-can-earn-the-most-for-the-programmer\/answer\/Carter-Page-1\" target=\"_blank\"><span style=\"font-family: Helvetica\">Updated 5 Nov<\/span><\/a>.<\/div>\n<div><\/div>\n<div><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>-Quora \u4e0a\u7684\u8ba8\u8bba\uff0c\u53ea\u4ece\u7ecf\u6d4e\u4e0a\u8bf4\uff0c\u90a3\u4e9b\u7f16\u7a0b\u8bed\u8a00\u8ba9\u7a0b\u5e8f\u5458\u8d5a\u5f97\u6700\u591a\uff1f \u9605\u5de5\u7a0b\u5e08\u65e0 &hellip; <a href=\"https:\/\/ufqi.com\/blog\/earn-most-for-programmer\/\">\u7ee7\u7eed\u9605\u8bfb <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[6,2],"tags":[66],"_links":{"self":[{"href":"https:\/\/ufqi.com\/blog\/wp-json\/wp\/v2\/posts\/841"}],"collection":[{"href":"https:\/\/ufqi.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ufqi.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ufqi.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ufqi.com\/blog\/wp-json\/wp\/v2\/comments?post=841"}],"version-history":[{"count":1,"href":"https:\/\/ufqi.com\/blog\/wp-json\/wp\/v2\/posts\/841\/revisions"}],"predecessor-version":[{"id":842,"href":"https:\/\/ufqi.com\/blog\/wp-json\/wp\/v2\/posts\/841\/revisions\/842"}],"wp:attachment":[{"href":"https:\/\/ufqi.com\/blog\/wp-json\/wp\/v2\/media?parent=841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ufqi.com\/blog\/wp-json\/wp\/v2\/categories?post=841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ufqi.com\/blog\/wp-json\/wp\/v2\/tags?post=841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}