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

开源日报

  • 开源日报第830期:《滚动效果改 rallax.js》

    11 7 月, 2020
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《滚动效果改 rallax.js》
    今日推荐英文原文:《Your Knowledge Portfolio as a Software Developer》

    今日推荐开源项目:《滚动效果改 rallax.js》传送门:项目链接
    推荐理由:这个项目是一个纯 JS 实现的视差滚动效果,只需要几行代码就能为指定的 html 元素提供视差滚动的效果。同时还支持速度和移动端可能的禁用等等个性化设置,并且其 API 除了基础的速度相关之外还提供了在滚动前进行条件判定,从而实现更精细的滚动操作。
    今日推荐英文原文:《Your Knowledge Portfolio as a Software Developer》作者:Lajos Deme
    原文链接:https://medium.com/better-programming/your-knowledge-portfolio-as-a-software-developer-6d1eb11ee221
    推荐理由:用管理企业的观点管理知识储备

    Your Knowledge Portfolio as a Software Developer

    Learn to treat your knowledge as a business

    This article is my take on the chapter with the same title from the brilliant book The Pragmatic Programmer. You should absolutely give that a read if you haven’t already.

    I often use programming or investing analogies when I talk about real-life stuff. Using investing analogies to talk about programming stuff is super fun for me, and hopefully, it will be fun for you too.

    1. Serious Investors Invest Regularly — As a Habit

    Your most important asset as a software developer is the knowledge and experience stored inside your brain. However, this is an expiring asset. With the technology landscape evolving at breakneck speed, if you don’t attend to this regularly, its value will diminish year by year.

    Unfortunately, you can’t just lay back and let your current investments earn dividends for you. You constantly have to rebalance your portfolio and, most importantly, invest more than you take out.

    In other words, always be learning something new. The most important thing is to build a habit of lifelong learning. Here are a few goals that I am for:

    Learn at least one new language/technology each year

    I don’t mean become an expert in a new language or technology every year, but seeing different approaches that solve similar problems is a great way to become a better developer.

    The skills you pick up along the way will probably prove useful even if you don’t plan to earn a living coding in that language.

    Your options for learning a new language are basically limitless, including free YouTube tutorials, paid online courses, technical books, and blog posts.

    I lay out my decision-making process for picking new languages to learn below.

    Constantly deepen your knowledge about the field/programming language that you work in

    While learning new technologies is fun, it’s also important to continuously expand your knowledge in the technology/programming language that you mainly work in.

    For me as an iOS developer, that means reading at least one technical book about iOS development/Swift every three or four months, playing around with technologies that are outside my comfort zone, like ARKit or SpriteKit, and constantly being on the watch for new iPhone features and Swift language improvements.

    Because it’s impossible to know everything about a certain piece of tech or language, this becomes a neverending journey towards mastery.

    Read at least one technical blog post every day

    While you need to make big plans like learning a new language or reading a huge book, you also need small wins to keep you motivated.

    I found that the best way to do this is to read at least one programming blog post on Medium every morning while I’m having breakfast. It’s a brilliant way to acquire small snippets of knowledge, deepen my understanding of Swift and iOS bit by bit, take quick peeks at different technologies, and start every day with a sense of accomplishment.

    2. Diversification Is the Key to Long-Term Success

    The more different technologies you’re comfortable with, the better.

    You should not limit yourself to one programming language, for example, because it might become irrelevant in the future, and then you’re left with expert knowledge that nobody wants to pay for anymore.

    Having a well-diversified knowledge portfolio is a natural consequence of adhering to the points I laid out above.

    However, I believe a word of caution is appropriate here. You should be careful not to over-diversify. If you’re like me, you find almost every new piece of technology or API interesting and just want to dive deep straight into them. I don’t think that this is such a good idea because you would spread yourself too thin, knowing the basics of many things but not enough to do meaningful work with any of them.

    As with everything else in life, the best approach is to construct a great plan, in which you map the technologies that you want to learn on a timeline. After that, all you have to do is stick to the plan.

    If you’re able to diversify across fields, too, that’s even better. It pays handsomely if, although you are a developer, you’re also able to design a user interface or you’re well versed in marketing.

    3. Smart Investors Balance Their Portfolios Between Conservative and High-Risk, High-Reward Investments

    I think you should strive to be an expert in a technology that pays a nice salary in the present while having a few bets on technologies that might become huge a few years or decades from now.

    On the conservative side, I have iOS and full-stack web development. I currently work as an iOS developer, but I love doing web development for personal projects, businesses I want to build, or simply for pure fun.

    On the aggressive (risk-wise) side, I have distributed ledger technology (not to be confused with cryptocurrencies) and smart contract development. I think these technologies are too young to say anything about them with confidence, but they definitely have a huge potential to transform society, so they might reap great rewards for the savvy knowledge investor in the future.

    My rule of thumb for picking programming languages to learn is based on the intelligent balancing of risk. I try to have on my agenda a well-established, widely used, popular language or technology that currently solves a lot of important problems paired with another one that currently does not solve any real problems but has a great possibility of doing so in the future.

    4. Investors Try to Buy Low and Sell High for Maximum Return

    This point is directly related to the previous one. You should aim to find emerging technologies and learn them before they become popular.
    “Learning Java when it first came out may have been risky, but it paid off handsomely for the early adopters who are now at the top of that field.”— The Pragmatic Programmer
    This is by no means easy, but if you can find the programming equivalent of an undervalued stock, you could be on the path to success.

    This should not be an emotional decision nor a matter of personal taste. You should analyze the landscape’s present and future based on factual data.

    You also probably already know something — thanks to your interests or education outside software development, or the events of your life that shaped your worldview — that many other people don’t know or would disagree with.

    In my opinion, these are the things that can help you find your next knowledge investment.

    5. Portfolios Should Be Reviewed and Rebalanced Periodically

    It goes without saying that — with technology changing at the speed of light — if empirical evidence indicates that your past assumptions are incorrect, you should readjust those assumptions.

    It might become obvious that some technology clearly won’t fulfill your expectations. No worries because you treated it as a high-risk investment in the first place. You still have your conservative investments to rely on. But at this point, it’s useless to spend more time on it. Just cut your losses, review and rebalance your knowledge portfolio, and move on.

    If you see some of your conservative investments starting to have diminishing returns, you might want to consider creating a plan to retire them and find a successor.

    Final Thoughts

    Thank you for reading this article, and I hope you got some value out of it.

    If you disagree with some of the guidelines I’ve mentioned or have some ideas or suggestions, I’m curious to hear your thoughts in the comments.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第829期:《SourceGit》

    10 7 月, 2020
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《SourceGit》
    今日推荐英文原文:《The US, China and the AI arms race: Cutting through the hype》

    今日推荐开源项目:《SourceGit》传送门:项目链接
    推荐理由:开源的git图形化界面客户端, 目前仅支持win10. 单文件,无需安装,下载即用,大小不到500KB
    今日推荐英文原文:《The US, China and the AI arms race: Cutting through the hype》作者:Alison DeNisco Rayome
    原文链接:https://www.cnet.com/news/the-us-china-and-the-ai-arms-race-cutting-through-the-hype/
    推荐理由:目前,即使冠状病毒的紧张局势和贸易争端可能促使中美形成对立,但是两国在开发AI方面仍在保持合作关系.

    The US, China and the AI arms race: Cutting through the hype

    Artificial intelligence — which encompasses everything from service robots to medical diagnostic tools to your Alexa speaker — is a fast-growing field that is increasingly playing a more critical role in many aspects of our lives. A country’s AI prowess has major implications for how its citizens live and work — and its economic and military strength moving into the future.

    With so much at stake, the narrative of an AI “arms race” between the US and China has been brewing for years. Dramatic headlines suggest that China is poised to take the lead in AI research and use, due to its national plan for AI domination and the billions of dollars the government has invested in the field, compared with the US’ focus on private-sector development.

    But the reality is that at least until the past year or so, the two nations have been largely interdependent when it comes to this technology. It’s an area that has drawn attention and investment from major tech heavy hitters on both sides of the Pacific, including Apple, Google and Facebook in the US and SenseTime, Megvii and YITU Technology in China.

    “Narratives of an ‘arms race’ are overblown and poor analogies for what is actually going on in the AI space,” said Jeffrey Ding, the China lead for the Center for the Governance of AI at the University of Oxford’s Future of Humanity Institute. When you look at factors like research, talent and company alliances, you’ll find that the US and Chinese AI ecosystems are still very entwined, Ding added.

    But the combination of political tensions and the rapid spread of COVID-19 throughout both nations is fueling more of a separation, which will have implications for both advances in the technology and the world’s power dynamics for years to come.

    “These new technologies will be game-changers in the next three to five years,” said Georg Stieler, managing director of Stieler Enterprise Management Consulting China. “The people who built them and control them will also control parts of the world. You cannot ignore it.”

    The origins of the US-China arms race

    The first was in March 2016, when AlphaGo — a machine-learning system built by Google’s DeepMind that uses algorithms and reinforcement learning to train on massive datasets and predict outcomes — beat the human Go world champion Lee Sedol. This was broadcast throughout China and sparked a lot of interest — both highlighting how quickly the technology was advancing, and suggesting that because Go involves war-like strategies and tactics, AI could potentially be useful for decision-making around warfare.

    The second moment came seven months later, when President Barack Obama’s administration released three reports on preparing for a future with AI, laying out a national strategic plan and describing the potential economic impacts (all PDFs). Some Chinese policymakers took those reports as a sign that the US was further ahead in its AI strategy than expected.

    This culminated in July 2017, when the Chinese government under President Xi Jinping released a development plan for the nation to become the world leader in AI by 2030, including investing billions of dollars in AI startups and research parks.

    “China has observed how the IT industry originates from the US and exerts soft influence across the world through various Silicon Valley innovations,” said Lian Jye Su, principal analyst at global tech market advisory firm ABI Research. “As an economy built solely on its manufacturing capabilities, China is eager to find a way to diversify its economy and provide more innovative ways to showcase its strengths to the world. AI is a good way to do it.”

    Despite the competition, the two nations have long worked together. China has masses of data and far more lax regulations around using it, so it can often implement AI trials faster — but the nation still largely relies on US semiconductors and open source software to power AI and machine learning algorithms.

    And while the US has the edge when it comes to quality research, universities and engineering talent, top AI programs at schools like Stanford and MIT attract many Chinese students, who then often go on to work for Google, Microsoft, Apple and Facebook — all of which have spent the last few years acquiring startups to bolster their AI work.

    The impact of coronavirus

    China’s fears about a grand US AI plan didn’t really come to fruition. In February 2019, US President Donald Trump released an American AI Initiative executive order, calling for heads of federal agencies to prioritize AI research and development in 2020 budgets. It didn’t provide any new funding to support those measures, however, or many details on how to implement those plans. And not much else has happened at the federal level since then.

    Meanwhile, China plowed on, with AI companies like SenseTime, Megvii and YITU Technology raising billions. But investments in AI in China dropped in 2019, as the US-China trade war escalated and hurt investor confidence in China, Su said. Then, in January, the Trump administration made it harder for US companies to export certain types of AI software in an effort to limit Chinese access to American technology.

    Just a couple weeks later, Chinese state media reported the first known death from an illness that would become known as COVID-19.

    In the midst of the coronavirus pandemic, China has turned to some of its AI and big data tools in attempts to ward off the virus, including contact tracing, diagnostic tools and drones to enforce social distancing. Not all of it, however, is as it seems.

    “There was a lot of propaganda — in February, I saw people sharing on Twitter and LinkedIn stories about drones flying along high rises, and measuring the temperature of people standing at the window, which was complete bollocks,” Stieler said. “The reality is more like when you want to enter an office building in Shanghai, your temperature is taken.”

    The US and other nations are grappling with the same technologies — and the privacy, security and surveillance concerns that come along with them — as they look to contain the global pandemic, said Elsa B. Kania, adjunct fellow with the Center for a New American Security’s Technology and National Security Program, focused on Chinese defense innovation and emerging technologies.

    “The ways in which China has been leveraging AI to fight the coronavirus are in various respects inspiring and alarming,” Kania said. “It’ll be important in the United States as we struggle with these challenges ourselves to look to and learn from that model, both in terms of what we want to emulate and what we want to avoid.”

    The pandemic may be a turning point in terms of the US recognizing the risks of interdependence with China, Kania said. The immediate impact may be in sectors like pharmaceuticals and medical equipment manufacturing. But it will eventually influence AI, as a technology that cuts across so many sectors and applications.

    Speeding the separation

    Despite the economic impacts of the virus, global AI investments are forecast to grow from $22.6 billion in 2019 to $25 billion in 2020, Su said. The bigger consequence may be on speeding the process of decoupling between the US and China, in terms of AI and everything else.

    The US still has advantages in areas like semiconductors and AI chips. But in the midst of the trade war, the Chinese government is reducing its reliance on foreign technologies, developing domestic startups and adopting more open-source solutions, Su said. Cloud AI giants like Alibaba, for example, are using open-source computing models to develop their own data center chips. Chinese chipset startups like Cambricon Technologies, Horizon Robotics and Suiyuan Technology have also entered the market in recent years and garnered lots of funding.

    But full separation isn’t on the horizon anytime soon. One of the problems with referring to all of this as an AI arms race is that so many of the basic platforms, algorithms and even data sources are open-source, Kania said. The vast majority of the AI developers in China use Google TensorFlow or Facebook PyTorch, Stieler added — and there’s little incentive to join domestic options that lack the same networks.

    The US remains the world’s AI superpower for now, Su and Ding said. But ultimately, the trade war may do more harm to American AI-related companies than expected, Kania said.

    “My main concern about some of these policy measures and restrictions has been that they don’t necessarily consider the second-order effects, including the collateral damage to American companies, as well as the ways in which this may lessen US leverage or create much more separate or fragmented ecosystems,” Kania said. “Imposing pain on Chinese companies can be disruptive, but in ways that can in the long term perhaps accelerate these investments and developments within China.”

    Still, “‘arms race’ is not the best metaphor,” Kania added. “It’s clear that there is geopolitical competition between the US and China, and our competition extends to these emerging technologies including artificial intelligence that are seen as highly consequential to the futures of our societies’ economies and militaries.”
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第828期:《封面工厂 orly》

    9 7 月, 2020
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《封面工厂 orly》
    今日推荐英文原文:《Do I Need to Code in My Free Time to Be a Good Developer?》

    今日推荐开源项目:《封面工厂 orly》传送门:GitHub链接
    推荐理由:一个很有意思的项目,能够自动生成简单的封面,支持多种语言。偷懒的时候是否可以考虑一下?
    今日推荐英文原文:《Do I Need to Code in My Free Time to Be a Good Developer?》作者:Maxim Chechenev
    原文链接:https://medium.com/better-programming/do-i-need-to-code-in-my-free-time-to-be-a-good-developer-6509b3777327
    推荐理由:这种问题从来都没有一成不变的答案。

    Do I Need to Code in My Free Time to Be a Good Developer?

    It’s important to examine who this message may be coming from

    (Photo by Joshua Earle on Unsplash)
    “You need to code in your spare time to be a good developer” — I’ve been hearing this all the time during my career. When I had just started, I heard it a lot. After almost ten years of working in the development industry, I’m still hearing it. I hear this phrase when I read interviews of some CEOs, and they are saying, “I will never hire a developer who doesn’t code in their spare time.” When I go to interviews with some companies, they say, “Tell us about your side projects,” with the hope of some nice story that I don’t have.

    But more often, I see how developers doubt themselves because they don’t code in their free time, especially when their colleagues and friends are doing the opposite.

    But is it that important? Does everyone expect it from me? And do I really need to code in my free time to be a great successful developer?

    My answer is no.

    “But Hey, I Love to Write Code and I’m Passionate About It”

    Don’t get me wrong. I don’t mind if someone codes in their free time. It makes a lot of sense in different situations, like with junior developers who obviously need to learn and practice. Or when you need to learn a new language or a new technology. Or when you’re preparing for an interview (especially for big companies). Or when you just like coding and it’s your hobby. Or when you work on your own projects. And so on. All these situations and reasons are wonderful and great, so there is no reason to argue.

    My question is a bit different: Why do some people expect that I will code in my free time if my circumstances are different?

    Just to give a bit of context about myself, it happens that coding is not my hobby, although I do like it and do my work at a high level. I really enjoy it when I see the result of my work. It’s an amazing feeling to see how people interact with interfaces that I’ve built. And I love it even after eight years of developing.

    But I spend eight hours per day for work, and a third of a day goes to sleeping. As a result, I don’t have that much time left for something else. What about my hobbies? Family? My friends? I need a lot of time for all these. I need a balance. I don’t want to tell my wife something like, “Yeah, I will be right there, just finishing one more small bug” when she asks me to join the family dinner. Because I know, in that case, I will have dinner alone and will eat something cold. I don’t want to miss really important moments in my life.

    My hobbies are slightly related to computers. I do like practicing yoga. I enjoy bicycle trips. I like baking (even though I’m not very good at it). I’m trying to learn how to play the harmonica. I want to try new things and new hobbies, and I want to feel the life outside of these computers. And how can I find enough time for all these hobbies when I have so little time left in the evenings?

    My Hobbies and My Interests Don’t Make Me a Bad Developer

    Hobbies and interests that are not related to the IT industry make my brain work and think more broadly. I can find a lot of similarities and approaches that I can apply to work-related processes. My imagination works better. Having different hobbies also teaches me how to find that balance and spend my time accurately.

    Besides, I need to rest after a full-time working day spent in front of a computer. Well, my grandmother still believes that it’s nonsense: “How can you ever be tired, you are just sitting and pressing buttons! And for some reason, you even get paid!” I’m quite sure that she would prefer me to find some real, proper job with a lot of manual work. Only then I would be granted the right to complain that I’m tired.

    Anyway, maybe my body is not that tired, but my mind and my brains are. We are not robots. I just can’t bring myself to code for another one or two more hours. My productivity will be low, and I will probably just spend an hour opening the IDE and just building my project. My mind wants to rest by doing something different and I understand that. How often was I able to find a solution to some problem at a completely random time while doing something different? Quite a lot of times!

    When I was a bit younger, I was sure that the word burnout was something fake just to get paid days off. I was not able to understand how work-related stress could affect anyone. But then I’ve seen it a lot of times, that people put their best, maximum energy into coding and then they were completely empty. They were so tired and bored.

    Why would my need for rest make me a bad developer? It doesn’t, and it will never be like that.

    “That Sounds Great, but When Do You Learn and Study New Technologies and Languages?”

    I believe that should be done during working hours. That’s because both sides are interested in it: You want to learn something new and become better, and your employer wants to have experienced and happy, up-to-date developers.

    There are a lot of situations when you can try something at work. New product launch? Show a little initiative and argue your opinion on why you should try new technologies. Maybe it will improve product performance, or maybe it will make the company more attractive to hire new developers. Local hackathons are another good example of a place to try and learn new things. Ask about the study budget and allocate some time for online courses, conferences; just have some reserved time for it.

    Of course, not all companies have these possibilities. For example, I once worked in a huge bank with a lot of specific legacy code — and a lot of bureaucracy on top of that. Unfortunately, I don’t have any nice advice on how to deal with similar situations. I just left that company, but I still learned a lot.

    “Alright, but I Want to Catch Up, I’m Feeling That I’m Out of New Trends”

    And that is totally fine. Because we can never do that — progress is way faster than we can keep our knowledge actual. We are just humans and we cannot know everything. The more I work, the more I understand that I’m getting paid for my experience building applications, not for my knowledge of the latest technologies. Yes, of course, some new grads can know all the new, hyped technologies, but they don’t have real-life production experience.

    I just want to mention it one more time: I’m not against coding in your free time. I’m not asking anyone who’s doing it to drop it immediately, not at all. Everyone has different situations, and everyone should do what makes them happy. We are all different.

    I’m just saying that no one should feel bad or shamed only because they have different priorities and dreams.

    Maybe I’m missing something important there, some important details when someone says: “Sorry, Maxim, we can’t hire you. We’re hiring people who code in the evenings. Bye.” Maybe I’m just not very smart. But I believe that my knowledge and especially my experience (not just experience as a developer but my whole life experience) make way more sense. My mindset, my abilities to learn, and my flexibility are important, not the fact that I don’t write code in my free time.

    And I’m not calling these companies bad places. It’s totally fine that our expectations are not aligned. It happens all the time in this industry. I cannot look nice for everyone in this world; it’s just impossible. And it’s fine if some companies think that I’m not a good developer and I’m good for nothing. It’s ok. Because at the same time, there are a lot of companies who think the opposite, and their values are aligned with mine.

    Yet another banal thing to say: Life is short. I just don’t have time to do things that don’t make me happy or don’t move me closer to my dreams. It’s quite sad that I realized it quite late after I had brain surgery (but I’m absolutely healthy now, no worries). But it’s better late than never, and I’m very happy that I came up to that.

    So do what makes you happy and what is really important for you. Follow your dreams. Do what you love and what you are passionate about — and don’t let anyone make you feel bad about it.

    Thanks for reading!


    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第827期:《奇怪人头 avatar-generator》

    8 7 月, 2020
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《奇怪人头 avatar-generator》
    今日推荐英文原文:《It’s time to start writing useful User Stories!》

    今日推荐开源项目:《奇怪人头 avatar-generator》传送门:项目链接
    推荐理由:在各种社交平台帐号上都提供了头像更换的功能,为了达到不和别人撞头像的目的,这个项目提供的各种自定义头像就很适合解决问题。它提供了类似于捏脸一样的头像生成方式,通过自定义各个部位来完成属于自己的独特头像——或是丢开一切,按一下全部随机按钮来享受缘分与艺术结合的创作成果。
    今日推荐英文原文:《It’s time to start writing useful User Stories!》作者:David Pereira
    原文链接:https://medium.com/serious-scrum/its-time-to-start-writing-useful-user-stories-29445eb83405
    推荐理由:在开发需求过程中的一种方法:用户故事

    It’s time to start writing useful User Stories!

    Five simple tips for turning User Stories around from pointless to great!

    “Can we break the user story up into the front-end and back-end?” a developer asked during the backlog refinement session.

    The first time I got this question, I said, “No, because the user story needs to deliver value to the end-user.” However, I always got the same question during the backlog refinements. I wondered, “Maybe I am doing something wrong with the User Stories.”

    I couldn’t understand what was going on. The User Stories were well written with precise acceptance criteria. I reflected over it for a while, and then, suddenly, I had the A-ha moment! The User Stories were more than an invitation for a good conversation. They were requirements!
    Individuals and interactions over processes and tools — Agile Manifesto
    During my journey as a Product Owner, I came across some typical issues with user stories. When I solved these misunderstandings the results skyrocketed. I would like to share the misunderstandings and their solutions so you can do the same.

    What are User Stories

    Let’s first understand what User Stories are. In bold, you can read the essential aspects.
    • User stories are part of an agile approach that helps shift the focus from writing about requirements to talking about them. All agile user stories include a written sentence or two and, more importantly, a series of conversations about the desired functionality. — Mike Cohn, User Stories
    In the beginning, I didn’t believe in User Stories. I was a Business Analyst, which means I was used to writing extensive requirements. Moving to User Stories was challenging for me. I couldn’t understand how we could reach the goals without every minor detail written down.

    The changing point happened once I understood the purpose of User Stories; collaboration. Everything is about conversations around the desired functionality.
    “A great Product Backlog Item starts a conversation. The goal of this conversation is to establish a common understanding.” — Maarten Dalmijn, Great Product Owners write awful backlog items

    1 — One step at a time

    User Stories should have one single goal. Therefore, the word “and” is not welcome while writing User Stories. Imagine a platform like Airbnb, let’s prepare a User Story for the filters:

    As a traveller

    I want to filter accommodations by price, category and size

    So that I can find precisely what fits my wishes

    Great Product Owners aim to increase value as soon as possible, when adding multiple goals into a User Story, we do the opposite. So always ask: Does this User Story represent a single objective? If the answer is no, then divide it!

    Considering our example, we could write three User Stories instead of one. Each filter can deliver value alone, and they have no dependencies, which gives the Product Owner the chance of prioritizing each item in a different moment.
    “Big achievements come one small advantage at a time, one step at a time, one day at a time.” — Jim Rohn

    2 — Use clear words within the acceptance criteria

    Product Owner: I think the search needs some rework. It is not fast enough, in my opinion.

    Developer: I don’t think so. For me, it is fast. It loads in less than three seconds.

    In a discussion like this, “fast” has different meanings for the Product Owner and the Developer. Therefore, User Stories should have precise words. Avoid unclear terms as much as you can, when you notice you are falling into this trap, ask, “How can I measure the result?”

    Let’s consider our previous User Story. The following acceptance criteria is an example of what not to do.
    • The search result is quickly presented to the user
    The word “quickly” leads to different understandings. For example, it can be three seconds for one person or any other time for another. So a better approach is to write the Acceptance Criteria measurably! For example:
    • The search result is presented to the user in no more than 3 seconds

    Photo by David Travis on Unsplash

    3 — Don’t forget the invisible part

    The crucial part of User Stories is never written; it’s the conversation with the team that matters the most. Without exchanges within the development team, User Stories are pointless.

    Keep in mind that User Stories are not requirements; they are an invitation to a good conversation. Therefore, Product Owners should not describe solutions, but rather present problems to the Development Team. Then, a pleasant conversation flows, which leads to collaboration and a meaningful solution.

    A common misunderstanding is to write detailed User Stories, which discourages the Development Team from starting a conversation. I used to write precise User Stories. Surprisingly, the only question I got was about breaking User Stories into technical boundaries. Avoid this pitfall, write just enough to encourage the team to have a great conversation.

    I spent a lot of time writing User Stories. It made me feel great when all tickets were clear and the Development Team did not ask questions. I thought my developers should be happy with my effort and detailed explanations.

    Except that I was all wrong. I would now consider my backlog items to both be bad and wasteful at the same time. — Maarten Dalmijn, Great Product Owners write awful backlog items

    4 — User Stories are written from the user perspective

    Many teams forget a vital part of User Stories. It’s written from the end-user perspective. I guess the end-user doesn’t care about front-end, back-end, and so on. Yet, many teams insist on breaking User Stories into technical boundaries.
    • It’s time to shift our focus from delivering tasks to maximize the value.
    Our focus is to deliver value instead of tasks that bring nothing. Once we accept splitting User Stories into technical boundaries, they only deliver value once integrated. Each part separated will not bring anything to the end-user. We should always ask how the end-user gets benefits from the User Story? No benefit means we are doing something wrong.

    Photo by Kelly Sikkema on Unsplash

    Why do the teams want to split User Stories into tech boundaries? Generally, because some Developers like having the User Stories assigned to them. Thus, being able to reach the status of “done,” then burning the story points. Be careful with this scenario. Scrum Teams should focus on collaborating. Individual performance does not matter; what matters is the result of the team.

    A good story is one that goes through an entire technology stack. Or at least as much of that technology stack as is needed to deliver the feature. Stories split along technical boundaries gives us stories that don’t deliver any value to users on their own. A frontend (say, a web interface) does users no good until it is paired with a backend (a middle tier and/or database).

    To avoid falling into the trap of splitting a story along technical boundaries, see if you can instead split the story based on the paths through the story. — Mike Cohn, Five Story-Splitting Mistakes and How to Stop Making Them

    5 — Forcing everything into User Stories

    A common mistake is: writing everything as User Stories. The backlog should be comprised only of User Stories is a myth. Let’s take a look at what the Scrum Guide says about the Product Backlog:

    The Product Backlog is an ordered list of everything that is known to be needed in the product. It is the single source of requirements for any changes to be made to the product. The Product Owner is responsible for the Product Backlog, including its content, availability, and ordering. — The Scrum Guide, November 2017

    As you can see, the Scrum Guide does not mention how the Product Owner should maintain the Product Backlog. Which means we are on our own. We have the flexibility to define as it works best in our context.

    I am a supporter of User Stories. However, it doesn’t mean we should write every single Product Backlog Item as a User Story. Some tasks just don’t go with the User Story format. Great Product Owners don’t lose the focus of maximizing the value. The point is, the Product Backlog should contain items that are understandable by the team.

    Let’s explore one example of what not to do:

    “As the Development Team, we want to have a backup routine for our database, so that in case of failure, we can recover the data.” Let’s be honest. This User Story is pointless. We can keep it simple: “Configure the backup routine for every 30 minutes.”. Be careful with too much focus on User Stories. Sometimes just some keywords would be enough.

    The forced nature of ‘User Stories’ is especially obvious in non-IT environments. Meant to capture functional requirements in applications, the template isn’t all that useful outside of IT. It often leads to weirdly phrased or vague internally-oriented items, like “As marketeer I want to send a mailing to group X so that they are aware of new products” or “As team member I want to write a plan to see how Y can be done”. We prefer to ask non-IT teams to focus on putting the outcomes they want to achieve on the Product Backlog, not what they are going to do, e.g. “Notify group X of new products” and “Strategy for achieving Y”; — Barry Overeem, Myth 4: In Scrum, the Product Backlog has to consist out of User Stories

    Wrap-up

    User Stories are amazing once we understand the essence of it. Remember, it’s no more than an invitation to a good conversation. Some tips that will help you to benefit the most from User Stories.
    • Write measurable acceptance criteria
    • The conversation with the team is the most important part
    • Write from the user perspective. Do not break into tech boundaries
    • Do not force everything into User Stories, understand where it makes sense and where it doesn’t

    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
←上一页
1 … 51 52 53 54 55 … 262
下一页→

Proudly powered by WordPress