美文网首页互联网科技
LOL-S7总决赛门票为何这么难买?程序员必备的3个条件,你是否

LOL-S7总决赛门票为何这么难买?程序员必备的3个条件,你是否

作者: IT界的帅男子 | 来源:发表于2019-10-29 15:16 被阅读0次

    钱多话少、会修电脑、情商感人、发际线逐渐失控、整个衣柜都是格子衬衫……这些都是大众对程序员的常见印象。然而事实真的是如此吗?在 1024 程序员节,新浪发布了一组数据,带大家了解更加真实的程序员生活。

    image

    众所周知,程序员的收入普遍不低。数据显示, 2019 年,入职3- 5 年的 90 后程序员平均月薪约 2 万元,应届生平均月薪也接近 1 万元。

    image

    和明星一样,程序员也是一个吃青春饭的职业。据统计,招聘市场上,超八成程序员都是 90 后,而 70 后占比不到1%,几乎等于“绝迹”。

    他们大都选择扎根一线城市,北上广深占比近七成。其中,北京汇集了约29%的程序员。他们酷爱买房,高达29%的互联网从业者身上背着房贷,这一数字比其他行业的人的 2 倍还高。

    image

    作为码农,加班已经不是什么稀奇事。数据显示,45%的程序员平均每日工作超过 10 个小时,其中5%的人甚至会工作超过 14 小时。由于长期加班,因此63.3%的程序员处于亚健康状态,常见的健康问题包括疲倦、颈椎病、脱发等。

    image

    虽然收入高,但头发少等问题成了程序员们寻找伴侣路上的绊脚石。数据显示,近四成程序员处于单身状态,高于非互联网从业者24%的比例。

    赠送程序员必备学习的C/C++学习书籍:点击获取(留言赠送100位幸运小伙伴哦)

    image

    一、软件应该是确定性的。这就是要瞄准的目标!

    在理想化的世界中,软件中的一切都应该是“确定性的”。我们都应该是函数式程序员,编写没有副作用的纯粹的函数。如String.contains()。无论执行以下操作多少次:

    <pre class="public-DraftStyleDefault-pre" data-offset-key="fd7l7-0-0" style="margin: 1.4em 0px; padding: 0.88889em; font-size: 0.9em; word-break: normal; word-wrap: normal; white-space: pre; overflow: auto; background: rgb(246, 246, 246); border-radius: 4px; color: rgb(26, 26, 26); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">

    <pre class="Editable-styled" data-block="true" data-editor="a08gb" data-offset-key="fd7l7-0-0" style="margin: 0px; padding: 0px; font-size: 0.9em; word-break: normal; word-wrap: normal; white-space: pre; overflow: initial; background: rgb(246, 246, 246); border-radius: 0px;">

    assertTrue("abcde".contains("bc"));

    </pre>

    </pre>

    …结果总是相同的,都是预期的结果。哪怕宇宙爆炸对这一计算也没有影响。这是确定性的。

    我们也可以在我们自己的程序中,而不仅仅是在标准库中做到这一目标。我们可以尝试尽可能多地编写无副作用的确定性模块。这真的与我们选择什么技术无关。确定性编程可以用任何语言完成——即使函数语言有更多工具也可以通过更复杂的类型系统来防止意外的副作用。但是我所示的例子是一个Java示例。对象方向允许确定性。对的,像PL / SQL这样的程序语言允许确定性。如果要在索引中使用函数,那么需要请求确定性的函数:

    <pre class="public-DraftStyleDefault-pre" data-offset-key="8oaip-0-0" style="margin: 1.4em 0px; padding: 0.88889em; font-size: 0.9em; word-break: normal; word-wrap: normal; white-space: pre; overflow: auto; background: rgb(246, 246, 246); border-radius: 4px; color: rgb(26, 26, 26); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-style: initial; text-decoration-color: initial;">

    <pre class="Editable-styled" data-block="true" data-editor="a08gb" data-offset-key="8oaip-0-0" style="margin: 0px; padding: 0px; font-size: 0.9em; word-break: normal; word-wrap: normal; white-space: pre; overflow: initial; background: rgb(246, 246, 246); border-radius: 0px;">

    CREATE INDEX upper_first_name ON customer (upper (first_name));
    -- Deterministic function here: -----------^^^^^^^^^^^^^^^^^^

    </pre>

    </pre>

    这又是一个规则问题。有副作用的过程/方法/“函数”是为“破窗户”。有副作用也许会更容易维护,当然希望最终可以消灭副作用。但这通常是自己骗自己。当将来的某一天意外突现的时候,就是你付出昂贵代价的时候。别不相信,说曹操曹操就到。

    二、接受意料之外的事情

    程序员始终应该遵守墨菲定律。一切都可能被打破。并且它即将被打破。作为软件工程师,我们应该谨记它是会破掉的。因为我们的世界是不确定的,所以我们正在实现的业务需求也是不确定的。我们只有在终于能够确定的时候,才能实现技巧#4(确定论)。否则,我们将不可避免地进入不确定论的世界(也就是“现实世界”),即一个将会出错的世界。所以,要以此为基础。接受意料之外的事情。训练你内心的洪荒之力,从积极的角度预见各种麻烦。

    当然,如何以简洁的方式写代码来预见各种麻烦就是另一个故事了。如何从那些可能会失败的东西(因此不需要处理)中辨别那些将会失败的东西(因此需要处理),还是需要通过一些实践滴。

    三、不要货物崇拜。不要教条主义。始终具体情况具体对待。

    所有教给你的内容都存在潜在的错误。即使是那些流行语。引用一句很不错的话:

    “我的职业生涯至少有50%是为了帮助或解脱由教条主义引发的一个个灾难。

    我们的职业充满了虚假。我们喜欢把自己当作数学家,坚持最纯粹的思想,认为它们一定是正确的。

    那是一条歧路。我们的职业构建在数学的基础之上,但除非你进入范畴论或关系代数的时髦世界(即便你真的进入,我也怀疑一切是否是“正确的”),否则你就得面对现实世界务实的业务需求。好吧,坦率地说,这离完美还有十万八千里。让我们来看看一些最流行的编程语言:

    • C

    • Java

    • SQL

    你真的觉得这些语言一点都不像数学吗?行,不如我们先来讨论段错误,Java泛型和SQL三值逻辑。这些语言是由实用主义者建立的平台。所有这些都有一些非常酷的理论背景,但最终,还是有了这些工具。

    对于建立在语言之上的所有东西也是如此:库,框架,设计模式,甚至架构。没有什么是对的或是错的。一切都是为某些上下文设计的工具。想想在其上下文中的工具。永远不要把这个工具当成一个独立的理由。我们不是“为艺术而艺术”。

    所以对这些质疑说不:

    • XML

    • JSON

    • 功能编程

    • 面向对象编程

    • 设计模式

    • 微服务

    • 三层架构

    • DDD

    • TDD

    • 实际上:*DD

    • 不胜枚举

    所有这些都是某些给定上下文的好工具,但并不总是如此,要学会具体情况具体对待。保持好奇心,开发创造力,知道何时才需要使用这些工具,将有助于你成为一个更优秀的程序员。

    赠送程序员必备学习的C/C++学习书籍:点击获取(留言赠送100位幸运小伙伴哦)

    image

    相关文章

      网友评论

        本文标题:LOL-S7总决赛门票为何这么难买?程序员必备的3个条件,你是否

        本文链接:https://www.haomeiwen.com/subject/axcgvctx.html