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

开源日报

  • 开源日报第1010期:《自由钢琴 AutoPiano》

    17 1 月, 2021
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《自由钢琴 AutoPiano》
    今日推荐英文原文:《Learn Less, Achieve More: How To Optimize Your Learning》

    今日推荐开源项目:《自由钢琴 AutoPiano》传送门:项目链接
    推荐理由:这个项目在网页上实现了钢琴,不仅可以现场弹奏,还提供了自动弹奏乐谱的功能。除了项目本身之外,一些实现时可能要重点考虑的地方作者也在 Readme 中进行了讲解,包括自动弹奏在内等功能也还有可以进一步优化的地方,如果对音乐与程序结合有灵感的话可以参与协助开发。
    今日推荐英文原文:《Learn Less, Achieve More: How To Optimize Your Learning》作者:Szymon Adamiak
    原文链接:https://medium.com/better-programming/learn-less-achieve-more-how-to-optimize-your-learning-1a214ce697c8
    推荐理由:把握真正值得学习的内容

    Learn Less, Achieve More: How To Optimize Your Learning

    Be ruthless. Cut out the noise and focus on the essentials

    What do you do when you hear about a new hot thing in programming?

    If you’re like me, you probably read a bit and quickly decide it sounds cool. You bookmark a few websites and maybe add them to the learning to-do list.

    Sometimes you may even learn — watch a few tutorials, skim the documentation, play with it.

    Usually, before you can master it, the new shiny thing appears, and your attention shifts.

    The conclusion is simple — there are just too many things to learn; how could you master it all?

    You can’t.

    You don’t have unlimited time. You don’t have unlimited attention. You can’t learn everything. In fact, you should learn fewer things than you think.

    Why Do You Learn

    Do you want to learn a new programming language this year?

    Maybe you’d rather master a new framework? Library?

    Why?

    Maybe you feel the urge to grow. Maybe you believe you have to learn new things to stay relevant. Maybe it’s the next big thing, and you want to stay on top.

    These are the reasons. But are they good reasons? Not necessarily.

    You may like to learn new things even if they’re not useful. I like it. But if you don’t have lots of spare time (and who has lots of spare time?) and want to further your career, learning for fun won’t do.

    There is only one valid reason to learn a new skill — to use it.

    Why would you spend hundreds of hours learning a new programming language not to use it? In a year or two, you’ll forget everything and get back to square one.

    Time is your most precious asset; don’t throw it away easily. Learning the wrong things is as unproductive as watching Netflix. It’s also less entertaining. So beware of wasting your time and fooling yourself into thinking you’re making progress.

    The only solution to learn efficiently is to focus on what’s important to you and cut out the rest. To achieve it, you have to be disciplined and ruthless. Social media hype gets to our heads easily; we tend to believe every shiny new thing is worth our time. It’s not. Most new things will be forgotten in years, maybe even months.

    What Is Worth Your Time?

    You need to learn how to identify what skills are worth your time. Different skills are important to different people, so your situation is unique. Fortunately, I’ve got some guidelines to follow when picking essential skills.

    Skills you use

    We’ll start with the obvious one. Whatever your field is, you’ve got some current tech stack. Maybe you’re using the Laravel framework for the backend or React for the frontend. When you’re looking for new things to learn, you should start here — become a master of the tools you use.

    Major languages and frameworks are constantly updated, and you need to catch up. Many new features make your job easier or faster, so you don’t want to miss it.

    Mastering the tools you already use provides two major benefits — you use new knowledge instantly, and you get paid (or are likely to get paid) for your skills. That’s a no brainer.

    Skills adjacent to your current skills

    When you’re a master in one field, it’s time to expand. And the best place to expand is the area adjacent to your specialty.

    Let’s say you’re a frontend developer focused on creating great user interfaces in React. What are the adjacent areas you may want to explore? Maybe it’s serverless — you’ll be able to build full-fledged applications on your own, without the need to cooperate with a backend developer. Or design — it would be good if you could design applications on your own without the designer’s help.

    For an expert backend developer using the Django framework, adjacent skills may be DevOps or the frontend basics. By expanding to those areas, you’ll start becoming an all-around full-stack developer who can independently build and deploy whole applications.

    Skills you will use

    Sometimes you don’t want to go deeper into your current skills, and nothing is exciting in the adjacent areas. What to do now? I bet you’ve got some idea for an application.

    Learn the skills needed to build this application.

    Be careful as we’re entering dangerous territory. Many programmers have some vague application ideas and are hype-driven when choosing the stack. They get hyped about a new database or language just to discover two months later that they got nowhere. To avoid this, make sure to build on your current skills and only learn new things when it’s necessary.

    Your application shouldn’t be an excuse to learn a whole new programming stack but to expand your knowledge step by step.

    Fundamentals

    You may feel lost and don’t know where to focus. In this case, follow one simple rule:

    When in doubt, focus on the fundamentals.

    Mastering algorithms, data structures, design patterns, etc., is always a good bet. Even if you don’t think about it, you’re using fundamental knowledge constantly. If you can do it intentionally, your programming skills will skyrocket.

    What’s more, fundamentals are programming meta-skills — you’ll use them whatever you do, so they’re transferrable between languages and frameworks.

    What Is Not Worth Your Time

    As there are guidelines to pick skills you need to learn, there are some red flags to watch out for before you devote your time to learning.

    New hot language (framework/library)

    Don’t learn every new thing. It doesn’t matter if makers claim it’s the best thing since sliced bread. It doesn’t matter that the people you admire are excited about it. It doesn’t matter that your co-worker raves about it.

    Most new things will fade away fast. The programming tools market is merciless; even the giants fail often. And no one will give you back the time you spent learning obsolete tools.

    Does it mean you should give up on everything new? No.

    It makes sense to learn new things if they have a serious chance to succeed and fit into your current skillset. When the new language or library is an extension of your current skills or is adjacent, consider betting on it. If you’re lucky, you may benefit from being an early adopter.

    Specializing in the new is a high-risk-high reward strategy as you can become an expert fast, but it can also waste your time.

    Things you’ll likely use only once

    Sometimes you don’t plan to use a skill many times; nevertheless, you need to get things done. That’s a sign that you shouldn’t devote time to learning but find a path of least resistance.

    Let’s say you’re a frontend developer and need to build a few complex charts. You may be tempted to learn D3.js — a fantastic data visualization library. The thing is, it’s not worth it. D3 is a huge and complex solution, and your problem is rather limited. You just need charts, not the whole library.

    What are the alternatives? How can you get your charts without the hassle of learning an intricate library?

    You can use simpler abstractions over D3; some of them may have a solution to all of your problems and get the job done.

    An even easier alternative is to use the no-code tools that allow creating charts. Check — maybe there is a good fit, and it takes just hours to fathom most no-code tools.

    Ultimately, you can pay someone to build charts for you. With limited problems, it’s often cheaper to hire an external developer than to use your time learning a skill you likely won’t use in the future.

    Skills unrelated to your skillset

    Learning skills far away from your area of expertise is often tempting. I fell into this trap many times.

    I’m a frontend developer focused on React with some expertise in the backend who tried to learn things as diverse as machine learning and creative coding. I also spent some time learning Vue, Svelte, and Angular.

    As you can imagine, I remember almost nothing of the things mentioned above. They were too far away from my specialization, or I didn’t get a chance to use them regularly. So my skills faded over time, up to the point that I’d need to start from scratch to catch up.

    Don’t repeat my mistake; learn the things complementing your skillset, not just random things that sound cool.

    If you’re convinced that you want to learn a new unrelated skill, I’ve got only one piece of advice for you — make sure you use it as fast and as often as possible.

    Declining language (framework/library)

    Declining languages and frameworks are a waste of time. Every technology has its expiry date. It may be hard to notice the technology is dying, but it’s a good choice to distance yourself as fast as possible if you see it.

    When I started, the jQuery library was still a thing, but its popularity was diminishing. I had to learn it to get my first job, but I felt no regrets when I ditched it after a year. It was more prudent to focus on one of the emerging frontend frameworks — React.

    You may be forced to learn declining technology. Then it’s fine to do it. But try to focus on modern tech as much as you can. Otherwise, many things you’re learning now will become obsolete fast.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第1009期:《imove》

    16 1 月, 2021
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《imove》
    今日推荐英文原文:《6 Traits To Show To Ace That Behavioral Interview》

    今日推荐开源项目:《imove》传送门:项目链接
    推荐理由:这个项目是一个 JS 相关的工具库,可以根据你绘制的图表与配置生成相应的代码,当你需要为各种请求函数整理一份文档时使用它能很好地达到一石二鸟的目的,同样支持 Node.js 的后端代码。
    今日推荐英文原文:《6 Traits To Show To Ace That Behavioral Interview》作者:Michael Chi
    原文链接:https://medium.com/better-programming/6-traits-to-show-to-ace-that-behavioral-interview-697aa571eaf
    推荐理由:一些不管在什么行业中都适用的在面试中需要展现出的能力

    6 Traits To Show To Ace That Behavioral Interview

    Show off your skills and increase your chances of getting the job

    If you Google behavioral interview questions, you can find a lot of example questions:
    • 30 Behavioral Interview Questions To Prep For
    • 10 Common Behavioral Interview Questions
    • 21 Top Behavioral Questions
    It’s impossible to prepare for them all. There are too many different questions an interviewer can ask.

    But you don’t need to memorize all of them, just memorize how to answer them. If you know what interviewers look for, you can answer all of them. That sounds simple, right?

    Well, duh, you might think, but there’s a pattern here.

    During my undergrad, I’ve been to over 60 interviews. Although most are internships, companies still asked the same behavioral questions. I realized that there are some key points that interviewers really look for in a candidate, and they try to find it in you by asking these behavioral questions. By demonstrating these points when answering, you give the interviewer what he or she is looking for.

    In this article, I want to share these points with you. My experience mainly came from software job interviews, but they will work for other industries as well.

    1. You Took the Time To Prepare

    As the interviewer, they want to see the candidate actually took the time to prepare.

    You’d be surprised at how many people go to an interview unprepared to answer the most basic questions like: What do you know about our company?

    I had one interview where the manager asked me, “How did I prepare for the interview?” He later told me that the reason why I received an offer was that I answered this question a lot better than other candidates.

    Try to show that you made an effort to prepare. This can be done by researching the products of companies you are interviewing for or Googling if they have a tech blog. They can become your selling points.

    2. You Can Learn New Things and Apply Them

    That’s essentially your job as a software developer. You need to learn new things: whether that’s a new library or an old codebase from five years ago. Your job is to learn them and apply that knowledge to solve business-related problems.

    The same goes for other industries as well. You need to pick up skills that can solve problems on-the-fly to make the company a profit.

    By demonstrating that you have this trait in your answers, you are also telling the interviewer that you are adaptive — and can be thrown into unknown territory and still make progress.

    Here are some example questions:
    • What will you do if you receive a task that you don’t know how to tackle?
    • How do you look for help when you are stuck?
    • What were some of the challenges you faced?

    3. You Can Face Challenges and Get Things Done

    When I started my first internship, I had zero experience in developing actual applications, and I had to implement a .NET web app from scratch.

    I had no idea how to do it, which is what I told my manager. He said:

    If I’m a customer paying you thousands of dollars, are you going to tell me you can’t do what I paid you to do? You WILL figure out a way to solve that problem for customers.

    Ever since I left that meeting, I stopped saying, “No, I can’t do this.” without adding a “but…”.

    Interviewers know that during work countless problems will come up and you won’t know how to fix a lot of them.

    But they want to see that you can face that challenge and get it done either way. They want to see that you won’t just give up and say “I can’t do this,” without finding an alternative.

    This can come in the form of the following questions:
    • Tell me about a time you were under a lot of pressure. What was going on, and how did you get through it?
    • Tell me about a time when you failed at something; how did you deal with it?
    • Tell me about a time you were in disagreement with a team member regarding a project. How did you ensure that the project still progressed and met the deadline?
    • What will you do if you are overwhelmed by the amount of work in front of you?

    4. You Have Customers in Mind

    A software company needs to make money from its customers in order to survive and to improve its services and products. As the software developer, it’s likely that your code will directly impact the customers.

    Even if you are working on internal tools, you still have customers. Those customers might just be other employees.

    It’s important to show the interviewer that you can not only code, but you can think from the customer’s perspective. You have a sense of urgency if customers encounter an urgent issue.

    Show that you take pride in your work, and you want the users to be satisfied with your work.

    5. You Can Learn From Your Mistakes

    We all make mistakes during work.

    However, it’s important to show that you can learn from those mistakes and improve. In the end, nobody wants to hire someone who makes the same mistakes over and over again.

    This can come in the form of the following questions:
    • Tell me about a time when you failed at something. How did you handle the situation?
    • What is your weakness?
    Yes, you can use this point to construct a great answer for “What is your weakness?” For example, you can find a mistake or shortcoming you have, acknowledge it, and show the interviewer how you are trying to improve it. I believe this answer will sound a whole lot better than: I’m a perfectionist.

    6. Finally, Show Off Yourself

    Other than technical skills, you should show off these skills whenever you can in your answers:
    • Time management skills
    • Communication skills
    • Teamwork skills
    • Organization skills
    • And more
    These can be sprinkled in when you try to answer a question by demonstrating any of the previous points.

    For example, when an interviewer asks a question related to how you work with a team, talk about how you would communicate frequently and concisely with team members to ensure the smooth sailing of a project. You just demonstrated that you can communicate, you have great teamwork skills, and you can get things done.

    These can also be great fallback answers. If you encounter any questions that you don’t know how to answer, think about how you can demonstrate these traits in your answer.

    Lastly, for any of the points mentioned, always tell a story to back up your words. Interviewers want to see real-life examples from you — to show that you do have the qualities to be successful at the position. By doing this, you will be the one steering the direction of the conversation, not the interviewer.

    In Conclusion

    See, behavioral interviews aren’t that hard.

    Look through the list of behavioral questions online, and you will realize that they are really looking for similar things. The interviewer wants to know about you beyond your technical skills.

    Demonstrate these points in the interview, and give the interviewer a reason to put in good words for you.

    Go and ace that interview!
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第1008期:《课程 cs-video-courses》

    15 1 月, 2021
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《课程 cs-video-courses》
    今日推荐英文原文:《3 Tips to Become a Better Code Reader》

    今日推荐开源项目:《课程 cs-video-courses》传送门:项目链接
    推荐理由:该项目是一个非常全的计算机技术视频课程与讲座的清单,从算法,操作系统到计算机金融和量子计算机。
    今日推荐英文原文:《3 Tips to Become a Better Code Reader》作者:Živković Miloš
    原文链接:https://medium.com/better-programming/3-tips-to-become-a-better-code-reader-c84fcb4cedc3
    推荐理由:代码是给人看的,而阅读代码的人也需要有一定的技巧和经验,才能达成有效沟通。

    3 Tips to Become a Better Code Reader

    Reading code is just as important as writing it. Here’s how to be a better reader

    We’ve all been there: The wrong logic caused a critical bug. You could have prevented it during code review.

    Experienced developers know that reading code holds great value. It can reduce how much code you need to write and thus deliver reusable code.

    With all that in mind, let’s proceed to the tips I’ve compiled for you.

    1. Avoid Working With Code You Don’t Like

    I’ve heard that reading open source code will improve my reading skills. I was checking out all the possible projects, but after a while, I got bored.

    You may be in the same spot. You can’t read all the code out there.

    Be mindful of your time. Not every code you read improves your reading skills. I don’t understand assembly, so naturally, it will bore me.

    Reading without context is a waste of time. Reading a code base that doesn’t suit you will lead to boredom. After you read the code without context, you will most likely leave a dummy comment.

    Angular developers reading about open source calendar lib can improve their skills. Reading about changes in the Spring framework won’t if you don’t like it.

    Make yourself comfortable in the code base.

    2. Always Understand What Is Going On

    My first PR review consisted only of code review — checking for reusable code, whether the naming was correct, overengineering.

    I was wrong. You should always pay attention to the bigger picture.

    Check the story first. What are the requirements, what are the acceptance criteria? Pay attention to what the business thinks and read through ticket comments.

    Think through how would you do it. Does the logic in the PR do that? Then proceed. If not, leave a comment.

    Don’t get that sinking feeling when doubting code quality. Critique the code crafted — not the developer. Always doubt code and don’t undervalue team members.

    Look at these two comment examples and judge which one is better:

    + “What did you do with this variable name?! Check Sonar for errors!” + “This code is unconventional and can lead to a misunderstanding. Please change it to possible name, as that will do the job.” Commenting on code won’t only fix broken code. Reciprocity kicks in and you’ll get comments on your code. This will improve both your code reading and writing.

    Comprehend the logic, read the requirements first, and leave humane comments.

    3. Spend As Much Time Reading As Writing

    Reading code improves your writing as well. Take your time when reading your own code and extra time when reading other PRs.

    “Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. …[Therefore,] making it easy to read makes it easier to write.” — Robert C. Martin, Clean Code: A Handbook of Agile Software Craftsmanship
    Don’t only check the diff of the PR. Take a broader picture. Check the code for common logic in other places that can work here as well.

    Get familiar with the context and then check the code. That will bring a new view of the code.

    Developers spend most of their time reading code rather than writing.

    Bonus: Talk With Your Team Members

    Talking can shorten the read time. Have a call with a team member and go through the code together.

    This will serve as rubber duck programming where you’ll be the listener, unraveling some new ideas or a better approach to solving the problem.

    Thanks for reading!


    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第1007期:《ColorUI》

    14 1 月, 2021
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《ColorUI》
    今日推荐英文原文:《ColorUITech companies must explain data use, say Amazon, Google and Twitter privacy heads》

    今日推荐开源项目:《ColorUI》传送门:项目链接
    推荐理由:ColorUI 是一个鲜亮的高饱和色彩,专注视觉的小程序组件css 库. 在你引入样式后可以根据 class 来调用组件,一些含有交互的操作,可以为你开发提供一些思路。
    今日推荐英文原文:《Tech companies must explain data use, say Amazon, Google and Twitter privacy heads》作者:Laura Hautala
    原文链接:https://www.cnet.com/news/tech-companies-must-explain-data-use-amazon-google-and-twitter-privacy-heads-say/
    推荐理由:亚马逊,谷歌和推特的隐私负责人于周二在CES上进行了演讲,讨论新的隐私法律以及用户日益关注的隐私问题。 Google首席隐私官Keith Enright,Twitter首席隐私官Damien Kieran在讨论中说,科技公司现在必须允许用户更好地控制其数据,并解释人工智能等新兴技术如何访问个人信息。

    Tech companies must explain data use, say Amazon, Google and Twitter privacy heads

    Heads of privacy at Amazon, Google and Twitter took the virtual stage at CES on Tuesday to talk about how new privacy laws — and growing privacy concerns from users — have changed the way they do business. Google Chief Privacy Officer Keith Enright, Twitter Chief Privacy Officer Damien Kieran and Amazon’s director of trust for Alexa, Anne Toth, said on a panel that tech companies must now allow users greater control over their data and explain how emerging technologies like artificial intelligence access personal information.

    “It’s incumbent on us to find ways to make it more approachable,” Toth said.

    While distrust of the tech industry is nothing new, giants like Amazon, Google and Twitter are under increasing scrutiny. In the aftermath of scandals like political consultancy Cambridge Analytica gaining vast access to millions of Facebook users’ data, regular people have become more concerned about what tech companies do with their personal information. At the same time, new privacy regulations have rolled out in the European Union and three US states.

    Amazon’s Toth said the EU law, known as the GDPR, has introduced new concepts to users around the world. Regular people can now see the personal information companies have collected on them, and take their data from one company to another, a process that’s called data portability. Similar rights have been enshrined into laws in California, Maine and Vermont, and some global tech companies have extended them to users beyond these states.

    Google’s Enright said data portability fosters innovation in the tech industry by forcing companies to compete with each other for users. However, tech companies are wary of having to deal with several privacy laws throughout the US, and have been pushing for a federal privacy law that creates one standard for the country.

    “We are already dealing with quite a patchwork,” he said, calling for a federal law that preempts state laws. The panelists all said a federal law seemed probable, though not guaranteed, from the administration of President-elect Joe Biden.

    Other privacy laws around the world aim to stop tech companies from moving data out of a user’s geographical location. Combined with laws like the GDPR, which gives users specific rights over their data, these regulations lead to a risk that services will look different for the same user when they travel from place to place, said Twitter’s Kieran.

    Many tech companies have dealt with this problem by extending rights required under various laws to most or all users, regardless of their locations. Still, Kieran said, there’s the possibility of “balkanization of the internet, balkanization of services.”
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
←上一页
1 … 6 7 8 9 10 … 262
下一页→

Proudly powered by WordPress