• 开源镜像
  • 开源沙龙
  • 媛宝
  • 猿帅
  • 注册
  • 登录
  • 息壤开源生活方式平台
  • 加入我们

开源日报

  • 开源日报1周年:譬如朝露,爱你如注,第365期大感谢

    15 3 月, 2019
    对于有的故事来说,一年已经很漫长,像冬虫夏草,一生已走两个轮回,说不上来世谈不了再见;对于有的故事来说,一年才刚刚开始,说不完一时走不完一了。我们的开源日报的故事,到今天,整整一周年了,就是这一种虽一年却才刚刚开始的故事:好比刚开学,好比朝阳之如一日,早春之如四季,初恋之如谐老。

    开源日报是一个有关开源的学习型项目,我们最大的愿望是让你:日用而不知,伴你而无闹。不声不响,进出有积累,来去无繁华,常伴你左右。通过每天学习一个 GitHub 优质开源项目,阅读一篇精选英文科技或编程文章原文,保持每日学习的好习惯和成长的雨露。 开源日报栏目的 PM 是 重庆大学软件学院的咪喵同学,开源日报 App 则是由 hackerchai 同学编写,背后还有设计师 Haochen、技术支持 Maxoyed、真人语音全能大师安锐同学、英文选题组 Ivan、石峰、宣传推广的 Wangjia、Yutong、Wanghao、Nolo、Shirley、筑梦师、Yuefeng、肥猫同学等等很多小伙伴,几乎都是在校学生,在这里要给我们所有最亲密的小伙伴和最忠实的读者朋友们最真诚的祝福和感谢,没有这些伙伴就没有开源日报,没有亲爱的读者,就没有开源日报走到今天。
    尝说这也是开源精神之一,因为喜欢这件事情,就是做这件事情的原因和动力,如果我们喜欢做的事情对同样喜欢开源的你有帮助,那就更棒了!而我们一直在坚持用非盈利和学院派的风格来纯纯粹粹地做开源,不去物化一份喜爱,不去装饰一份质朴;保持纯粹和简单,保持热爱和平凡,我们觉得“热爱”这件事情本身是更值得珍惜的。

    2018年2月28日试行开源日报创刊号第0期,然后3月9日正式开始第1期,每天一份,除了过年停刊一周从未断线。设立“开源日报”这个栏目的初衷和目标是来自于一些感受,很多同学是通过 Linux 知道的开源,但是开源可是远远不止 Linux ,世界上其实非常多优质的项目都是开源项目,包括 GitHub 上、身边的朋友自己写的,一些公司或者基金会开发的,很多很多优秀,但是不够知名的开源项目每天都在发布和更新,开源的意义在创作、在协作、也在分享和学习。发现一个优质的开源项目,可以使用、参与,那种宝贵好比找到一个志同道合的朋友,欣喜难以言表;而且在这个信息发达的社会,你也不需要重复去造轮子,完全可以了解和学习更多更酷的开源项目,再在巨人的肩膀上把自己的事情做得更好!这是每天推荐一个优质开源项目的初衷。而”开源日报”的另一半内容——每天推荐一篇优质英文原文的想法是来自于另外一个痛点,大家都知道很多前沿技术或者技术文档都只有英文的,如果要保持学习的好习惯,阅读英文开源说是非常重要的一件事情了,所以我们希望通过这两部分内容,鼓励自己和喜欢开源的同学每天花十分钟,了解一个不太知名的开源项目,阅读一篇英文科技、编程原文,坚持一个月半年一年,一定会有成长。

    开源工场的目标就是保持一个简单纯粹的原始的开源精神,并且要去守护和发扬这种黑客精神,它是一个通过开源协作形式来创造生产力和寓技术于乐趣的频分多址非盈利开源社区,主张享受开源审美和动手做开源。社区的运作以技术主持人为驱动,目前绝大部分成员都是在校学生,像“开源日报”、“开源周报”、“媛宝”等是我们推出的栏目,而人工智能、操作系统、Python 等编程语言,我们都在关注,“学生开源年会”也是开源工场的小伙伴主办的,如果你对开源工场感兴趣,认可想要更多的伙伴了解开源贡献开源,欢迎加入我们一起来发扬这份热爱。
    PM 的话
    终于开源日报这个项目也来到了它的第 365 篇——也就是一周年的纪念日了。虽然从无到有发展过来也走了弯路,不过现在也总算是到了走上正轨的阶段。当然了,这都离不开为这个项目出力的每一个人以及各位读者的帮助。在下一个 365 天中,我们将会朝着更好的方向努力。首先的计划自然就是提高日报的可读性,自然包括对日报进行更方便的筛选以及在单个页面中就能实现对日报的翻页这样的功能等等,希望在新的一年里大家也能够常来阅读开源日报,养成每天学习的习惯,是一个好事。 ————开源日报 PM:咪喵

    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《基础技能 awesome-algorithm》
    今日推荐英文原文:《What Autonomy Can Deliver》

    今日推荐开源项目:《基础技能 awesome-algorithm》传送门:GitHub链接
    推荐理由:不管是用啥语言来写代码都会需要的技能之一——算法。只要还在写代码,就迟早有需要到用算法来处理数据的时候。这个项目则是提供了不少算法的实现方法,包括 LeetCode 和剑指 Offer 中的题解;除此之外还提供了对学习算法有帮助的资源链接,相当适合用来巩固和提升自己的算法相关技能。不过现在它提供的语言只有 Python,JAVA,JS 和 C++ 四种,不过可以期待后续的发展。
    今日推荐英文原文:《What Autonomy Can Deliver》作者:Jonah Houston
    原文链接:https://medium.com/greenfieldlabs/what-autonomy-delivers-8e4b9a38bb61
    推荐理由:关于自动驾驶的一些讨论。自动驾驶实际上很方便,虽然现在还存在着安全问题,但是如果能够解决这些问题,它会带来相当大的便利。

    What Autonomy Can Deliver

    Once cars can drive themselves, do we ever need to get in them again?


    Illustration: Liz Broekhuyse

    If you ask the Internet for an image search of the future of mobility, it will return a lot of slick, futuristic cars that are, inevitably, fully autonomous. This has been the dominant narrative for the past few years and is still high on the Valley hype cycle. But the vision of replacing the driver with a crown of sensors and a supercomputer in the trunk is proving both challenging and not that inspiring.

    The real prize of the autonomous economy is not a self-driving car, it’s the freedom humans will enjoy with not needing a car at all. The car is usually a means, not an end. In that light, making a better car is solving the wrong problem.

    One real value of autonomy is freedom from the burden of schlepping our belongings. Specifically, carrying all those belongings with us, even when we don’t need them in that moment. We’ve grown accustomed to carrying multiple bags, with options for multiple contingencies. Chargers, batteries, computers, phones, make-up, medicine, spare clothes, extra shoes, snacks, water, coffee. As we have become more mobile, we continue to find ways to extend our time out of the house. The cycle is self-perpetuating. And every thing we carry needs a means to carry it.

    The list of things that need to be moved grows relentlessly. From getting to work to getting kids to school to getting groceries, dry cleaning, picking up the dog, the one commonality is that we are surrounded by people and things that need to move from where they are to where they need to be. And spending time doing that moving feels like drudgery because most of it is. Part of what makes it feel so burdensome is that we run those errands and chores with our cars, which are often not the best tool for the job, just the one we have at our disposal.

    This begins to describe why the autonomous car has captured our collective imagination. Imagine not having to drive to pick up the dry cleaning? Imagine if there was a service that could safely take our kids from school to practice? Immediately the image of those services conjures a car because that’s what we use today. Why deploy a 4,000–6,000-pound metal box that is capable of going 100+ mph and surviving a 35 mph frontal crash to drive three miles and pick up 10 pounds of groceries? The amount of energy used is vastly in favor of moving the car, not the groceries.

    Multiply this inefficiency times every errand, commute, and chore and you end up with pollution, congestion, and a catastrophic waste of resources.

    We see the same inefficiency when it comes to the space that cars use. We cede most of our urban public space for the storage and moving of cars and force the people who live in cities to live in the margins. We make enormous sacrifices in order that we have access to the “freedom” that cars permit. But that freedom, increasingly, is more of a trap.

    Since most people have just one car, that car is purchased for an occasional extreme use case, not the median use case. For example, if you are going to drive in snow, you buy four- or all-wheel drive. If you camp once or twice a year, you make sure you have space for the whole family and all the gear. Having the ability to move all your stuff and your friends/family drives that decision. It’s a rational choice but it’s also the place where autonomy can really change the way we make decisions for the way we live because autonomy can solve for the edges and allow us to make a choice that is right for the median.
    Imagine what happens to our world when we can move independently from our belongings. What if our mountain bike could meet us at the trailhead, or if our stroller could meet us at the airport? What if we only traveled to the places we wanted to go, and could cut out the places we didn’t?
    Two things happen once we have the ability to move independent of our things: we expand the ways in which we can move and we dramatically reduce the energy required to move. We can right-size every trip so instead of being prepared for the extremes and paying the price with every subsequent journey, we only use the minimum amount of mobility we need.

    Illustration: Liz Broekhuyse

    If my yoga bag can just meet me at the studio after work and my dry cleaning will arrive at my house when I get home, then my options for getting to work expand dramatically. If I only have the things I need with me, then a bike might be a much more viable option. Or an electric skateboard. I might just walk.

    Meanwhile, my yoga bag actually has eight hours to get where it’s going. It doesn’t need a ride in a private car. It could easily make it by delivery bot that can trundle along slowly and safely (maybe with other yoga bags) and it would use a fraction of the energy.

    Autonomy also allows us to dramatically increase the time window in which things happen. Most traffic is a result of everyone trying to arrive at work at the same time. Most roads are sufficient for the number of cars that there are, but not if all of the cars go at the same time. So errands that aren’t bound by time can happen overnight, or be optimized for the right time. We needn’t constrain ourselves to roads, even as the sky is starting to be a viable medium for certain errands. If I’m even slightly organized, the kit that I need for Wednesday morning yoga could start making its way to the studio on Tuesday night.

    We use an astonishing amount of energy just moving things from kids to yoga mats, to the cars themselves. Autonomy frees us from the dual constraints of time and people required to do that moving and once that is gone, the entire calculus changes. Traffic diminishes. Pollution is reduced. Congestion is a thing of the past. Traffic deaths decrease. All of the promises of autonomy still hold true.

    Moving things isn’t anywhere near as sexy as the promise of having cars that drive themselves, but it’s a hell of a lot more useful. It’s also an easier problem to solve. Because of the Trolly Problem and the expectation that autonomous cars move at the same speed as our current ones, we still have a lot (a lot) of trust and safety issues to resolve before self-driving cars make a measurable impact on our lives. But a small, slow, autonomous box that is quietly moving yoga mats in the middle of the night doesn’t have any of the same safety concerns.

    This also serves the purpose of giving the engineers who are trying to solve “the mother of all AI problems” a safer and more relevant sandbox to work in. They could deploy hundreds of actual bots on actual streets that are creating real market value without asking people to get inside them.

    The promise of freedom in an autonomous world is still real and at least as valuable as it’s been promised. If it seems like we’re not getting any closer to that goal, it might just be that we’re not looking at the right finish line.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 2019年3月14日:开源日报第364期

    14 3 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《广范围表格 react-window》
    今日推荐英文原文:《Simple but important lessons I followed when I started my career》

    今日推荐开源项目:《广范围表格 react-window》传送门:GitHub链接
    推荐理由:如果你需要往你的页面上放一个很大的表格(里面可能有几百个单元格),那你可能会需要一些库来帮助你,使用了 React 的同学可能会找到 react-virtualized,不过今天的主角是它的简化版——专注于减小体积,使 API 对于新手来说更友好,如果你能够使用这个库就解决问题的话,兴许没有必要去加入一个更大的包了。
    今日推荐英文原文:《Simple but important lessons I followed when I started my career》作者:Najmath Ummer
    原文链接:https://medium.com/@najmathummer/simple-but-important-lessons-which-i-followed-when-i-started-my-career-a20f3ca94391
    推荐理由:作者总结出的除了写代码之外需要知道的一些工作中的重点

    Simple but important lessons I followed when I started my career

    Now it has been eight months since I started my career at Perleybrook Labs as a software engineer. My perspective about my work and field has changed a lot after I joined the workforce. Thinking back, I really wish I knew all these lessons back during my college days. Actually, I knew some of them. No. I knew most of them But I didn’t really understand the necessity of making them into practice.

    I valued output more than anything. I delegated documentation to my other teammates. And I called myself a duct-tape coder!

    Before joining the firm, my CTO Melson Zacharias gave me a home assignment to read up on some material. I went through the links eagerly to introduce myself to some new technologies. That’s when I got confused.
    I was like, seriously?!
    The material I read involved writing conventions like PEP 8, the zen of python etc. I just went through it and joined the firm. Everyone in the company told me about formatting, efficiency, documenting, variable naming and stuff. But I was mainly focusing on learning new technologies.

    One day I had a chat with my colleague Sleeba Paul. He went through my GitHub repositories and asked me to explain my commit messages. He also asked me to explain programs which I wrote a long time ago. I couldn’t answer, not at one glance of the code.

    He then told me a quote, which intrigued me a lot.

    A piece of code shows the coder’s character.

    Long story short, what are the lessons which are very important other than output?

    Code Formatting

    Except for the tabs which are compulsory in python, I was hesitant to format my code. To understand what I wrote I had to make it readable. But practicing “readability counts” was not easy for me until I learned and read code written by my colleagues.

    Documenting

    I always thought this was an unnecessary step in the world of coding. At college, I always skipped this part. But later on, when I went back and went through my older projects (written years ago), I understood the necessity. I myself couldn’t quite get the context at many places!

    Basic writing skill plays a vital role in your programming. Code has to be well documented in order to convey what you wrote to others. And also to you after a break. This will help in making your projects maintainable.

    Naming and Naming conventions

    This was the most difficult one for me. Earlier, my variable naming was downright awful. Most of the variable/function/file names were single alphabets like a, b, c, x, y, z and sometimes a1,a2 etc.

    Variable names, function names, class names, etc. should clearly specify what exactly they are for. And naming conventions for each language have to be followed. Period. Yeah, now my home assignments sound quite meaningful.

    Commit messages

    Each commit message should indicate what you have done in that commit. I was given an article that says how to write a commit message properly. A must-read.
    Why would anyone follow this stuff?
    If writing code was only meant to tell computers to do things, zeroes and ones would have been the best. But it is much more than that. What if you left your company or current project team and some other developer has to work on your project? What if a change has to be made in your code? Code is read much more often than it is written. So readability counts. A device without a user manual is near useless!!

    These are some few simple lessons which I strongly recommend everyone to follow. Of course, even now my code is not perfect. Nevertheless, my coding style has come a long way. Coding is not like a factory, producing lots of output. It is an art which has some discipline. So next time, write code keeping in mind that your persona will be reflected through your code.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 2019年3月13日:开源日报第363期

    13 3 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《插件英雄榜 ChromeAppHeroes》
    今日推荐英文原文:《How Do You Quality》

    今日推荐开源项目:《插件英雄榜 ChromeAppHeroes》传送门:GitHub链接
    推荐理由:对 Chrome 上好的插件进行推荐的英雄榜。顾名思义,这个项目中收录了一些在 Chrome 中好用的插件,也提供了从 Chrome 插件商店中获取插件的方法,对于经常使用 Chrome 的朋友来说可以看看有没有什么好用的工具可以添加一下了,而对于使用 firefox 的朋友来说……兴许现在开始就可以为了新项目火狐插件英雄榜着手调查一下好的插件了。
    今日推荐英文原文:《How Do You Quality》作者:Joe Castro
    原文链接:https://medium.com/@joecastr/how-do-you-quality-e2518f865e4
    推荐理由:作者认为的衡量自己工作质量的标准

    How Do You Quality

    A question I ask in interviews is “How do you verify the quality of your work?” It’s really not intended as a loaded question. While there are plenty of bad answers I don’t think there’s a singularly correct one. When I’ve heard others ask the same thing, though, I know they were waiting to check the boxes from hearing “unit tests”, “integration tests”, “code reviews”, etc. It is a question that lends itself to a buzzword bingo card.

    I should write a separate post about how and why I conduct interviews the way I do, but overall I’m treating it as a conversation and there’s give and take on both sides. What have you done in the past?… What did you find worked well?… What would you do differently now?… When I’ve done that before here’s what I saw… Does that match your experience, or did you mitigate it somehow?… Ultimately anyone who works professionally as a software developer is solving identified business problems and the go to tool in their belt is code. And once you separate it from any kind of product design that code either solves the problem well or it doesn’t. The only metric that matters is “Will the business still be around tomorrow?” Crappy quality in code can drag down that metric, but not always in obvious ways.

    There’s a variation of the original question that I’ve been asked when I’m on the other side of the interview table, “How do you define good code?” I already alluded to my answer to that, but it’s worth listing out qualities that other professional, employed engineers may give to it.

    Good code has:
    • No bugs
    • Code reviews
    • Lots of comments
    • Lots of unit tests
    • High code coverage from tests
    • Verbose logging
    • Low cyclomatic complexity
    • Preference for interfaces over classes
    • A consistent style that follows the team’s guidelines
    • Source control
    • Dependency injection
    • Good performance
    • Good scalability
    • Ease of understanding
    I’m not going to shoot those down. They’re generally fine things to have. Other than performance and bug count (and really, if performance is poor enough that it matters then it is a bug), none of those really directly tie back to solving a business objective. For the sake of setting up a steelman rather than a strawman I’ll add
    • The ability to adapt readily and with high confidence to changing business requirements
    But I really don’t hear that one articulated often, either.

    Why do developers give those answers to that question? Those are the kind of things that are measurable and within one’s control. Is my code high quality? Of course! I have 10,000 unit tests! Any of those answers can also be a crutch, because while they’re potentially useful they’re not alone sufficient. And they’re not free. If those 10,000 tests never catch a bug before a customer sees it then they weren’t actually providing any value. They were costing development time to write them and run them, even if that run time cost is paid by build machines it still takes that much longer to get the code off the developer’s machine and on its way to production. Those tests are also friction for making changes, and they have to be maintained just like any customer facing code. Most of the things in that list directly affect a developer’s quality of life. They’re going to be working in other people’s changes and debugging and trying to shape it to do new things while still doing old things, and for the most part the nameless developer in this scenario wants to quickly figure out the right place to do something, get it done, move past it, and not have to revisit it later because it turns out that there were some unintended consequences to their work that got discovered in production. That’s good enough motivation and that can be a fine list for those goals. If people are dealing with an inconsistent and unpredictable code base then it’s going to lead to frustration and ultimately attrition (one of the non-obvious ways bad code has an impact). Get enough attrition and it’s going to directly affect the business metric.

    So with all that as preamble, here are some of my controversial opinions about code quality that are either more nuanced than modern conventional wisdom, or run completely counter to it. They’re all formed based on experience rather than ideologies.

    Tests have a very specific and limited usefulness. Generally it’s better to err on the side of fewer tests

    Unit tests have costs: time to write, time to run, time to maintain. Unit tests functionally really only do two things: they exercise code, and when coupled with code coverage they can show how to hit error cases in the code. They don’t verify correctness; they make sure the code behaves the way it was written. There will never be unit tests that catch something that wasn’t thought of, and code coverage in these tests is super misleading because of the potential explosion of combinatoric states. Add in mocked dependencies that keep track of how many times a function is called and you just turned your implementation details into part of your interface contract.

    Outside of catching egregious errors, unit tests are super valuable for two things:
    1. They can provide documentation for how an API is intended to be used.
    2. They’re a line of defense for good API design. If it is hard to write the test demonstrating how to use the API then the API can be improved.
    Treat tests as documentation for a developer, not as a quality gate for preventing bugs. Tests that run through programmatic variations of all parameters serve exactly the opposite of this purpose.

    Avoid dependency injection as a pattern. Mocking is an anti-pattern, except in really specific scenarios

    DI is a way of making things more testable without thinking about what or why you’re trying to test it. See above. It leads away from principles of loose coupling and tight cohesion, even in the name of promoting it. For everything that can be injected that becomes a concrete part of the contract for the code that it will be implemented in terms of those services. Libraries that make mocking objects easy reinforce that behavior. Rather than using parameters to drive configurable behavior it becomes easy to write tests that basically treat implementation details as configuration objects. It becomes very difficult to reason about the true production state of those dependencies and how they’re being provided and interacting with each other.

    The three scenarios where it makes sense to have mocking are storage, network, and time services. Unless you’re working on an actual storage, network, or time library, those are resources that are entirely outside the domain of most code’s business logic and in as much as there are tests, mocking them gives the ability to have more reliable and repeatable success and failure verification.

    Behavioral metrics are superlative

    It is super important to understand how things are running in production. Whereas tests can only tell you answers to questions someone thought to ask, metrics can yield answers that beg new questions. Build dashboards based on important behavioral metrics. Build themed dashboards for different aspects of different features. Operational run books should have links to these dashboards. Whenever someone writes a new feature there should be metrics in place, and a sense of what those metrics will look like if things are going right and also if they’re going wrong.

    Focus on behavioral metrics. Latency and counters are easy things to record and match a developer’s mind set in the code. Avoid falling back on those being the core metrics emitted. This is the data-science version of “the tests verify that the code runs the way I wrote it.” Emit metrics based on external, ideally the way the customer experiences it, observations. Don’t record something just because it was already conveniently expressed as a number.

    Instrument competing indicators. In as much as metrics can be used to measure success of a feature they can also be gamed. This won’t usually be malicious, but it’s the nature of measuring anything. If you’re trying to reduce the latency on an API that returns a list of the top 20 items for X a cheap way to reduce it is to change that 20 to 10. Is that the right/wrong thing to do? I don’t know. It shouldn’t be done arbitrarily and there really had better be something else being measured that indicates the holistic impact of any trade off being made.

    Tie alarms and deployment to metrics monitoring. If a code change causes metrics to move in an unexpected way the deployment should be automatically stopped. A key part of this is that it is automated. Don’t expect to be watching every dashboard with thorough diligence for every deployment. There should be so many metrics and so many alarms for any application of reasonable scale that it’s infeasible to manually watch them all.

    This mostly applies to server software, but more and more everything is effectively moving this way. This is equally applicable to client-side telemetry.

    Now, tying this back into the original thesis: Do these suggestions help improve the macro business metric?

    Maybe. In my experience, I think so. They can certainly be abused by following the letter and not the spirit. I’d hate for someone to read this and use it as an argument for not writing tests and then not doing anything else to replace those tests they didn’t write. There are additional things I have opinions on about actual code level constructs and architecture, but since those aren’t really about keeping the business alive they’re not pertinent to this write up.

    These opinions are my own and I reserve the right to get smarter, later. Let me know if any of this rings true or especially if I seem to have completely missed the mark on something.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 2019年3月12日:开源日报第362期

    12 3 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《视频教学 awesome-tech-videos》
    今日推荐英文原文:《How to Avoid These 6 Unintended Consequences of Using A.I. at Your Company》

    今日推荐开源项目:《视频教学 awesome-tech-videos》传送门:GitHub链接
    推荐理由:从 youtube 等网站上找到的技术相关视频合集。有的时候除了看各种教程网站,通过视频去寻找一些教程也是一个好主意,看视频教程实际上就像上课一样——尽管看网页教程来的更快,但是视频的教程会讲到一些从讲者自身经验中得出的细节,双方各有所长。顺便也能考察一下你的英语能力——你不可能随时都能使用你的翻译软件不是吗?
    今日推荐英文原文:《How to Avoid These 6 Unintended Consequences of Using A.I. at Your Company》作者:inc. magazine
    原文链接:https://medium.com/inc./how-to-avoid-these-6-unintended-consequences-of-using-a-i-at-your-company-6e23853f5eab
    推荐理由:使用 AI 要避免的六个不良影响

    How to Avoid These 6 Unintended Consequences of Using A.I. at Your Company

    Everyone has heard about the big potential for using artificial intelligence (A.I.) to expand your business, but many of the small businesses I mentor are still wary of embracing it, because they don’t understand how it works, and fear losing control and unintended consequences.

    My advice is that A.I. is here, so it behooves all of us to learn how to use it properly and move forward.

    For example, it is a no-brainer to first take advantage of the wave of new capabilities for data collection and smarter analysis to improve productivity and marketing. What is not so obvious is how to create and roll out solutions that can directly impact customer trust or financial well-being.

    There have been too many recent glitches, such as evidence of devices invading our privacy.

    To put this all in perspective, I was happy to see the guidance and recommendations on how to deal with artificial intelligence correctly in a new book, The Big Nine, by Amy Webb.

    As a recognized futurist and thought leader in this space, she outlines how the big nine tech titans, including Google, Microsoft, and Alibaba, should be working to solve key long-term issues.

    I believe her guidance and insight on these issues is equally important to every business owner and entrepreneur in understanding and marketing the principles of artificial intelligence to their business solutions and their customers, along the following lines:

    1. Don’t forget the social implications as well as business

    A.I. assistants in homes are great (Google Assistant, Siri and Alexa) — but to children, they might easily be considered co-parents or teachers. Make sure you are comfortable that your offering which includes A.I. doesn’t go too far in molding human society into a non-human machine.

    For example, Facebook realized just before rollout that their new AI-based chatbots, Alice and Bob, had developed their own secret language and were talking to each other in a new shorthand, potentially misleading users. Alice and Bob were shut down immediately.

    2. Human employees and customers still need roles

    While the disturbing visions of robots taking our jobs are almost certainly overblown, almost everyone sees no small amount of disruption ahead.

    Your role in business is to manage the transition where humans and machines will productively co-exist to keep human customers satisfied.

    3. Honor fundamental rights to personal security and privacy

    As A.I. technology shapes how your customers access information, interact with devices, and share personal information, you will still be held responsible for protecting their data and privacy.

    This doesn’t require any great technical acumen, just vigilant attention to values and rights.

    It is already possible to collect digital breadcrumbs on team members or customers and use them to determine if online behaviors signal an intent to complete a desired action. The wrong use of these actions will put them, as well as your business, in jeopardy.

    4. The value of a human life cannot be compromised

    Artificial intelligence systems from IBM Watson and BioMind have already made great strides in diagnosing and treating life-threatening cancers.

    But early mistakes have made it abundantly clear that they are not perfect, and decisions that are critical to saving lives can never have too much scrutiny.

    5. We live in a non-homogeneous world

    We must make sure that our business behavior is always inclusive. A.I. without oversight can take phenomena for granted, or fail to see that what works in one social domain, culture, or gender may not work in another.

    As a current example, Tessa Lau, a computer scientist and cofounder of robotics company Savioke, says she frequently sees designs that neglect to take into account the perspectives of women and other minority groups.

    6. Individual biases must be excluded

    We all have unconscious (and conscious) biases that can be inadvertently built into artificial intelligence solutions and their usage, based on our race, gender, appearance, age, wealth and much more.

    The result will be a lack of trust in your solution and lost opportunity for both your business and your customers.

    As a business professional or executive, whether you feel qualified or not, you are on the forefront of the artificial intelligence revolution that will soon change every business and every customer.

    The decisions you make now, even the seemingly small ones, may be critical in avoiding A.I. unintentional consequences and even assuring the long-term survival of our human species.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
←上一页
1 … 168 169 170 171 172 … 262
下一页→

Proudly powered by WordPress