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

开源日报

  • 开源日报第512期:《仅仅一瞬间 trace.moe》

    9 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《仅仅一瞬间 trace.moe》
    今日推荐英文原文:《25 Lessons I’ve Learned as a Developer》

    今日推荐开源项目:《仅仅一瞬间 trace.moe》传送门:GitHub链接
    推荐理由:兴许在不少时候,最开始接触某部动漫的契机就是见到了某个名场面的截图。这个项目就能解决只知道图片不知道来源的尴尬问题,只要输入一个图片,它就能返回给你图片的出处,出现的具体的章节和时间点,以及这部动漫的具体资料,从此不再需要问你那见多识广的朋友们“这是啥番啊?”的问题了。

    今日推荐英文原文:《25 Lessons I’ve Learned as a Developer》作者:Aphinya Dechalert
    原文链接:https://medium.com/better-programming/25-lessons-based-on-my-experiences-as-a-developer-61644418a3ed
    推荐理由:作者在开发者的路上学到的经验教训

    25 Lessons I’ve Learned as a Developer

    Being perpetually curious, coding to the conditions, bigheadedness, and more

    I actually started coding a long time before I got my first job as a developer, booting up websites here and there for friends, and friends of friends. I grew up in the days of dial-up Internet, floppy disks, and cassette tapes — the classic 90s kid with the Fresh Prince of Bel-Air theme song playing around dinner time.

    My first real job as a developer was somewhat accidental. I was hired to play the new marketing girl but ended up refactoring the entire mobile application front-end within six months of getting the job.

    It was a weird jump and a massive learning curve. It was my tinkering days that got me through the door.

    As we pass the midway mark and make our way through the second half of the year, I’ve been reflecting and thinking about my journey so far as a developer.

    Here are 25 lessons based on my experiences and what I’ve learned from my journey thus far.

    Lessons I’ve Learned as a Developer

    1. Everyone is essentially self-taught in the industry. Tech generally moves too fast for traditional educational institutions to catch up. If you want to boot up something quick, you’re better off doing micro and nano degrees and certifications rather than sitting through three years of exams.
    2. Traditional education still has a place in foundation studies. A bachelor’s degree is one way to get your foot through the door but it isn’t the only way. If your brain is more practical than theoretical, and you can’t fund student loan repayments for the next 10 years, the Internet has a lot more guides and structures available now than it did 10 years ago.
    3. To make it in the industry, you have to be perpetually curious. You’re constantly asking questions about how things work, why things work — especially in eureka moments when everything finally falls into place.
    4. For a long time, you’ll feel like you’re not really improving — until you look back at your old code or have to explain something to someone.
    5. The amount of code you create matters as a junior. Learning to code is like learning to write. The more you write, the more you’ll start to notice patterns, inefficiencies, and how to fix them.
    6. As a junior, you’ll hit a stage of bigheadedness and think you know everything. As an intermediate, you’ll find yourself deflating egos that you once exhibited. As a senior, you’ll give just enough guidance to steer your less-experienced peers in the right direction, but you’ll also let them struggle just a little bit because it’s all part of the learning-to-create process.
    7. Bugs occur because there is a gap in knowledge. Code is an act of translating requirements for the compiler to transform into ‘computer speak’. When things go wrong, it’s because there’s been a blip in the translation by the developer.
    8. When people tell you that you’re doing agile but don’t let you in on the planning phase that directly impacts you, it’s not real agile.
    9. As a developer, you’ll be in a constant state of knowing but not knowing at the same time.
    10. Formatting is the deal-breaker when it comes to readability.
    11. Code is a communication tool. Write it in a way that is human-readable and not littered with secret code names that only the initiated will understand. When that happens, the code is incapable of being self-documenting and concise.
    12. Functional programming patterns have their place in making things less complicated. Object-oriented patterns also have their place as an organization and categorization tool. These two patterns are not mutually exclusive from one another and co-exist if necessary.
    13. Code to the conditions. Over-abstraction for the purpose of ‘best practice’ can lead to more technical debt in the long run.
    14. All software ages. ‘Perfect’ code five months ago has the potential to be inefficient code due to changes in requirements, dependency upgrades, and unaccounted-for bugs and blips in logic.
    15. Your database is everything. If it’s over-engineered, chances are that your back end will also be convoluted as a side effect.
    16. When working in teams, a flat and automated process will be the deal-breaker for your productivity. A flat structure means you can move code through the pipeline faster, and automated means less time clicking, typing, and waiting for things to get done.
    17. Inheriting bad code is a rite of passage. Everyone goes through it at some point in their careers. It is also an opportunity to learn from the mistakes of others, and space to do good things for the future direction of the software.
    18. You’ll constantly be cleaning after others and your past creations. This is because code is like food — if it’s not actively consumed, it becomes legacy and can turn bad with age.
    19. Work-life balance is still relevant for developers because we’re all still humans. Don’t be the stereotype and neglect yourself, your friends, or your family. Take care of yourself and don’t let the code life take you over.
    20. If you feel like you’re on the brink of a burnout — stop. Take a break and then come back — but to code that has a higher purpose or personal meaning to you. Software is the interface between the customer and the business. As developers, we act as the force that allows this to happen. It’s alright to jump ship if you feel like you’re not really contributing to this — or you simply don’t believe in it. You need to be proud of what you’re making. Regardless of where you end up, you’ll still make a decent income.
    21. Don’t get too hung up on other people’s code. Work with what you’ve got. Focus on improving yourself to become the benchmark.
    22. If no one is calling you in for an interview, get creating. If you’ve got no experience to put down for your resume, get creating. If you’ve got a spare weekend and have an idea, get creating. As developers, we are in the business of creating code. The moment we stop is the day we risk becoming part of the management team.
    23. Don’t just learn to code. The bigger your domain of knowledge, the easier it will be to code your projects. This is because coding is transforming the world, its rules, and processes into a digital representation of reality. You can’t effectively create something you don’t understand.
    24. You will never know everything there is to know about code — but ideas are finite. It’s better to have a large repertoire of ideas and use them as the guideline for your code creation process. You’ll end up with sturdier software.
    25. Software books are still worth reading and investing in. That’s where a lot of the big ideas are explored in depth — especially those by Robert C. Martin and Martin Fowler. They are the industry gods among us mere mortals.

    Conclusion

    The journey that’s lead me to where I am right now as a developer has been peppered with good and bad code, interesting solutions, and not so great architectures.

    As I move into flying solo and doing more freelancing and contract work, my experiences as a developer will certainly grow and move in a different trajectory.

    But for now, this is it and until next time — thank you for reading.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第511期:《一种新的形式 LoveRecord》

    8 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《一种新的形式 LoveRecord》
    今日推荐英文原文:《The Dirtiest Word in Software》

    今日推荐开源项目:《一种新的形式 LoveRecord》传送门:GitHub链接
    推荐理由:昨天是七夕节(别问昨天干啥去了,问就改代码),相信情侣和非情侣都有自己不同的过法吧。这次要介绍的项目是一个用编码能力来支撑的表达爱意的网站——这只不过是表达爱意的另一种形式,就如同工匠选择制造,歌手选择歌唱,诗人用诗句赞颂一样,表达爱意的形式千变万化,但是爱的意念始终作为形式的核心,只要牢记这点的话,就算形式再怎么变换,相信某人总是能感受到的。
    今日推荐英文原文:作者:
    原文链接:https://medium.com/better-programming/the-dirtiest-word-in-software-6590162707a3
    推荐理由:理想很丰满,现实很骨感

    The Dirtiest Word in Software

    Better wash your mouth out with soap

    I swear a lot. Imagine a sailor in a bad mood, with Tourettes. That’s me. I’ve concocted swear words that would peel the paint off the Sistine Chapel. Alas, even with my repertoire of riotous racket, I can’t come close to this word. Prepare yourself.

    The word is… prediction. Wow, look at it. Ten letters, all lined up in a particular order. Screw it, I’ll say it again. Prediction!

    Why exactly is it such a bad word? Why does it strike fear into the hearts of engineers all over the world? Why is it that even typing this word sends shivers down my spine?

    Predictions Are Always Wrong

    True. The accuracy of predictions in software leaves a lot to be desired. Every single day we see this: deadlines go unheeded, estimations fall to pieces, meetings are overrun, and budgets are maxed out. Many of us have been burned so often that whenever we’re faced with a date, we panic. “It will be done when it’s done!” we screech, with no hint of past trauma at all.

    What Can We Do?

    We know software isn’t predictable — it’s fraught with variance and hidden complexity. We first need to accept that fact. Things go wrong, and things break. However, much like when we guess the weather, we have tools at our disposal. Tools that can limit the variance, change our perspective, and fine-tune our predictability.

    My next articles are going to be on predictability. In them, I will explore the key components of software prediction: the misconceptions, the dysfunctions, the successes, and the outright failures. We’ll go from batch sizes to Poisson distributions to Little’s Law and all the way back. And because I love you guys, we’ll get started right now.

    Batch Sizes

    No doubt, an agile coach has chased you down a hallway by now. With their arms full of Post-its, they’ve howled, “Beware the batch size!” If you’re smart, you would’ve hidden in a cupboard and waited for them to get tired. But what the hell is a batch size?

    Imagine a road. That road has got cars flying up and down it all the time. Small coupès dance in and out of the lanes. But one day, a series of lorries pile into the road. Ten of them, all at once. We’ve all likely seen this before — it forms a traffic jam. Why?

    Motherfreaking batch sizes

    The road can handle lots of small cars that zip in and out of the lanes. However, when a collection of 16-wheeler trucks appear, trouble begins to brew. A large batch of work will suddenly slow other things down. Those little cars are now stuck behind the trucks.

    And how does this relate back to predictability?

    A key element of predictability is ensuring that things can flow through your system of work. Your team should be able to quickly pick up a task, ascertain a solution, and deliver it. Large tasks take a long time to solve and deliver.

    I know what you’re thinking. Half can do the big task, and half can do the small task. Easy! Yet, for a moment, think of the road. The more tasks you kick off in parallel, the more cars on the road. More cars mean longer queues. Teams are almost always disrupted by large batch sizes.

    So How Do We Improve This?

    When we’re refining our backlog, make sure that the tasks closest to the top are nice and small. The thinnest possible slice is the phrase I keep hearing. Shave the feature down to its purest form. Reveal the essence of the task, the spirit of the story.

    With a collection of small stories, there are no lorries on your road. The team can regularly build and deliver working software at rapid intervals. Regular delivery forms a rudimentary kind of predictability. You know that if this small task appears first, it’s very likely to be done sooner.

    The next time you’re stuck behind a lorry, or infinitely worse, a stray tractor, remember this. Large batches cause queues. Queues delay work. Delays are the number one cause in unpredictability and missed deadlines. Break down the batches.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第510期:《反面教材 WorstVolumeControls》

    7 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《反面教材 WorstVolumeControls》
    今日推荐英文原文:《The worst volume control UI in the world》

    今日推荐开源项目:《反面教材 WorstVolumeControls》传送门:GitHub链接
    推荐理由:如何用最差的方法设计音量控制器(其一),虽然这个方法实际上还算是相对比较人性化的那种,如果想看更加非人哉的例子,请参考今天的英语文章推荐。如果斗胆尝试此项目,请务必在非外放模式下,不播放任何音频时进行,不然就可能会体验到包括但不限于耳膜爆破,奥术魔炮,死亡咆哮等等的感受,请勿轻易尝试。
    今日推荐英文原文:《The worst volume control UI in the world》作者:Fabricio Teixeira
    原文链接:https://uxdesign.cc/the-worst-volume-control-ui-in-the-world-60713dc86950
    推荐理由:设计令人脑壳疼的音量控制 UI

    The worst volume control UI in the world

    A group of bored developers and designers has decided to start a thread on reddit to figure out who can came up with the worst volume control interface in the world:
    Yep. That super simple volume control UI we interact with several times a day. How can we make it extremely complicated?




















    About “wants”, “cans”, “needs”, and “shoulds”

    The original reddit post has now hundreds of examples of terrible volume UI, and it keeps growing — a fun exercise/joke, that can strengthen one’s creative muscles and ability to think outside of the box. People have been participating simply for the fun of coming up with the most absurd and weird interactions and interface elements.

    But there’s definitely a reflection point about the state our industry here.

    I’m sure a lot of people reading this has, at some point in their careers, felt that urge of innovating no matter what. An uncontrollable desire of redesigning something that hasn’t been redesigned for too long. It has to be recreated. And it has to be innovative. Right?

    That’s where the wants, cans, needs, and shoulds story comes in.
    • Everybody wants to innovate. The design industry keeps nudging us to be creative, innovative, and to deliver design solutions that have never been thought of before. Pressure is on us. We are bombarded with messages telling us that, in order to be considered a solid designer, we have to innovate at any cost.
    • A lot of people can innovate. I definitely can redesign the volume control UI. All it takes is a bit of creativity and moderate design skills. Prototyping tools are becoming increasingly accessible, as well as other technologies that allow to bring to fruition whatever idea comes to mind. A few hours in front of Principle or Framer lets you create an extremely refined prototype of the interaction you are envisioning. You can also decide to create an app/site/chatbot to solve that same issue. You can.
    • No one needs to. Let’s be honest: the volume control design pattern has been around for decades, works pretty well for the majority of users, and is incredibly familiar to a lot of people. You don’t need to reinvent it.
    But then there’s the should.

    Should I redesign the volume control UI?

    Should is interesting because of its subjectiveness. It’s a question that only makes sense to be asked in first person. And you have to know about much more than just design to be able to answer it — you have to understand about business, technology, culture, people. Answering the should question is a skill you only get after many, many years answering questions alike.

    We can try to quantify or measure the should, which makes sense some of the time. But part of it is, and will ever be, intuition. How is yours?
    下载开源日报APP:
    https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第509期:《自我定制 my-2048》

    6 8 月, 2019
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《自我定制 my-2048》
    今日推荐英文原文:《The Importance of Soft Skills in Software Development》

    今日推荐开源项目:《自我定制 my-2048》传送门:GitHub链接
    推荐理由:这个项目可以让你自定义 2048 游戏中的文本,如果把这些数字换成别的主题,游戏可能就大不相同。不过还不止这些,这个作者在基础的 2048 上还设计了不少有意思的游戏:2047——想方设法从不同的位置放置方块击败电脑,flappy2048——小鸟管子游戏与 2048 结合的船新版本等等。就算是简单的游戏,通过组合也能玩出花来。
    2047:https://hczhcz.github.io/2048/2047/
    今日推荐英文原文:《The Importance of Soft Skills in Software Development》作者:Albert Kozłowski
    原文链接:https://medium.com/swlh/importance-of-soft-skills-in-software-development-16df6a26c7b8
    推荐理由:尽管技术类之外的技能不像技术类技能一样容易衡量能力——口才,交流等等,但是这并不能说明它们不重要

    The Importance of Soft Skills in Software Development

    How neglecting them might cost you in the long run

    Many younger developers (including my younger self) underestimate the role that soft skills play in their jobs. Focusing only on technical skills seems more compelling especially at the beginning of a career. After all, it is much easier to measure progress and gain a better paid position when one knows new programming languages or frameworks, as opposed to trying to market skills that are not easily quantified. However, underestimating soft skills may also lead to problems, especially when trying to communicate within the company. From this perspective, written and verbal communication become essential skills to have especially as one gains seniority. For instance, technical leads should not only have the ability to convey technical solutions at different levels, but also need to be able to inspire teams, and communicate the business viability of said solutions.

    Having said so, I made the mistake of heavily underestimating soft skills at the beginning of my career as a Software Developer over ten years ago.

    Back then I was spending most of my free time reading about design patterns, new frameworks, and working on side projects. While this landed me relatively quickly in a position where I was leading technical decisions, not having the appropriate level of communication skills led to frustration due to my inability to inspire my peers and get ideas approved by Management. I had a hard time understanding why some of the good ideas got rejected, and ultimately, made me see many people as an obstacle to innovation.

    By the time my son was three years old, I noticed that his inability to express needs made him angry and frustrated. It was an interesting observation that led me to question whether I was facing a similar situation. Looking back, it is clear that my struggles with communication were the root of my frustration, but at the time this was not an easy concept to grasp.

    Eventually, I started being more aware of the way in which I communicate with people and started to notice that my ideas were not always clear to others. In fact, they seemed chaotic by the way I was delivering them. This realization and my willingness to work through it ultimately helped me improve my leadership skills.

    Here are some of the lessons I have learned over the years and how they may help you on your journey:

    Pick your battles

    Attempting to change too many things at once tend to make people defensive, and small changes are much easier to communicate and implement. Therefore, it is better to opt for evolution rather than revolution. This not only makes it easier for organizations to prioritize decisions within the company, but also protects bigger projects from being shut down due to minor details.

    Listen before talking

    People like to be involved in the decision process rather than being told what to do. Before proposing changes, listen to the concerns of all constituencies, and address them before making an official proposal. This will pave the road for early support where there could have been opposition. After all, it is sometimes hard to make people change their mind once it has already been set and having external opinions can help you address the problem from a different point of view.

    Write more, write better

    Given that teams are often communicating through tools such as Slack, Jira, code reviews and email, it is important for everyone to improve their written communication skills. This realisation was a game changer for me, especially as English is my second language and conveying ideas in a clear way was often challenging. Being able to deliver your message in a concise manner could help inspire others, resolve conflicts, and even sell ideas. By writing more, you will eventually write better, and your ability to persuade and get the point across effectively will also improve.

    When I look back at the beginning of my career, I see that underestimating the importance of soft skills was one of the biggest mistakes I could have made. I also see the same mistake being repeated by many other developers, some of who are brilliant people yet are getting caught in the same cycle of frustration due to their inability to articulate their thoughts within a team.

    Things that initially seemed tedious and unimportant such as building effective presentations or writing, became a key part of my day when I moved to senior positions. Being able to adapt to new teams, managers, and customers became just as important as adapting to new technical challenges. After all, the ability to sell solutions to the team is often as important as designing them. Therefore, all technical leads should value soft skills and continuously develop them along the technical skills in order to carry ideas to fruition.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
←上一页
1 … 131 132 133 134 135 … 262
下一页→

Proudly powered by WordPress