Category: Software Architecture

0

[转]到底什么才是业务架构?

业务架构这个词大家时常听到,但是能解释得清楚的却不多,撩撩度娘,你就会发现,不少人问及业务架构和应用架构的关系,聊天时,也常有人问起业务架构师和产品经理什么区别?业务架构分析和需求分析什么区别?其实为了写这篇文章,我把《软件工程》、《软件系统架构》、《系统分析与设计》都翻了,这些经典教材确实没讲过业务架构这件事;我把《聊聊架构》也翻了,发现其中的讨论有解释到业务、架构和技术的关系,但是也没有特别强调业务架构。

[转]十年码农:我在加入亚马逊 5 个月后选择离职了 0

[转]十年码农:我在加入亚马逊 5 个月后选择离职了

我于2018年1月28日开始在亚马逊工作。在此三周前我和我美丽的妻子,还有我们的猫猫一起降落在了温哥华国际机场。刚到时我们最担心的是猫猫,从特拉维夫到温哥华18个小时的飞机对所有生物来说都是一个挑战。 事实上猫猫很好,它恢复得很快,并开始在我们租的AirBnB公寓里探索。与我们预想的一样,温哥华阴雨多雾,但是风景如画,与阳光明媚充满活力的特拉维夫不同。我们非常兴奋,因为我们花了6个月的时间为搬家做准备,这一天终于到来了。

0

[转]软件工程师:反对薪酬保密,我要公开硅谷的一些秘密

