开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
今日推荐开源项目:《简单为美 Katana》
今日推荐英文原文:《Everyday Activities to Help You Become a Better Developer》

今日推荐开源项目:《简单为美 Katana》传送门:GitHub链接
推荐理由:要想为浏览器页面布局的话起一个 Flex 或者 Grid,再或者把 BootStrap 搬出来都是可以的,但是如果要想做到像 BootStrap 那样布局又不需要额外使用它的组件,这个项目兴许就能做到。这个项目使用 Flex 做出了简单的布局方法——与 BootStrap 类似,使用列的方式规定元素长度,再加上一点整体布置,就完成了一个简单的布局框架,当你不需要杀鸡用牛刀而只想使用布局的时候,这个项目的布局能很好的代替 BootStrap,语法上的相似让你能轻易切换到这边来。

今日推荐英文原文:《Everyday Activities to Help You Become a Better Developer》作者:Thomas Guibert
原文链接:https://medium.com/better-programming/everyday-activities-to-become-a-better-developer-3d00ec8d14a5
推荐理由:坚持每天学习以进步,不管是什么方面

Everyday Activities to Help You Become a Better Developer

Getting better every day is the goal of many developers

Doing tutorials and reading documentation should be part of your daily routine. But do you feel like it’s not enough though and you need some more ideas?

Below, you will find a list of side activities I’m doing. I hope it will make you want to give them a try!

Side activities you can start today!

I would like to start by pointing out that it’s nice to work on multiple activities in parallel.

Doing the same activity for too long can get boring, which becomes counter-productive, in my opinion.

Rotating between multiple activities or projects gives you the choice of doing something else when you get bored.

1. Algorithm Coding Challenges

Doing an algorithm coding challenge is playful. No matter what your level is, there are challenges to match your skills.

My recommendation is to do one with your coworkers.

I did it with my colleagues in my previous company. On the morning, we choose a challenge and gave ourselves 15 minutes to solve it.

After 15 minutes, we compared our codes to see which was optimal. It created debate and was always interesting.

You can alternate between easy challenges and more complex ones. The objective of easy challenges could be to come up with the optimal solution. For hard ones, it would be to at least try to solve the problem.

Here are two famous websites you can use: FreeCodeCamp and HackerRank.

I like them both! They propose in-page editors and there are challenges for any levels. Moreover, both of them come up with solutions for each challenge. There are usually multiples solutions, from the less optimal to the most.

Analysing the different options, and understanding why one is optimal, really teaches you a lot.

2. Participate in Open Source Projects

I’m sure there’s an Open Source package that you love. How about giving its community a hand, helping them to fix open issues or develop new features?

There are a lot of benefits to this. Two of them are that you will get a better in-depth understanding of the project itself.

More than that, you will get to work with developers you don’t know, interact with them and that’s a great valuable experience in collaboration.

If contributing to an Open Source project looks scary, don’t worry — there are solutions:
  • First Contributions’ project aims at providing guidance to beginners who want to make their first contribution.
  • GitHub Help Wanted is an app that allows you to filter by language and issues label to find a project you can help.

Good first Issues opened on styled-components package repository

Commonly, easy issues will be labeled with names like: Good first issue, Easy, Good for beginner, Up for Grabs, etc.

3. Create a Package

This is another way of doing Open Source.

Let’s say you had to build an awesome bulletproof component for your React application because you couldn’t find one to do the job correctly on NPM. It could be nice to create a package from it so it can be used by other developers.

I created my first package not so long ago — a feature we needed for our product at work.

While I tried my best at work to make sure there were no bugs in this feature, transforming it to a NPM Package made me want it to be even more bugless!

That code will be used in other projects and if it works in my project it will work for any of them. So, I spent lots more time on it, to perfectly document it (who knows, a developer might find it and want to help!) and to perfectly understand each line of it.

It’s satisfying to see the amount of downloads of my package going up (only a few hundred so far but still!).

4. Start Your Own Product

This is the perfect side project for entrepreneurial folks. By being developers, we can build almost what we want. Personally, I would like to one day launch a successful product.

This is the most comprehensive project you can have.

If you manage to create a successful product the first time then lucky you, but it will probably take multiple attempts!

