This post is from Taro On GitChat sharing the Programmer’s Free Time Training Guide. Read the original article for more of what you want to do.

Edit | illidan

In this article, I will share with you my experience on how to learn multiple skills and develop part-time projects in my spare time, which is divided into several parts: original intention, hard skills, soft skills, primary productivity, environment and time. It takes about 10 minutes to read.

My answer on Zhihu can be summarized as follows:

Jun Taro: What personal projects are you working on as a programmer? (https://www.zhihu.com/question/64898551/answer/229741838)

My learning method

Before introducing my experience in developing part-time projects, I would like to share my learning methods with you. However, I think learning varies from person to person and everyone has his or her own way of learning, so this is for reference and I hope that everyone can find their own learning methods first.

When I’m learning a technology, I usually dive right into practice. I’ve tried to read basic grammar or a slightly more in-depth book on design patterns, but I find that’s not efficient for me.

For example, IN objective-C learning, I bought several books at the beginning, but it took me half a year to study them. Of course, another key point is that time should be continuous. If I read several pages every day, it is also an important reason for low efficiency, because the grammar of the program is rather awkward, and it is difficult to memorize all knowledge points by rote.

So later, after I quit my job, I took an iOS outsourcing job, and I had never even written iOS code in Xcode at that time, and I forced myself to spend a month mastering and building an app.

During this month, I invested a lot of time in learning iOS development and tried to take an efficient learning path. I didn’t have time to understand all the basic OC syntax, so I went straight to the article on iOS programming (Apple official has many documents for getting started).

Then directly practice, knock code on Xcode to make layout, and then run to see the effect. For functions that do not know how to implement, directly go to Google to search the article, quickly check other people’s methods, and then practice.

Of course, this is a relatively shortcut but many problems of learning, in this month, I stayed up all night for several times, in order to solve a specific problem, constantly check the article and experiment, and then not, check again, so repeatedly, the efficiency is not high.

However, the biggest benefit of the learning method combined with practice is that I have a more solid and concrete grasp of knowledge points. However, after a month, I still have a vague understanding of iOS development, and then I can officially get started through continuous training of other projects that are not very urgent.

Later, you will find that grammar is really the most basic thing for development skills. Mastering grammar is only the first step in development, and there are still many knowledge to be summarized in practice.

Including I had learned node development, but also directly from practice, because the grammar is actually no problem, AT that time I thought, I need to do a website out, through the different functional modules of the website, practice node development in some basic or database design, deployment, server operation and maintenance knowledge.

At that time, my first idea was to build a wordpress blog by myself using Node, so I did it without delay. Later, I found that blog was still too simple, so I wanted to build my blog into a community.

People can come here to publish blogs, questions and answers, as well as forum posts and other functions, the structure of the site has become complicated, the application structure design, database design requirements have become prominent, through the site’s continuous iteration, I have more and more in-depth understanding of NodeJS.

My main skill is still front-end development, that’s what I do. However, other development skills are basically learned and practiced in spare time, including other soft skills, such as design, product, operation and so on.

The method is nothing more than what I have mentioned above, so I will talk about the feeling of amateur development projects. In fact, the ultimate intention of these projects is not only creation, but also a very important point, which is the practice I use to learn technology. No matter your product succeeds or fails, at least my technology has improved.

So, instead of doing unskilled things in your spare time, such as outsourcing or doing things you’re already familiar with, give yourself something that challenges you.

The original intention of the amateur development project

Generally speaking, in my opinion, the domestic environment for amateur developers is actually very unfriendly, but as a developer, just complaining won’t make a big difference. What we can do is to stay true to our original intention, try more and accumulate more.

I’ve had in-depth conversations about this with some of my friends, including those who have asked me to talk about it on the line. I actually encourage people to be brave enough to become freelancers or amateur developers, even though the environment is not very friendly.

But it’s always good to experiment when you’re young, because you still have the money to explore the possibilities, and I believe that every developer wants to change the way people live.

However, what we usually do is always a screw in a big project. After a long time, the original meaning of innovation is lost. At this time, I will feel panic in my heart as I get farther and farther from a creator.

Although these projects do change our lives, my original intention is to lead a change, even if it may only change a small way of life for a small group of people.

I always think programmer is a very magical profession, not the profession itself is magical, but the code gives us the ability to magic, we can create a virtual world out of thin air, can make the rules of the virtual world, can make the world according to our ideas.

But the world in turn demands that you change yourself, because a functioning virtual world requires rigorous rules, and that requires the ability to design products, to design sensible rules, to design closed loops.

This is also the ability model that we are focusing on for amateur developers. You can’t just have coding ability, you can’t just create, you have to create reasonably, explore new needs of people, and create really useful products.

This is actually one of the most important topics today: how do amateur developers make a real product?

Hard skills

This is not as easy as it seems. First of all, technically, you need to master enough skills to complete all aspects of the product. Now let’s take the bedtime story of my last app as an example, what aspects of technical accumulation are needed to complete the product?

  1. Client development, iOS, Android, of course, if you choose to support only a platform, can only have one of the, of course, also can use some cross-platform technology, but in addition to language and programming model, programming framework, did not go far enough, platform, platform features, version compatibility, adaptive, and worst of all, one ring How do you release your app to the appropriate platform after successful development?

    How to set up internal purchase and so on? Especially on iOS, the cost of releasing an app is much higher than expected. In addition, related to the end, there are basic data statistics, message push, sharing integration, etc., in the first version of the best to be able to do these jobs, and this requires you to understand the integration of these functions.

  2. Front-end development, story uploading has a background, of course this is very simple, and then after the story is shared from the app, there is an H5 page, which can play audio directly, and then there are some guidance to download the app.

    So front-end development skills are a must. There are some common propaganda pages to use and so on.

  3. On the server side, all the stories are stored in the background, you need a database, and then you have a server application for data distribution, and statistics and things like that.

  4. Data recording and analysis: I need to record users’ actions and other useful information to the server during their use, and then analyze users’ behaviors based on the data, so as to determine which stories are the most popular in the future and by whom. I can do targeted push or charge services.

  5. Design ability, speaking of which is also a very core need, if there is no basic design ability, it is difficult to make an app that makes everyone’s eyes shine at least look comfortable, especially the mainstream apps on the market now have a relatively high threshold of experience, poorly made apps are difficult to attract users.

    In this regard, we also need to do some deliberate training. Although we may not have received professional training, we can look and think more, learn from other people’s design styles, and gradually develop aesthetic appreciation. Of course, the most important thing is that design tools need to be mastered.

In addition to technical skills, there are other skills that may be the key differentiator between you and other programmers. It’s what you can create, not what specific skills you have.

Soft skills

Let’s talk briefly:

  1. Demand analysis, product planning. To make a product is not because OF what technology I have mastered or what kind of code I can write. Technology is just a tool. To give full play to its value, it is necessary to have original requirements and basic product form.

    So when you start developing an app, the first thing you need to do may not be to master a lot of technology, but to figure out what product you want to build.

    For example, when I want to make a bedtime story app, I have mastered the above techniques, but these are not decisive, if I don’t master, I can learn, but why make this app?

    It is because I have resources (my wife is a good story-teller, she is a teacher, and there are a group of potential seed users around me) and audiences (strong demand and high stickiness), so I began to think about how to use these resources. I think a story-listening app should have low cost, easy promotion and high stickiness.

    Although there are many similar apps on the market, I can do my own features, such as: I have only one teacher who can tell stories, and the stories are of high quality (most story apps in the market are perfunctory), with strong brand and label attributes. In addition, I have outstanding design and development capabilities, so I can make my app more delicate and easy to use than any other app.

  2. Promotion and operation. Most amateur developers are worried about this. How do I get my app out to an audience? How do I get more people to install my app?

    How do YOU maintain your app’s active retention? In addition, we should pay more attention to our common means in our daily work and learn from colleagues in corresponding positions. In addition, we should also think from ourselves when we encounter similar problems in the workplace. If you are asked to promote an APP, what can you do? How to promote the APP in detail can also be shared here.

    First of all, you have to make sure your app is good, otherwise you push your app to the user, he is not willing to download, then no matter how to promote it will be useless. Then promote channels, you can find some free channels, some app recommended websites, APPS, public accounts, and try to contact their editors.

    Then ask them to recommend your app, and if your app is good enough, they’ll be happy to help. There are plenty of channels like Most Beautiful apps, Minority, AppSo, etc.

    Another channel is some vertical forums and social networking sites, even zhihu and the like.

    Then the so-called operation, the most basic, in the app should have some interaction with users, can maintain the passion of users, and even help you spread the app to the circle of friends, can be specific in the form of some activities (operation means).

    Finally, when appropriate, be willing to spend money, but spend it wisely. This could be gift-giving or paid promotion.

Innovation is the primary productive force

Once we know what basic skills are needed to build a product, how about we actually build a product? What type of product should I make? What if everyone else has done everything I can think of? How can I compete with others when I’m understaffed for a major project? What if my promotional and operational capabilities are limited and nobody uses them?

Sometimes I confused, especially I did an app, and then promote the difficulty, or found for individuals to promote an app is extremely difficult, or it’s found that when I push the app to the user, the user will not be excited to accept your product, I will start to think, how to break through? Seeking more exposure?

Or do something fancy and glamorous? I feel that these things are not so easy for me, and the cost is also very high. The more I think about it, the more HEADACHE I feel, the more I think about it, the more I feel that it is really not easy to do something by myself.

But maybe I was thinking about the breakthrough point in the wrong direction. What are the core competencies of amateur developers? Not your resources, not your fancy sensationalist gameplay, but your personal will led innovation ability!

User for innovation (of course, first of all, if reasonable) sensitivity is high, if your app provides an unprecedented but can use the way to solve the problem, this is your product’s core competitiveness, in extreme cases, may not need any active promotion and operation, the user will spontaneously spread for you, and keep high activity.

Of course, this innovation does not refer to a specific technical implementation, nor does it refer to a fancy design, which needs to be understood and balanced.

The environment

Now that we know how to develop a product independently, let’s talk about something else. For example: Why did I say that the domestic environment is unfriendly to amateur developers? Why are there so few full-time amateur developers?

Economically, in fact, an amateur developers to feed themselves or there is no problem, but now the domestic environment is, can support himself is far from enough, first of all, you need to be able to feed a family, then you have to keep the house the car, you must return loan bank, you should pay tax countries, various factors to ask you, or have a stable income, or they have enough hard economic conditions.

If you do not have a good financial foundation, and do not have a stable income, it is difficult for the family to accept things.

Of course, this is the big environment, you can get rid of these constraints, but the big environment is still very big impact on people, you can hardly get rid of the normal life style and state, all these indicate you, engaged in unstable income freelance independent development is not a good choice.

There are other problems, such as social security, five social insurances and one housing fund, hukou, visa and so on. If you don’t have a formal job, these things can become very troublesome.

In fact, I was so committed to freelancing that I tried it at home for a year without a job. Besides my self-control issues, I also knew I couldn’t stay “free” for long (unless I succeeded overnight, which I wouldn’t be “free” at that point).

Because as a normal person, I need to take on a lot of responsibilities that society needs me to take on but I may not be particularly happy with myself.

Of course, I need to go back to the workplace to observe and learn how to become a “normal person” and how to create “large-scale products”. Although this may not be my original intention, we are not geniuses and we need the assistance of the world to do anything, so we need to communicate well with the world.

In this environment, the best option, besides encouraging more people to get involved in freelancing and indie development, is a partial compromise.

But don’t forget where you started. Use your passion for technology and products in your spare time to slowly polish an amateur product, accumulating experience (hard and soft skills) through this process, while remaining creative and active.

time

The following topic can cover several questions, such as how can one master multiple related skills in a short time? How do I sustain my passion for amateur development? What if you don’t think you’re getting any better?

Aside from 0.1 percent savvy and 1 percent method, the biggest secret to what others can’t do is this: time.

If you really interested in what is a, then put 100% of passion and energy, such as 7 am to 2 PM every day after work time (do not encourage to stay up late, of course), is seven hours, your study time a day to work for seven hours, more than a month is 200 hours, plus the weekend time, Far more hours than you actually work, and those are the hours that make the difference between people.

For example, learning iOS development, one knowledge point a day (plus practice), I think it can cover most knowledge points in one month at most, of course, this needs great enthusiasm, after all, not everyone is willing to devote a lot of spare time to learning or doing projects.

In the process of making my previous personal forum and APP, I was actually quite tired. I probably had to spend most of my spare time and stay up late every day. Because of the increasing user feedback, I needed to constantly optimize my products, improve my ideas and make them come true.

Although I am tired, I still have a strong sense of achievement, which will motivate me to continue to invest more time and form a positive cycle of my own growth.

However, there will always be a bottleneck in doing things. When encountering a bottleneck, I will deliberately slow down the pace, read other types of books, study other types of technology, or just relax.

Just Do it!

Speak so much, do not know to everyone will not help, anyway, the most important or start to carry out, the mind will always come out of some ideas, do not know is reasonable?

Try to do it first, and gradually you will find out what is reasonable and what is not reasonable. Everyone has such a process.

Then, I observed more problems, big and small, in my life. There were always problems that I could solve with technology, and this might be a good idea. In addition, I hope that the friends who really love technology and creation can always keep their original mind.

“Read the original article” to learn more