DEV Community

Daisuke Majima
Daisuke Majima

Posted on • Originally published at qiita.com

How I became a freelance engineer earning 1M yen/month from zero experience

I think there were three keys to going from zero experience to making a living as a freelancer:

  1. Make time
  2. Grasp the big picture
  3. Put yourself out there

Let me go through each.

1. Make time

When deep snow piles up, you want to go out and play, right? Build a snowman, dig a kamakura, have a snowball fight. It's the same: when you have room in your schedule, the urge to experiment shows up. Fail once and you can go "okay, let me try it this way" — trial and error. Like a kid rolling around in the snow. You get to fail. Wasted time matters. Heck, curling up under a kotatsu is fine too, lol.

I'd dabbled in programming in the gaps of my old job, but it never came together. When you fail once in the cracks of a day job, there's no "next try."

So I became unemployed. Did I immediately throw myself into programming because I had time? Not really, lol. For a while I watched Netflix and went for walks. Gradually that got old, and the programming I picked up out of "isn't there something to do?" started to get fun. I think that's about the pace at which self-motivation is born.

That said, making a big block of free time is hard for most people, so a rule like "make one hour of space a day" is fine too. Once you start, habitual momentum builds.

2. Grasp the big picture

When things aren't going well, I think it's usually when you can't see the whole picture. A kid who can't do a pull-over on the bar will try the first kick, but can't picture how that kick connects to the rest of the motion or where it sits in the whole. So they just keep kicking higher and higher. People who can't escape the beginner course can tackle one element but don't know where it fits in the whole. Learning that you can't connect to anything means nothing.

To get good at something, I think it's important to feel the whole picture, even vaguely. With the big picture in place, you can connect the element in front of you organically.

When you start learning to program and do some "copy the code" practice, you don't know how to actually use it. Classic beginner stuff. "1+1 prints like this" — "but how do I get from here to building an app??" I was the same. I took online courses, bought O'Reilly books.

How did I break out? I took Stanford's course — CS193p, the iOS course. After taking it, I could build apps. It covers the knowledge you need to build an app: "you'll really understand everything you need." Being a top university, it's top-tier clear. It's structured so you feel the landmarks needed to build an app and how to connect them, hands-on. I genuinely became able to build.

Finding something that shows you the whole picture as one set really matters. Like a carpenter's apprenticeship — at first you just plane wood until the shavings come out clean, but the planing itself isn't the point; being next to the master and watching them do the job from 1 to 10 is. Imitating people is important for grasping the whole.

Once you understand the whole of "building an app," then whenever you want to make something, you know which knowledge you're missing. After that you just pick up the needed pieces from the web and drop them into the big picture. The course's final project was "build your own app." I decided to add some cutting-edge tech to what I'd learned, hunted for interesting frameworks online, and tried building an app using machine learning. In the end, whether it's ML or iOS or anything, if you search the web there's documentation, prose, and code, and if you read it properly (as long as you have the big picture), you can understand it. Knowing the big picture and where the information lives massively expands what you can do.

Back to CS193p: all the lectures are free on YouTube. English-wise, YouTube's English captions got me through. Watching the whole of "Breaking Bad" in English helped too, lol. Understanding English lets you read docs in the original, which is handy. Though Google Translate is excellent now, so English is much less of a barrier.

3. Put yourself out there

Like the cat in the box, until you're observed, to others you may as well not exist. Ability alone doesn't bring work. You have to break out of the box, stick your head out, and go "meow." An efficient way to shout "I'm here!" is to publish information online.

Write technical articles, publish the information that is your ability. If those articles reach a client's eyes, work comes. You have to connect yourself with the people who'll pay. Doing that suddenly turned programming into money. I publish technical articles on Qiita, write the same articles on the English service Medium, and put code on GitHub. Companies at home and abroad saw them and sent development requests, and as I worked through them I passed ¥1M/month in three months.

Before that, there was about half a year where I earned ¥0. I uploaded personal apps to the App Store hoping to hit it with ad revenue, releasing about ten — an app that computes facial similarity, an AR virtual-background app, an app that strips ML edits off photos, an app that animifies photos. I'd undergone a chimeric, monster-cat evolution inside the box. Scary, right?

But my information never reached the people who'd actually pay. In my case, the payers weren't consumers. Marketing that properly reaches people who can pay matters.

A big part of starting to broadcast was joining a community. There was a "broadcasting course" inside it, taught by someone who'd written tons of technical articles and books, and they clearly explained the whole arc of how that leads to work. Like the carpenter's apprenticeship — being shown the whole path to landing work was huge. They held one-on-one consultation events, gave me a chance to talk with a company's recruiter, pushed me to go freelance, and proofread my articles, which became a real asset. They even taught me how to negotiate with clients. I happened to have time, so I compiled a "best quotes" of community members and helped edit a YouTube channel — that probably earned me some goodwill too. Again, something I could only do because I had time.

  1. Make plenty of time
  2. Grasp the big picture
  3. Put yourself out there

These feel usable for things beyond "making money with programming," too.


Originally published in Japanese on Qiita. I build apps with Core ML and ARKit and write about ML/AR. GitHub / X

Top comments (0)