No worries, falling is okay. Working on a product will teach you so many things — programming knowledge, of course, but also:
  • How to write specifications (being alone doesn’t justify not writing any).
  • How to market your product, monetise it.
  • Define how you want your users to experience your product.
  • How to solve problems while developing it.
  • How to be rigorous and attentive to small details.
That’s priceless expertise you can benefit from, without really taking any risk at the beginning.

I love working on products in my spare time. They have all failed up till now but that’s not a problem. I’m not perfect — I’m learning — and that’s the whole point!

Every time I’m working on a product, I’m so excited that I could work on it 24h a day. In my case, this can be counter-productive because I don’t take the required time to step back, but everyone is different. It teaches you to discipline yourself and discover how you want to work.

I feel great satisfaction when I can start an app from scratch. Honestly, I’ve never applied the same file structure to the projects I have started because I improve it every time.

Finally, the Community of Makers is huge. Here are some links to get started:
  • Product Hunt: The place to find all newly released products, perfect for inspiration, perfect to see how product developers are building their ideas.
  • Levels.io: If there is one person to follow in this community, he’s your guy. He’s built many successful products over the past years. That’s a real maker. You read his piece called Turning side projects into profitable startups — it’s very inspiring.
  • Some other interesting links… wip.chat, Makerlog.com, Indiehackers.com,

5. Write for Publications to Share Your Knowledge

This is the most time consuming for me. You don’t realise how hard it is to share your knowledge until you have to do it. It takes a lot of time to write something in an interesting way and to check it 100 times to be sure you are not sharing incorrect information. I want to be convinced it will please readers and that they’ll learn something.

I think it’s happened to many of us — getting stuck in a tutorial because there is one missing step or a bug that’s not covered. You came to learn one thing and now you have to try to fix something that shouldn’t be there in the first place. How frustrating.

I spend a lot of time making sure it will go smoothly for readers. In doing so, I almost always find there is one step that’s not clear enough.

For example, there might be ten lines in my project copy-pasted from StackOverflow and I’m not 100% assured of what it does (there’s no shame in that). Before I publish my project, I’ll understand it. If necessary, I’ll spend an hour or more on a line of code — until I’m confident I could explain it if someone was asking.

That’s a lot of work but I’m really happy when I publish something. I get even more happy and excited when someone claps something I wrote! The feeling you get when your piece has been useful to someone is better than a cup of coffee.

To get started, my advice would be to take your time. Publishing something unfinished won’t interest anyone — you won’t be proud of yourself. It would be sad to feel demotivated after your first publication, when you were so excited to publish it in the first place. Take your time, make sure you cover the topic in the title and make your piece interesting by giving sources, examples, and your own opinion.

6. Stream Yourself Doing One of the Previous Activities

Being able to explain what we’re doing while coding is a great skill.

As developers, we’ve all been through technical interviews where we were asked to solve a problem on a whiteboard or an exercise of some kind.

Being smart is cool but it’s even better if you know how to talk about what you’re doing! The ability to clearly describe how you are solving a problem can put your resume at the top of the pile. While it might be easy for some people, others have to train that skill.

Streaming yourself on a platform like Twitch allows you to practice your oral skills. The exercise is to be able to talk about what you are doing. What problem you are solving while coding.

As a streamer, you want to be interesting for your viewers.

I like to stream myself when I work on a product. For two reasons:
  • I can get feedback on the product I am building and get my potential first users. They can also share ideas for features I didn’t think about.
  • I don’t want to be scrolling Twitter while streaming, which means I’m super productive. Before turning on the stream, I write down what I want to achieve during that time and I usually get it done 50% faster.
Do not look at the number of viewers while streaming — no one cares. There might be no one, there might be 235 viewers, it’s not important. Tell yourself there are 10,000 people watching you and you have to make what you are doing interesting for them.

If you don’t feel like streaming yourself yet, watch other streamers first. On Twitch streaming platform, there are two: Basic Programming and Science & Technology. There are more streamers on Science & Technology.
These are the activities I do on a regular basis. I hope you will try some of them. The most important thing is to do something you like!
下载开源日报APP:https://openingsource.org/2579/
加入我们:https://openingsource.org/about/join/
关注我们:https://openingsource.org/about/love/