成功的从事开发工作7个月后,我已经给几百人回复了邮件,他们问我如何成为一个程序员的,寻求我的建议,他们想知道如何判断自己是否适合去做一名程序员。 ?...急匆匆的完成?加班加点希望能多完成一些? 在理想世界里,编程是一个很有趣的活动,我们写出代码,让它们完成很酷的事情,吃着批萨,喝着可乐。...这个应用的工作原理是什么?那个横跨街道的建筑是怎么建起来的?程序员之间的对话听起来总是像这样开始的:“很奇怪他们为什么要这样做…?”...以前我以为问这么多为什么是很奇怪的表现,但现在我明白,至少是在软件开发中,这是一个好的品质。 ««« 不明白的事情会引起你的好奇心吗?新事物会让你兴奋的想搞清楚它的原理吗?...优秀的程序员总是在钻研程序代码和文档,来弄清楚东西的工作原理,他们不会敲开老板办公室的们说:“我需要上培训课,学习这款新软件”。
我渴望的是知道更多的事情,琢磨更多的事情,做更多的事情。...成功从事开发工作 7 个月后,我已经给几百人回复了邮件,他们问我如何成为一个程序员的,寻求我的建议,他们想知道如何判断自己是否适合去做一名程序员。...急匆匆的完成?加班加点希望能多完成一些?在理想世界里,编程是一个很有趣的活动,我们写出代码,让它们完成很酷的事情,吃着批萨,喝着可乐。...这个应用的工作原理是什么?那个横跨街道的建筑是怎么建起来的?程序员之间的对话听起来总是像这样开始的:“很奇怪他们为什么要这样做…?”...以前我以为问这么多为什么是很奇怪的表现,但现在我明白,至少是在软件开发中,这是一个好的品质。 ««« 不明白的事情会引起你的好奇心吗?新事物会让你兴奋的想搞清楚它的原理吗?
我渴望的是知道更多的事情,琢磨更多的事情,做更多的事情。...成功从事开发工作 7 个月后,我已经给几百人回复了邮件,他们问我如何成为一个程序员的,寻求我的建议,他们想知道如何判断自己是否适合去做一名程序员。 ?...急匆匆的完成?加班加点希望能多完成一些?在理想世界里,编程是一个很有趣的活动,我们写出代码,让它们完成很酷 的事情,吃着批萨,喝着可乐。...这个应用的工作原理是什么?那个横跨街道的建筑是怎么建起来的?程序员之间的对话听起来总是像这样开始的:“很奇怪 他们为什么要这样做…?”...以前我以为问这么多为什么是很奇怪的表现,但现在我明白,至少是在软件开发中,这是一个好的品质。 ««« 不明白的事情会引起你的好奇心吗?新事物会让你兴奋的想搞清楚它的原理吗?
旁注:你可能想知道为什么我提到了类方法,但没有提到原型方法。那是因为 JavaScript 没有方法的概念。函数在 JavaScript 中是一流的,它们可以具有属性或是其他对象的属性。...因此它更安全,通常情况下也更快,并且编写这样的代码更容易。为什么我们又需要类了呢?哦,当然是可重用性。如果我们想要一个unhappy 且 enthusiastic 的 greeting会怎样?...它简直是 JavaScript 神器级别的代码,我没有任何讽刺的意思。...而且 class 既不去修复它,也不会让你不得不去理解原型。如果你了解到面向对象的设计模式在没有类或 ES6 继承的情况下正常工作的提示,则可获得额外的好处。 我并没有告诉你要完全避免 class。...除此之外,许多流行的前端框架鼓励使用它,你应该避免在原则上单独编写奇怪的非标准代码。我只是不喜欢它的发展方向。
英文:Matt Lacey, 翻译:程序员的那些事(id:iProgrammer) “你只是加了 2 行代码,为什么要用 2 天?” ? 这是一个看似合理的问题,但做了一些可怕的假设。...代码行数 = 努力 代码行数 = 价值; 所有代码都有同等价值; 上述 3 个假设都有误。 为什么 1 个看起来很简单的修改,要花 2 天时间才能完成?...我试着用提供的信息做尽可能多的事情。我知道有些开发者不喜欢必须修复 bug,所以会不惜一切代价来“逃避”。声称没有足够的信息是一种“好方法”,看起来你是想帮忙,但不需要做任何事情。...(治本,不止治标) 如果一些代码抛出了错误,你可以直接用 try...catch 语句把它包起来,然后抑制错误。没有错误,就没有问题。对吧?抱歉,对我来说,让问题隐形不等于解决问题。...7、因为我做了更彻底的测试,并验证了它解决了所有受影响的不同代码路径的问题。 我不想依靠别人来检验我所做的是正确的。我不希望在将来发现错误,不得不回到这段代码。场景切换既代价昂贵又令人沮丧。
虽然有很多第三方库来包装这个框架以使事情变得更容易,但我们还是基于一些苹果的示例代码来维护我们自己的简单封装。...看一下这段代码,我们调用 SecItemCopyMatching 方法来加载我们的访问令牌,它返回数据以及描述结果的 OSStatus 代码。...即使我能够重现这个问题,我也100%确定我的手机在我点击应用图标的时候是解锁的,所以我不明白为什么会出现这个Keychain错误。...我在这里学到了重要的一课,即我不应该假设受保护的数据在AppDelegate初始化时是可用的,但说实话,我还是不高兴,因为我不明白为什么它不可用。...我仍然不知道这种预测是如何形成的,但我只想把它归结为 "Siri智能",然后就到此为止了。
这就是为什么一些程序员强烈建议新的软件工程师熟悉运行代码的底层硬件和系统,以减少未来的交恶。...引用: “任何曾经被调用来调试数据库服务器上的奇怪崩溃或为什么RAID驱动器不能正常工作的程序员,都知道最后发现是硬件问题的话该是一种怎么样的痛苦。”...——Ratnakar Sadasyula “我喜欢这样子,当有人问一些微不足道的事情时,就随便抛出一个功能,而这个功能需要用几十年时间推进CompSci领域来实现。”...无论是继承先于你工作之人的遗留代码,第三方API,还是由顾问编写的代码,你都不能完全避免修复、增强和/或整合他人程序的问题。当然,这样做会导致开发人员拔掉一些——或很多根——头发。...引用: “…最糟糕的地方是,你不得不处理一些其他人的代码,找出来,调试它,调整它。更糟糕的是,如果你前面的人已经离开了公司,那么就真的只能靠你自己摸索了。”
自从听见这个词儿,我也只是人云亦云,竟然从来也没有认真考察过。 直到今天,品着茶,读老喻的文章。才看到了马斯克这段话的完整译文: 我在想存在一种好的思维框架。...许多人弄不明白,既然搞IT的平时都鼓捣个计算机,为什么还得分成搞硬件的、搞架构的、搞通讯的、搞操作系统的、搞软件的、搞算法的、搞应用的? 不都是一回事儿吗?...,中间没有埋伏黑客的恶意代码…… 只有这样,你才能充分发挥自己的聪明才智,把自己擅长的事情做好,甚至是做到极致。...岛上就多了一些奇特的新祭祀活动——岛民在身上用红色颜料写 USA ,用木头做成眼镜形状,盯着树叶来回翻看,还用木头和干草做了架假飞机,等着物资从天上掉下来…… 这个例子有些极端。 换一个例子。...以我上课的经验来看,97年出生的同学们,就只有个模糊的印象了。 帮你普及一下历史知识。它大概是这样的: ? 或者这样的: ? 那时候的手机,怎么长得那么奇怪?为什么要弄个实体键盘?
我们经常思考的一件事是如何让程序员获得最有效的学习经验。今天,我将谈谈如何成为一个有效的学习者的一些研究,以及我们作为程序员和工程师,如何将这些研究应用到我们的日常生活中。...顺便提一下,“我不是一个人”这个例子是由研究支持的,Dweck和合作者做了一个关于交友和社交的研究,这项研究也在那里进行。 你如何改变一个固定的心态?...但是,如果我有一个bug要修复,我必须修复它,并且抱怨bug的存在不会帮助我更快地修复它。我认为即使是在一个截止日期迫近的世界里,你仍然可以运用这种态度。...询问过程 改变固定心态的最后一个策略是询问过程。像你们很多人一样,我和一些伟大的工程师一起工作。有时候,我会试着修复一个棘手的bug,并且不能,然后其中一个就能马上修复它。...这也是我为什么非常喜欢别人 Review 我的代码的原因,因为别人能看到我代码中存在的不足。另外,有些时候,对现有的方案做一些 「微创新」也能使原本普通的方案变得不普通。
) 我真的不建议使用这个代码,它看起来有点奇怪,我不是加密专家,但我只是不喜欢这如何将熵插入你的数字。...分析种子生成器 好了,现在我们知道如何生成种子,让我们看看种子生成器究竟做了什么。毕竟使用Electrum的所有人都必须依赖此代码的安全性和完整性,否则如果这些代码被写得很糟糕,你可能会损失所有的钱。...这里发生的事情很有意思,首先使用mnenonic.py文件中的normalize_text()函数对种子进行规范化,我认为中文或其他奇怪的语言会被转换成我认为的ASCII文本。...所以我们从132位开始,由于修复了前2个字符,我们丢失了一些位,然后我们保持128位,这在计算上是安全的。...我仍然对custom_entropy事情持怀疑态度,我应该问一下dev究竟做了什么,但除此之外,默认钱包生成是完美无缺的。我认为没有后门。
虽然有很多第三方库来包装这个框架以使事情变得更容易,但我们还是基于一些苹果的示例代码来维护我们自己的简单封装。...看一下这段代码,我们调用 SecItemCopyMatching[2] 方法来加载我们的访问令牌,它返回数据以及描述结果的 OSStatus 代码。...即使我能够重现这个问题,我也100%确定我的手机在我点击应用图标的时候是解锁的,所以我不明白为什么会出现这个Keychain错误。...我在这里学到了重要的一课,即我不应该假设受保护的数据在AppDelegate初始化时是可用的,但说实话,我还是不高兴,因为我不明白为什么它不可用。...我仍然不知道这种预测是如何形成的,但我只想把它归结为 "Siri智能",然后就到此为止了。
因为不管这个函数有多大,你都不会觉得奇怪,毕竟这个函数应该做所有的事情。这时候就需要改名、重构了。 有意义的命名也有不太好的一面。如果名字的表意太强,结果掩盖了一些功能上的细微差别怎么办?...历史代码和下一名开发者 你曾否看过一些代码,觉得它们很奇怪?这些代码为什么这么做呢?它们的实现一点都不合理。 我曾负责过遗留代码库。...我没有减少这些技术累赘,反而增加了代码的复杂程度,以及误导别人的可能。下一个人将事情拼凑起来会更困难。 现在我受到的启发是:有一些代码你可能不理解,也有一些代码你知道永远不会用。...同行审查对我来说变得更有趣了——这是我期待的游戏——一个提高我代码意识的游戏。 我的启发是:在理解代码如何实现前不要批准它。...当你修复 bug 时,你不仅仅关注如何修复 bug,而是你为什么不早点发现它呢?是否有布置警报?如何能够更好地监控来避免类似的问题? 我还不知道如何监控 UI。
那么,这些令人不快的、不受欢迎的编程语言都是哪些呢?为什么程序员如此害怕使用这些编程语言呢?如果有机会的话,很难不会加入一些理论,甚至说一些不明智的话。...这听上去没有“恐惧”那么可怕;“没有表示有兴趣继续使用一种语言的工具”这一提法的本身就是一种相当模糊的畏惧暗示。我做过的很多事情我都不想再做了,包括编写产生 shell 脚本的 troof 宏。...不喜欢某一门编程语言的原因可能是“道德连坐”:因为不喜欢一个庞大的、过时的、文档最少的代码库,以及每次修复一个 Bug 都会破坏其他东西的架构风格。...就算你相信 Ruby 真的减少了 90% 的代码行(反正我不信),一个大数目的 10% 仍然是一个很大的数字,特别是如果你有责任消化这些代码,包括背后发生的事情。...R R 在“最令人畏惧的名单”中排在第 10 名。我认为这是因为一种误解。R 既是也不是一种通用编程语言。一些统计学家告诉我,“你们程序员不明白,R 是一个统计工作台,并不是一种编程语言。
在这样做了几年并从事了许多不同的项目之后,我偶尔只是,“我们需要这个项目成功,一开始就有一个良好的基础,所以亚伦,你在这个项目上做了六个月然后你正在做一些不同的事情。”这真的很有趣。...我该怎么做呢?我不明白。有时我一整天都在上 Slack 频道,回答问题,非常乐于助人,并试图记录事情,试图了解人们在做什么。 这是我的一整天,有时。...有时我会解释为什么会有这些东西。有时我同意人们的看法。“是的,很糟糕。我不想这样做。” 但与此同时,你会有他们只想进来、写代码、回家的人。他们不想考虑除此之外的技术。他们不一定要去自己学习东西。...这会变得很困难,因为你会遇到奇怪的边缘情况,因为我们弯曲了它,所以它正在做一些奇怪的事情。就像,嗯,那不是它的错。...尽管我不像以前那样编写代码,但我带来了应用程序开发人员的观点,但我不再每天都编写代码了。 我总是说这会让我很痛苦。它不是。我仍然在想它,当我开始编写代码时,我一直在寻找如何改进这个设置?
但是,我敢打赌,在这些材料中,只有不到10%是在讲写报告的事情。在一个完整的渗透测试过程中,有将近一半的时间都用在了编写报告上,这听起来很让人吃惊,但是也并不奇怪。...高级管理人员根本不关心,或者压根不明白它的意思,如果支付服务器使用SSL v2加密连接。他们想知道的答案是“我们现在到底安不安全?”...阅读这份报告后有两个人脸色变得苍白,而第三个人笑着说“太好了,没有数据库的安全问题”。 IT人员是负责修复测试过程中发现的问题的人。他们想知道三件事:受影响系统的名称,该漏洞的严重程度以及如何解决它。...内容提要 我见过一些简直像短篇小说一样的内容提要,其实这部分一般要限制在一页纸以内。...不要提及任何特定的工具、技术,因为客户根本不在乎,他们只需要知道的是你做了什么,发现了什么,接下来要发生什么,为什么。执行摘要的最后一行应该是一个结论,即明确指出是该系统是安全还是不安全。
但碰巧的是,我相对失业,有一些空闲时间,可以连续工作几个月,这就是我可以创造它的一些必要条件吧。 Pramod: 你做得很好。Node是建立在“纯粹的异步”编程模型的思想,这个想法是如何产生的?...Node是一个大项目,当它第一次出现的时候,我四处走了一圈,做了一系列的谈话,试图让人们相信也许我们正在做I/O错误,如果我们以一种非阻塞的方式完成所有事情,那么我们就可以解决很多编程上的困难。...当然,在我余下的生活中,有无数的缺陷需要修复,有足够多的人参与,因此我不需要这样做,我想去做其他事情。再加上Go出现的事实,我并没有看到Node是服务器的最终解决方案。...虽然我认为它们其中一些目前仍在次要位置,像我的社交网络项目,我会在某个时候回来。我做了一会儿,然后我开始阅读卷积网络以及图像分类是如何解决的,这让我对机器学习非常感兴趣。...我不明白为什么我们有一天能够在这个领域有足够的研究和工作,却不能够效仿这种行为,这真的是太远了,很难预测会有多长时间。 Pramod: 你想在未来20年看到什么科技?
但是,时间久了你会发现,你总会被网络上一些奇奇怪怪或者有趣的事情吸引过去而逐渐忘记自己曾经打开百度是要干什么?时间就这样被一些无关紧要的有趣的事情给浪费了。...但是一些非广告信息实在是广告清除插件不能判断了!无用的事情浪费了我大量时间!!!这让我十分生气!!尤其是百度的搜索热点,我真不想再看到它: ? 这些所谓的热搜,很多时候是带有娱乐性质的!...我们重要的事情是干什么?是学习!! 在强烈愤怒之下,为了让我专心“科研”!不得不亲自动手,写一个浏览器插件了!!!...当动手的时候才发现,我还不会写插件.....只能边学习边做了;网络上有很多很好的教程,大家可以跟着学习一下,前提是要对前端技术有一定的了解。...如果你有不明白的地方可以到我的github主页,下载源代码进行分析:https://github.com/yaowenxu 我很菜,不要嘲笑我:),虽然菜,但我想要star :D ?
我的代码是否足够整洁?对其他开发人员,甚至是自己而言,代码是否易于理解和改变?因为以后可能需要修复隐藏在这段代码中的问题,或者根据其他产品规格改变代码。 我的方法是最好的吗?...5.你不知道如何处理一个任务 你不知道从哪里开始?你可能会随机地去尝试,或者从其他地方复制一些你自己也不明白的代码。但是,这是没有帮助的。即使你复制来的代码有效也没用。...你的解决方案之所以不起作用最大的可能是你的代码中存在着bug。 ? 如何修复?方法是调试代码。这也是作为一个程序员需要学习的最重要的技能之一。这不是可以随便凑合的事,也不是玩幸运猜猜猜游戏。...不妨将此看成是一个机会,一个修复错误提高编程能力的机会。当你解决了一个bug,可以问问自己这个问题:“我为什么会犯这种错误?以后我该如何预防再犯?”...在你学习这些资源时最常见的问题是,你并没有完全了解幕后发生了什么事情,也不知道概念是如何融入到更大的蓝图中的。 ?
领取专属 10元无门槛券
手把手带您无忧上云