我是一名软件工程师,有3年的工作经验,在Square工作,这是一家总部位于旧金山的上市公司。我每年能赚13万美元,外加价值47500美元的股票,也就是每年177500美元。 基本工资我没有跟他们谈。不过我的确把4年股票赠与从15万美元谈到了19万美元。我是在2月5号入职的。那笔赠与目前的价值是412390.02美元(煤炭都会波动)。如果按照这个股价行权第一年的话,我真正的报酬是233097.51美元。 透露这一切令我感到害怕。陌生人和同行看到我挣的钱后认为我拿得太多了。(“开玩笑吧?她都干了什么能拿到这样的工资水平?”)要么他们也许会认为我拿得太少。(“如果她拿这么少的话那一定是工作不怎样。”)将来打算雇我的公司必然都会看到我之前的薪水然后将我未来的薪水锚定之前的水平,从而限制了我换工作时的涨薪水平,或者因为害怕我这个人太贵而将我排除在面试名单之外。 既然这样我为什么还要分享这些数字?因为我们需要更多地讨论有关我们拿多少报酬的事情。公平报酬始于更大的透明度。 在今天,性别、种族、阶层以及无数其他的身份标识在技术业的系统性偏见中都扮演着自己的角色。2018年的一份雇佣报告发现,男性在技术业拿到的报酬要高于女性,在同一家公司担任相同角色的情况下63%的时候男性都要高于女性。54%的技术女性报告说自己拿到的钱要比担任同一角色的男性要少。 但我们有一个有关报酬的真诚对话可以缩小差距的乐观理由。意识到存在报酬差异的人当中有66%者只是在跟同事聊到报酬的情况时才知道这件事情的存在。 硅谷真正的财富是通过股权产生的。 通常当大家讨论报酬——该接受什么,该拒绝什么,如何协商的时候,建议总是“知道你的价值。”但怎么才能知道?对于大多数员工来说,报酬被锁在一个黑箱里面,而处在职场最上层阶梯的人掌握着所有的信息。 只需要把他们支付的报酬数据给收集众多客户相关数字的机构,他们通常能获取到有关市场给特定角色开出的平均薪酬的信息,并且还能拿到聚合的分析。这种信息不对称造成了权力的失衡,只有一端,也即是更有权力的一方能够做出关于报酬支付的知情决定。 典型的场景是这样的:你接受了一家公司的面试,在电话筛选上花费了几个小时,并且完成了现场面试。你表现很好。准备拿到offer。当然了,招聘人员会打电话给你,问你想开出的报酬是多少。 这个时候你就开始恐慌了。如果你报出的数字太高怎么办?你不希望公司因此不给你这个offer了——你需要一份工作并且已经走完了整个面试流程,所以你不希望破坏这个机会。可如果你报得太低呢?你不希望贱卖自己,而你现在协商的报酬,在你拿到那份工作之前,将决定你未来几年的报酬。拥有类似资格的其他人拿到的报酬如何?你完全就是在黑暗中乱开枪。 纠正这种不平衡的努力的确有(比如Glassdoor、Comparably以及Levels这类的服务),但是聚合报酬数据的匿名平台并不能替代我们的真正需要:一种将公开讨论报酬正常化的文化。 因为有感于作家Carina Hsieh以及#talkpay运动,在三八国际妇女节那天我发了一条推特。它向技术界的男性发出来公开邀请,请他们与我分享自己的工资好让我可以匿名地发布出去。 即便在今天,相对于自己的同行,女性以及被忽视的少数族裔还是频繁地拿到过低的报酬,而他们甚至都没有意识到这一点,因为他们没有太多的比较点。我以为会有少数人愿意直接给我发信息。 迄今为止,已经有50万人看到了那条推特。成千上万的人已经直接私信我。大家发送了很多的工资信息给我,多到我仍然还没有把我收到的数据公布完,差得还远呢。 我们保守薪水的秘密是因为我们害怕会因为分享这些数据而受到惩罚。 全世界各种角色的技术员工都把自己的薪水数据发给了我,但因为我是一名湾区的软件工程师,所以我最大的数据集来自这里。那么,湾区的男性软件工程师拿到的薪水有多少呢?以下就是我对这场讨论的贡献: 软件工程师开发了你每天使用的各种网站和app。湾区的软件工程角色往往从6位数起步:120000美元是4年大学生涯刚刚毕业的计算机科学专业拿到的典型的基本工资,这是由大型上市技术公司设定的标准。 新毕业生去到小一点的初创企业能拿到的薪水可能会比这要低一点,但通常哪怕是初创企业也会支付6位数的工资。早期阶段初创企业给的钱最少,而真正令人安逸之心的薪酬数字只会出现在最大型的“初创企业”那里,比如Uber、Lyft以及AirBnb。 加州技术业的工资概况 初创企业和上市公司的一大差异化因素是股权。初创企业的股权到头来往往一文不值,但是上市公司的股权则代表着报仇的一大部分。基本的工资很少会涨到40万美元以上——实际上我还没有见过——但股票则可以令工程师的整体薪酬翻番或者甚至翻3番。 而且跟工资不一样的是,股票在价值上可以飙涨,如果你是目睹了股价坐火箭的Google员工或者你是一家初创企业的第一名工程师而那家公司后来被高价收购的话这一点是真的。硅谷的真正财富是通过股权产生的。 尤其是Facebook和Google对于迫切需要的人才开出的薪酬是最丰厚的。尽管市场竞争激烈,但如果你听说一位工程师的总报酬达到75万美元的话,那一定是非常不典型的。 很有可能他们是在Facebook或者Google工作,而且是全世界稍有的几个具备行业经验与专业知识能从事相关工作的人。他们就是戴着“金手套”的人:理论上他们可以在任何地方找到一份工作,但是他们无法离开(或者至少他们认为自己不能离开),因为没有一个竞争对手能配得上他们的报酬。 大家通常会担心自己会因为分享自己的收入而被炒鱿鱼。 如果让我来猜测湾区软件工程师的平均总薪酬(基本工资、股权加奖金)的话,我想大概在150000美元到200000美元之间。这个估计得到了我从Twitter收到的数据的支持,其中位数是183750美元。 根据Glassdoor,工程师的平均基本工资是137000美元,奖金为11000美元,这还没有包括股票奖励。 美国技术工资概况 这个数字已经不少了,所以这个话题的敏感性也不足为奇。尽管如此,我对披露报酬数字给我的人的害怕程度仍然准备不足,很多人一而再再而三地向我强调这一信息只能匿名发出。好几位甚至还要求自己的工作城市和职位细节信息要尽可能写得含糊,以防自己正好被对上号。大家往往会担心自己因为分享收入信息而被炒鱿鱼。 对待透明性的态度是文化已经受到严重破坏的迹象。我们如何得到报酬塑造了我们得日常生活的一切:我们可以在哪里生活,可以做什么,可以有多大的自由。在收入方面更清楚了解到我们所处的位置完全是我们的利益所在,但是我们还是要保守这一信息秘密,因为我们害怕会由于分享而受到惩罚。在一个本该极其重视透明性的行业里,我们在最需要透明性的地方却恰恰存在不足。 让我们改变这一权力格局吧。跟你的同事讨论,跟你的业界同行讨论,跟你的朋友讨论自己拿到了多少报酬。跟你团队里面的女性和少数族裔讨论。不要仅仅讨论工资,要讨论整体报酬包括股权和奖金在内。讨论相关过程,比如你的报酬如何改变了自己的职业生涯路径以及协商报酬最后对拿到offer的影响会怎样。邀请他们也做同样的事情。 大家的共同看法是公司在就业市场拥有一切权力因为就业机会是它们赋予的。但员工才是提供公司所需技能和经验的人。知道自己应该拿多少让你在一个通常不钟爱于你的体系里面多少有一点权力——而你应该运用这种权力。  ...

