开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。

  • 今日推荐开源项目:《TweetDeck+GitHub=devhub》
  • 今日推荐英文原文:《Learning, Coding, & Freelancing as a Dad》


推荐理由:相信经常看推特的朋友应该都知道 TweetDeck 这个好用的简单推特,这次要介绍的就是像 TweetDeck 一样的 devhub。这可以更方便的管理你的未读消息,而且也可以通过自定义来方便的查看别的用户的活动,现在这个项目已经提供了 Beta 版的 web 试用链接了,有兴趣的朋友可以关注一下这个项目。


今日推荐英文原文:《Learning, Coding, & Freelancing as a Dad》作者:Tom Hall



Learning, Coding, & Freelancing as a Dad

I got married in 2012 at the age of 24. We a kid in 2013, another one in 2016, and another one coming in Feb 2019. We moved 8 times. Learning to code and working on side projects from like -2 weeks to 8 weeks or so of a newborn’s life is really hard. I did it once and I’ll never do it again. Just take a break. It’s tough to change careers, learn to code, and then improve enough to build good stuff. It’s even tougher when you have little kids.

And before I say anything else, I have to mention my wife Katie who has been the rock of our family since day 1. She’s put up with a LOT. Having someone like her is a huge blessing and a huge help.

I was going to put her picture in here but she just gave me the look of “don’t you dare.” ?

So is it possible?

Yep, it is.

Is it hard?

Yep, it is.

Is it worth it?


I started learning to code in Python at my Sr. Analyst job. But things didn’t really ramp up until I got a Jr. Web Dev job a few years later.

What made the difference:

  1. people were relying on my work
  2. clear, defined tasks/projects
  3. set of tools chosen for me*

* If nobody is choosing for you, then just choose and go with it. Skills transfer well in the coding world

How can you duplicate this to learn from home?

  1. get together with another person wanting to learn and work together to get something in production
  2. before you jump in, write down exactly what you want to build, generally what you want it to look like, and what you want it to do
  3. just pick something and go with it (for me, it was Ruby on Rails)

My real learning came when I got hired as a junior developer on a marketing team. Really all I had to do was build marketing websites, not even linked to marketing tools. But it was an amazing start because I had people who were relying on me. I had defined projects and set expectations. I had other people to ask how to do stuff. The last one I think was the least important for learners, you can get help from a lot of people across the world.

I started tinkering with code about 8 years ago. Since then, I’ve dabbled in Angular, built stuff with Rails, jumped into React, and have several projects underway.

So how did I learn to build and deploy stuff?

Code At Night

How do you learn to code and change careers with little kids?

The answer: harden up and get to it. If you’re not working towards building something, it’ll be the worst. If you are, it’ll suck a lot less.

That might be too harsh, but the trick is to just put in the hours. I would go to work, come home in the evening, help with the kids until they went to bed, and then start coding at 8 PM or so. This is when most parents start winding down to hit the hay.

The key to my learning was just doing it. I logged many, many late nights trying to figure out how to hook up Stripe Connect so my clients could accept money and I could strip a fee off the top.

If you want to learn how to code, it’s going to take a while. And that’s okay because you can build little stuff on your way to bigger, better stuff.

Make a version of Tic-Tac-Toe that you and a friend can try out. Build a real estate investment helper that pulls all the houses in a zip code and parses out the ones built in 1990 over 2000 square feet. Pull in tweets that have exactly your name in them.

And then build bigger stuff.

But where can you learn new stuff?

Online classes like those ones linked and tutorials. The main way I’ve learned how to code is building. I’m not a really good idea generator, but my friend is. So he’d throw out an idea and we’d try and build it. And we built a ton of stuff:

  • a CRM and route manager for pest control companies
  • a route manager for garbage bin cleaning companies
  • an embeddable ticketing widget
  • an embeddable email capture widget
  • an election task manager
  • a bank account watcher
  • a mobile weather app
  • a book reading tracker
  • a smart SEO-centric blogging tool
  • an online store
  • a video player/course manager
  • and more that I can’t remember right now.

All but a few of these projects are in production (on the web for anyone to see), which is another story altogether. ?

That was all in about 8 months. I went from not knowing how to send an email to have hundreds of people using my app in production.

Truthfully, there’s nothing really special about me or my brain. You can do it if you put your back into it. Sweat equity

The key to improving is to try and consume as much good development content as you can sustain. I like the word sustain on the end because you can listen to 10 eBooks in a weekend, but if you don’t keep practicing coding and trying out new things and looking up how professionals do it, most of that info will slip away and you won’t be a better coder.

Lessons Learned & Keys To Improving

Practicing the right stuff will also make a big difference.

Learn how to test your software.

From 2010–2016, I wrote a grand total of 0 tests. I didn’t know how to test software other than running in the browser and pretending to be a user. Learning how to write good tests and really practicing writing tests will make a huge difference.

Review apps you finish and see what you can learn from your own work

This one is huge. You have a perfect opportunity to look over your own code and Google different parts of it. See if there’s a faster way to write that loop, or see if you even need that loop at all. Audit your packages and make sure you’re actually using them all. Get a better understanding of what that CSS library already has — maybe you’re duplicating classes. Optimizing your own work can be some of the best learning experiences you’ll have.

Keep watching/reading tutorials and reading/listening to books by smart people

These don’t have to be code-centric. They could be about business, marketing, sociology, networking, or whatever. Or they could be all about how to use React Hooks. Think about where you’re at, think about what is the thing that’s most out of whack or behind, and focus on that. What you focus on will change over and over and over again. So just think about what you need to work on the most, and do that. If many things seem tied as the worst, pick one and go with it. The most important thing is to keep going, keep consistently learning and trying.

Speed Learning for Total Beginners

  • Jump right into a text editor
  • Don’t fear the editor. Jump right into a .html file, open it in the browser, and start trying stuff out. Try out what the difference CSS styles do. See what happens when you nest HTML elements (put one inside another).
  • Push your best thing live as quickly as possible
  • There’s something about having your project live that really inspires you to build more. Maybe it’s that now you have something you can share with other people. Whatever it is, I think having a project, a website, a blog you built live is important.
  • Keep consistently learning and developing
  • It can be hard to have other things come up. At the time of writing this article, I’ll have another kid in 2 months. Learning and developing will have to slow down for a bit. I tried developing through paternity leave and it was awful.
  • Iterate on your favorite project
  • Many times, you’ll figure out something you could build that can actually be a benefit to someone. While you’re still learning and trying out new things, I think a really good thing to do to progress is to have a look at your own work and see what could be improved. As stated earlier, it can be a delightful, productive experience
  • Join meetups and code groups
  • Looking at other experienced people’s code can be a huge benefit. Talking to them about how they did that in person can also be huge. This could also include conferences big and small.
  • Work on open source projects
  • Learning how to log an issue, implement the fix, create a pull request, and push your code up for review can be an unparalleled way to learn. You’ll get free feedback, sometimes from some of the world’s best developers. Where else could you get that?

To wrap up, if you want to learn to code, you should chase that dream. It can be the best thing ever. Even if it just helps you think a different way, that could pay off big time in your non-coding job.

If you have kids and are dead at 8PM and don’t see how you could do it. Just go for it. If you get sick, take some Vitamin C, sleep when you can, and keep at it. It’ll be super hard and take a long time.

And you definitely should.

每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,欢迎关注开源日报。交流QQ群:202790710;微博:https://weibo.com/openingsource;电报群 https://t.me/OpeningSourceOrg