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

开源日报

  • 开源日报第531期:《控制这个游戏 untrusted》

    28 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《控制这个游戏 untrusted》
    今日推荐英文原文:《Being Fast or Getting Faster? (aka Build Momentum, not Velocity)》

    今日推荐开源项目:《控制这个游戏 untrusted》传送门:GitHub链接
    推荐理由:一个网页游戏。在这个游戏里你需要的当然就是——作为主角经历冒险最后迎来故事的结局,不过这次有点不同:你需要调整这个游戏的代码来继续前进,这就到了用得上 JS 知识的时候了。当然了,需要的更多不是 JS 的代码知识,而是极具柔软性的思维,过关的方法并不只有一种。
    今日推荐英文原文:《Being Fast or Getting Faster? (aka Build Momentum, not Velocity)》作者:Kislay Verma
    原文链接:https://medium.com/@kislayverma/being-fast-or-getting-faster-421a6bde08cf
    推荐理由:要想跑得快,首先要站得稳

    Being Fast or Getting Faster? (aka Build Momentum, not Velocity)

    With technology becoming a large, often critical part of any large business today, businesses always want their technology NOW — to prove product market fit, to leapfrog ahead of competitors in new offerings, and to stay ahead of newcomers by building an unassailable technical moat. Needless to say, the market always wins, and pure technological concerns are often left behind in favour of achieving the next critical business goal. As engineers, we don’t always do, or get to do, the best technical thing — we often settle for meeting the end goal.

    Repeat this story of developers building the just-enough solution writing not-so-good code using the not-best-suited tech stack over a couple of decades and we end up with a collective belief that good code and short timelines are opposites of each other, and never the twain shall meet. I want to question this folk wisdom by calling out that there are caveats to this, and there are now well proven ways where we can (and teams have) delivered consistently good technology in great timelines.

    The thing with “good code takes longer” is that it holds good only if we are in the building game for a short period. Short term is fine for early start-ups, who don’t know if they will exist the next year. They should focus on doing whatever it takes to get a foot in the door and finding their first customers. But if a team is past that stage and knows that it is there to stay (at least for while), different rule apply. As a team, we should of course be as fast as we can today. But I would argue that the actual goal should be more ambitious— the goal should be to get faster over time.

    Build momentum, not velocity.

    Let’s be clear, doing good work does take longer. The current problem has to be thought through, future problems have to be anticipated, architecture has to be figured out for functionality and scale, technologies have to be evaluated and selected etc etc etc ad nauseam. All this is a lot of work. What this means in the context of our current discussion is that if we want to be fast right away, the only way to do it is to do a shoddy job. Simply “be fast” is a poor goal for a team.

    Now consider what happens if we explicitly state our goal in terms of getting faster over time. How can we get faster when business problems coming at us are of increasing difficulty? The way I see it, the only choice is to not do some things so that we get to the finish line quicker. However, we cannot drop the feature requests because that’s the job. So we must drop some technical things. And the only way to drop technical things but still do a good technical job is to make sure that we are able to build on what we have. We build something once, take our time about it, and re-use it every time in the future.

    Build momentum, not velocity.

    Some of you will now realize that I’m getting at building platforms (Yes. Again. I know). The above statement is a paraphrasing of the golden rule of platforms (which is to build once and re-use in every relevant use case). But the idea of “get faster via DRY” is more widely relevant and platformization is only one of its by-products. We can apply it at multiple level of abstraction with some pretty cool results.

    At the code level, good code leads to libraries and abstractions which can be re-used for faster intra-component feature development. Team members never have to write the same thing twice because it is already available in an easily consumable way. Clean interfaces and clear, extendable behaviours ensure that we only work on the critical new stuff. This level of abstraction imposes the least penalty on current speed.

    At a component level, the getting faster principle leads to service based architecture(or similar things) where technical capabilities are made available for reuse across multiple teams. It is slow at first, but if we do it well and do it right, next steps become ever faster as we isolate the changing parts from the non-changing ones and can focus on the changes needed now. Again, we are sacrificing current speed for future turbo-charge.

    At an even larger scale, we are looking at reusing entire domains across the organization to come up with new business propositions. This is the platform play at it most potent — an organization which can compose business ideas whole cloth out of existing tools/teams/processes can respond and innovate faster than its rivals in the market. This kind of strategic advantage is hard to beat. Obviously, getting into this mindset and executing well on it is a very very hard thing to do.

    Build momentum, not velocity.

    None of the above means that the things that were built earlier are absolutely never modified again. The idea is to modify them as little frequency as possible. The idea is to “do fewer things to move faster” as we move forward, and we have to be willing to pay the occasional fine as long as the average feature delivery time is shrinking.

    Notice that the above technical principles are not emerging from an explicit technical directive, but from a kind of management principle of getting faster over time! Ergo, this is an organization pattern. We are extending the size of the team and trying to identify the things that team has already done and should not do again. The core capabilities and processes are well known, and can be used in varying contexts without fundamentally altering the org. The undercurrent powering this is a conscious eye for “composability” of capabilities. If a system (tech/non-tech) cannot be used to compose something bigger than itself, it will end up being re-invented elsewhere (i.e. that which is platformized will defeat that which isn’t). This is clearly not the way to being faster. We should take the time now to ensure if the class, the service, the infra that we are building has enough functionality to provide business value and enough flexibility to mould itself to other use cases.

    So don’t repeat yourself. Let the time you spent in the past be an avalanche to to power your future

    Build momentum, not velocity.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第530期:《翻译 chitchat-on-translation》

    27 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《翻译 chitchat-on-translation》
    今日推荐英文原文:《The Biggest Sign of a Senior Engineer》

    今日推荐开源项目:《翻译 chitchat-on-translation》传送门:GitHub链接
    推荐理由:现在这年头看英文文档已经是家常便饭了——毕竟中文文档暂时还是少数,而与其等着不知道啥时候才出中文文档,不如直接读英文的来的更快。而熟能生巧,读得多了自然就会掌握一些翻译的方法,这个项目就是用来提升翻译技能的,通过实例来指出新手译者容易犯的错误。既然获得了经验,利用起来多练个新技能也不坏不是吗?
    今日推荐英文原文:《The Biggest Sign of a Senior Engineer》作者:Jason Cromer
    原文链接:https://medium.com/@JasonCromer/the-biggest-sign-of-a-senior-developer-547598987e02
    推荐理由:有经验的人从来不会疏忽战前准备

    The Biggest Sign of a Senior Engineer

    I am always surprised when I overhear a conversation about what makes an engineer senior, and the most important virtue is completely left out.

    It’s not that people forget, or that it’s an unknown trait.

    In fact, I think it’s the opposite: it’s something so well known, that we often take it for granted.

    It becomes an overlooked part of software engineering, and because it’s overlooked, it makes the truly great engineers stand out.

    What is that virtue? It’s patience.

    Your work may take twice as long, but it will cost those working with it ten times less in the future

    I remember at my first internship, each project assigned to me would cause a sense of urgency. Always get your work done on time or early, right?

    Sure, you should always aim to get your work done before the deadline, or push back if you think the deadline isn’t reasonable. I’m not advocating for late work.

    What I am advocating for, however, is patience. Instead of hopping on your laptop and creating a new file/project, take a deep breath, a short walk, or a pause for a glass of water or snack.

    While you’re taking a short pause, take your time to think about the project. Approximately how long will each piece of the project take? How common are mistakes in the platform you’re going to be working on, and how long can those take?

    Walk yourself through the flow of the design or spec. See if you can play devil’s advocate for edge cases or something the project manager and/or designer may have missed.

    Once you’ve spent some time asking yourself these questions, start writing out a rough plan for you or with your colleagues. How will the project be broken up? Who will complete each set of tasks? How can you minimize overstepping and potential merge conflicts?

    If the task at hand is simple, now might be a good time to start digging into existing code and seeing how your new project will fit in. Otherwise, it may be beneficial to create an RFC (Request for Comments) or an architectural plan on how to execute the project.

    Have your colleagues look over and critique your RFC. Welcome the criticism, and use it to make your code cleaner, and life easier. Create a map of the project, using the questions you’ve asked yourself as directions along the road.

    At this point, you may have spent a few hours, or up to a few days, thinking about and designing the project you will be working on. While you can’t foresee every bump in the road, you’ve got a basic direction of how to execute the project, who will take which tasks, and pain points that could arise. You’ve taken these points in account for your deadline, and even added a few hours or days on top to give yourself padding for unforeseen incidents.

    Now you can start writing some code. Since you’ve created a well thought out plan, the task at hand will become a lot easier, and you’ll be able to push out well-architected code at a quick pace.

    Meanwhile, the engineer who started coding after the project meeting is rewriting their implementation for the third time after running into some problems. Problems you thought about after the first half hour of planning. Don’t be that engineer.

    After working with a diverse set of engineers, across multiple companies, in a wide age range, there’s one trait amongst the best that stood out to me:
    Patience
    It can be hard to push the urgency to start coding immediately back, but doing so will propel your progress and quality of work leaps and bounds ahead of other engineers.

    You’ll produce cleaner code, easier code for others to work with, and code that requires less maintenance. You’ll not only become more responsible, but your external perception will be that of a more responsible and reasonable person.

    Think. Debate. Plan. Take your time, and create a map and direction of your project before taking a dead-end road.

    Happy coding.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第529期:《复制粘贴 awesome-copy-rules》

    26 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《复制粘贴 awesome-copy-rules》
    今日推荐英文原文:《How I Explain to My Grandma That I Am a Front-End Developer》

    今日推荐开源项目:《复制粘贴 awesome-copy-rules》传送门:GitHub链接
    推荐理由:一个关于代码复制的注意事项。从别的地方复制一段代码到自己这里来实在不能算是罕见之事,实际上,这也是一个学习方法——你有了积木说明书上的理论,以及一个已经搭好任你摆弄的积木堆,自然就有足够的时间弄清楚所有积木的用处。而当你通过不断的找来新的积木堆弄清了每块积木的用处之后,自然就能随心所欲的将这些积木组合成你喜欢的样子了。
    今日推荐英文原文:《How I Explain to My Grandma That I Am a Front-End Developer》作者:Maks
    原文链接:https://medium.com/better-programming/how-i-explain-to-my-grandma-that-i-am-a-frontend-developer-8c7eb6cebcf9
    推荐理由:如何向七大爷八大婶解释你的前端开发者职业

    How I Explain to My Grandma That I Am a Front-End Developer

    Helping you explain what front-end developers are and what they do

    I’ve been a front-end developer for over two years. At times, I’ve found myself in situations where I had to explain what I do to people who know nothing about programming.

    So, now, I’m giving it my best to clarify how lines of code typed on my keyboard are transformed into something you can see, click on, and even use in your day-to-day life.

    Starting With the Basics: Programming

    We all speak a language. We use it for a lot of things but, generally, we use it for communication. The same works with computers.

    We want to make them do something for us, we communicate with them. Unfortunately, computers don’t speak English yet. However, they do use something called machine code. Simply put, the language of computers.

    So, skipping some details, we may say that programming is when you can tell the computer what to do by speaking their language. That is clearer now, isn’t it?

    Which Language Do You Speak?

    We figured out that we need to speak a language that computers can understand, but what is that language?

    There is more than one language we can use. All of them serve the same purpose — to turn our thoughts into something a computer can understand.

    Why more than one, you might ask. Here is the answer: each of them serves a different purpose. They are just tools and we usually choose different ones depending on the goal we want to achieve.

    Let’s take, for instance, a car and a bicycle. They both have wheels, take us to the desired destination — but evidently, we use them for different purposes.

    You’d probably decide to use a car instead of a bicycle if you want to go to another country unless you want to burn thousands of calories.

    In programming, it’s the same, but burned calories are equal to hours you spend on your work. You don’t want to spend thousands of them, right?

    In general, one language is better for analyzing data and forecasting, another one for calculations and statistics, yet another one for building websites, applications, and so on.

    Getting Closer

    Alright, I guess everything is still quite clear for you, so let’s get to something more specific that I do, personally. We’ll talk about creating websites and application interfaces.

    They are, simply, parts that you see when using any website. This is called front-end development. We finally get to the part where I explain in simple words what I do every day.

    HTML, CSS, and JavaScript

    Have you ever wondered how the browser works? How we can watch movies, listen to music, read the news on a portal, play games, and perform many activities, just by typing anything in a search bar?

    Behind the scenes, three core things make it happen — HTML, CSS, and JavaScript. I know, things are getting complicated, so let’s take a look at this simple example.

    Imagine a play button on your music player. The button itself — that’s an HTML element.

    HTML is used for adding content onto the page, such as text, images, links, and even videos. For example, HTML would allow you to put a play button in a certain position on your webpage.

    Following on from the example above, CSS would allow you to change the size, color, and style of the button you added with HTML.

    However, when you want to interact with said button and perform actions, for instance, music to start playing, a message to be sent, or log in somewhere — this is the work of JavaScript. It can be used along with HTML and CSS.

    Also, JavaScript is often used separately, when it comes to creating in-browser games, programs, and even mobile applications, which makes knowledge of this language a very powerful skill.

    Front-End Developer

    To put things simply, JavaScript is designed to make front-end development easier and more attractive.

    In most cases, JavaScript is used to create responsive, interactive elements for web pages that improve the user’s experience. Things like menus, animations, video players, and interactive maps can be created quickly and easily with JavaScript.

    Everything you’ve read above, that’s what we, as front-end developers do. We are responsible for creating those elements, putting them all together, and making them interact with each other.

    We are the builders of the part of the web that you can see with your own eyes. We are the guys who know how to speak with computers.

    Another great thing about programming: many people think that it is about logic and mathematics only. However, it is also about creativity, problem-solving, and thinking two steps ahead.

    It requires us to be constant learners, to teach ourselves to think ahead, and to be able to focus on something. We need to be patient, especially when it comes to solving complex problems, and to be ready to learn new things every day.

    Conclusion

    I hope that it is now clearer to you what front-end developers are and what they do.

    Moreover, if you’re a front-end dev, it will be easier for you to explain to your grandma what exactly it is that you do on computers the whole day.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第528期:《指南手册 javascript-testing-best-practices》

    25 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《指南手册 javascript-testing-best-practices》
    今日推荐英文原文:《How To Boost Your Productivity as a Developer》

    今日推荐开源项目:《指南手册 javascript-testing-best-practices》传送门:GitHub链接
    推荐理由:关于 JS 和 Node.js 的指南手册,记载了一些应当而值得遵守的要诀与关于它们的代码示例。这些要诀包括了前后端与测试等方面,有些要诀可以作为提升自己代码质量的阶梯,有些则可以发现并纠正自己编码习惯中一些长远来看会带来问题的细节,尽管这些细节可能短期内并不会带来问题,甚至能减少一些看似无用的努力。
    今日推荐英文原文:《How To Boost Your Productivity as a Developer》作者:Daan
    原文链接:https://medium.com/better-programming/how-to-boost-your-productivity-as-a-developer-e43ec34b3bcc
    推荐理由:工作提速小技巧,在专注工作是养成良好的习惯将会事半功倍

    How To Boost Your Productivity as a Developer

    Because who doesn’t like to get more things done?

    Do you remember the last time that you had a super busy day but didn’t get anything done? You stare at your screen for quite some time but no code comes out of your hands. Unfortunately, we all have a day like that sometimes. Those days can be really frustrating since everybody likes to get things done. And sometimes there are days where you are in a flow and get an enormous amount of work done.

    Getting things done is what really matters when you’re working. Tim Ferriss has a great quote about being productive: “People should focus on being productive instead of being busy”. A lot of people like being busy but don’t get that much done. This doesn’t feel very efficient. So how can you boost your productivity as a developer?

    Productivity Tips

    Minimize distractions

    This one seems quite obvious but is really important. Don’t check social media or the news when you’re supposed to work. All that this does for you is to waste your time! If you constantly get distracted, you will get pulled out of your zone and productivity will go to zero.

    Also, don’t forget to turn off notifications. We all know that we aren’t supposed to look at all these notifications, but it’s so tempting. Just turn off all notifications. Zero interruptions will give you extreme focus, which leads to big results.

    Don’t multitask

    Don’t review some other developer’s code while you are in the middle of writing a piece of code. Focus on one task at a time. What really happens when you’re trying to multitask is task-switching. And it takes more time to switch between tasks than to stick with one task until it’s finished.

    If you’re convinced that multitasking makes you super productive, you’re wrong. All that it means is that you backtrack a lot because every time you switch tasks you have to find out where you last left off.

    Optimize your IDE

    There are plenty of great IDEs available. Some of them come with a lot of tools out of the box. Others have the possibility to install plugins. These plugins can increase your productivity. For example, you could install plugins for syntax highlighting that make your code more readable and help you find syntax errors more easily.

    Another way you could optimize your IDE is by installing snippets. Snippets can save you a lot of time while coding since they allow you to not keep writing the same code over and over.

    Take more breaks

    What? Really?! The trick to getting more things done is taking more breaks? Although it sounds counterintuitive, it’s actually true. If you really want to get more things done, you should take a break more often.

    Working too long without breaks will eventually make you less productive. You can compare this with going to the gym. If you go to the gym for an hour, you will build muscle. If you train for two hours straight, you get overtrained and it will have the opposite effect. The same applies to writing code, in my opinion. Clear your head for a few minutes and refresh your focus. Stretch your legs or get something to drink. You will find out that you’re able to solve problems more quickly.

    Work on the command line

    The command line is a tool that gets used by very efficient developers. Working on the command line saves a lot of time compared to working with GUIs. Clicking your way through a GUI takes so much more time than doing the same things on the command line. It might take some time to learn how to work on the command line. But once you know your way around the command line, your productivity will increase tremendously.

    A great tip to work even faster on the command line: Create aliases for commands that you find hard to remember or to shorten very long commands.

    Be less random

    This one applies to people who freelance, but it could also apply to people who have a lot of freedom when it comes to planning their workday. Structure is extremely important if you want to be more productive. Don’t just take things as they come. Try to start working at the same time every day. The same applies when it comes to taking breaks, etc. If you have a certain routine in your workday, you’ll find yourself being much more productive.

    Learn to say no!

    Most people feel the need to be liked by other people, which often translates into saying yes to everything. This kills productivity. You need to say no to whatever isn’t leading you toward your goals. This includes saying no to distractions.

    Saying no saves you time in the future, precious time that you could use to work on your goals.

    Start Increasing Your Productivity Right Now

    Increasing your productivity is something that you could start with right now. As I said before, one of the things that you can do to increase your productivity is to minimize distractions. You could start by turning off your email. Try answering your emails once or twice a day and at the same time every day. You could check your email at the end of the morning and the afternoon, for example. These are the only times that you are allowed to check your email.

    Another thing that you could do to boost productivity is to say no to unnecessary meetings. This doesn’t mean that you shouldn’t attend any meeting, but we say yes to things that we don’t even want to do. Not attending a meeting will save you time to work on your goals. And we all have a meeting that’s held that doesn’t need to be held.
    “Work smarter, not harder.“— Carl Barks

    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
←上一页
1 … 126 127 128 129 130 … 262
下一页→

Proudly powered by WordPress