[汇总]Security 0

[汇总]Security

如何在 7 分钟内黑掉 40 家网站? 咳血的独角兽丨互联网的幕后攻防 关于褥羊毛

0

[转]如何编写优美的测试

精心设计的测试是必不可少的,这也是一个工程师经验丰富的标志之一。编撰良好的测试可以充分地记录代码,使读者更容易地投入并熟悉代码。本文中,作者以其参与 Crate.io 项目的亲身经历为例,为读者介绍了为什么要进行彻底的测试,并介绍了测试中常用的测试方法以及由内而外的策略。此外,还详细阐述了具有交互能力的代码的重要性。

[转]Redis是如何写代码注释的?

[转]Redis是如何写代码注释的?

许多人认为,如果代码写得足够扎实,注释就没什么用了。在他们看来,当一切都设计妥当时,代码本身会记录其作用,因此代码注释是多余的。我对此持不同意见,主要出于两个原因: 1. 许多注释并未起到解释代码的作用。 2. 注释使读者不必凭空想象太多细枝末节,帮助读者降低认知负担。 注释的分类 我的工作始于随机地阅读Redis源代码,以检查注释是否以及为什么在不同的上下文中起作用。我很快发现,注释的作用来源于多方面:它们在功能,编程风格,长度和更新频率方面往往非常不同。我最终转向了注释分类。

0

[转]时间复杂度、空间复杂度,如何”不复杂“地学?

1. 写在之前 我们都知道,对于同一个问题来说,可以有多种解决问题的算法。尽管算法不是唯一的,但是对于问题本身来说相对好的算法还是存在的,这里可能有人会问区分好坏的标准是什么?这个要从「时效」和「存储」两方面来看。 人总是贪婪的,在做一件事的时候,我们总是期望着可以付出最少的时间、精力或者金钱来获得最大的回报,这个类比到算法上也同样适用,那就是花最少的时间和最少的存储做成最棒的解决办法,所以好的算法应该具备时效高和存储低的特点。 这里的「时效」是指时间效率,也就是算法的执行时间,对于同一个问题的多种不同解决算法,执行时间越短的算法效率越高,越长的效率越低;「存储」是指算法在执行的时候需要的存储空间,主要是指算法程序运行的时候所占用的内存空间。

0

区块链扫盲

一篇文章快速理解区块链技术原理 区块链面试招聘中可能会被问到的40个问题 TPS百万级的超级区块链架构解析 | 迅雷链来鑫 深入Blockchain:区块链安全应用落地实践 如何解决区块链的硬伤:对时间的感知 如何十分钟搭建你的区块链概念验证环境? 一个程序员眼中的区块链技术  

[转]开源社区该面对现实了! 0

[转]开源社区该面对现实了!

跟许多开源开发者一样,我也一直在围观Redis通用条款授权的评论(https://news.ycombinator.com/item?id=17814386)。其主旨是,由RedisLabs开发的特定企业级模块上的工作成果将采用Apache 2.0和通用条款授权(Common Clause license,简单来说就是个新的授权方式),这种授权方式将禁止主机提供商、云服务提供商以及其他直接从中获益的软件开发商免费使用redis。Redis以后还是主要在RedisLabs的赞助下进行开发,并采用更自由的BSD-3-Clause授权。 最初似乎产生了“Redis要采用新授权”的误解,不过后来Salvatore(antirez)辟谣了。