My name is J_Knight_, and those of you who know me well know that I’m a non-trained iOS developer who’s been working for just over 3 years and has been writing a tech blog for almost 2 1/2 years.

Actually starting from last year, I’ve always wanted to share my blogging experience, but also did not find the right opportunity, just before the end of this year reached the nuggets fans quantity thousands of small targets, just through this opportunity to share my own about blogging some of the harvest, at the same time, it is by the way, could you do a periodic summary.

This article is divided into three parts:

  1. The history of tech blogging
  2. The benefits of tech blogging
  3. Answer a few questions from some friends (fans) about blogging

The first part will start with a few statistics about my blog: when I started, what platform I used, what I wrote, and so on.

The second part is the focus of this post, explaining what I’ve learned from my blog.

The third part is a list of several questions I often hear from friends (fans) about blogging and my answers.

The history of tech blogging

I’ll start with a look at the stages of blogging and end with some statistics about my blog.

The stages of blogging

When I before employment, self-study iOS started blogging (just write study notes at that time, the quality is low), to get the first job after more than half a year later start in Jane’s writing blog, after more than a year later probably because a “well-known” turn your book to the nuggets platform, behind to also begin to maintain their own personal blog and the general public.

The reasons for moving from Simple book to gold can be found in my last blog of Simple book, and the address of simple book’s personal home page and other home pages are provided at the end of this post.

There are six roughly chronological phases of blogging:

  • Stage 1: Study notes
  • Phase 2: Source code parsing
  • Stage 3: React Native
  • Phase 4: Code specification
  • Stage 5: Data structures and algorithms
  • Phase six: Object-oriented design

The first stage

The first stage of writing focuses on the study notes of the video tutorial, the reading notes, and some minor knowledge points about iOS development. Some of the most important things I learned were Effective Objective-C 2.0 and Advanced Programming in Objective-C, as well as some other books on programmer quality. Here are some blogs:

Effective Objective-C 2.0 summary:

  • Effective Objective-C Dry Goods Trilogy part 1: Concepts
  • Effective Objective-C Dry Goods Trilogy (Part 2) : Specification
  • Effective Objective-C Dry Goods Trilogy (Part 3) : Tips

Summary of Advanced Programming in Objective-C

  • Advanced Programming in Objective-C (Part 1) : Counting references
  • Advanced Programming in Objective-C: Blocks
  • Advanced Programming in Objective-C: A GCD

Reading Notes:

  • The Discipline of an effective programmer – Reading notes
  • The Discipline of Programmers: From Good to Great – Reading notes
  • How to Study efficiently – Reading notes
  • Programmer professionalism – Reading notes

The above blogs were published on Nuggets later than they were on Briefbooks because they started Posting on Nuggets more than a year after Briefbooks was written.

The second stage

In the second phase, I focused on the source code analysis of major iOS frameworks, because I wanted to improve the business level by looking at the source code. This phase of source code parsing consists of the following blogs:

  • MJRefresh source parsing
  • VVeboTableView source parsing
  • PNChart source code analysis
  • SDWebImage source parsing
  • MBProgressHUD source parsing (not synchronized to nugget)
  • JSONModel source parsing (not synchronized to nuggets)

Later also published two source code parsing articles, the reason is that the business requirements at that time to encapsulate a network framework and cache library, so I looked for YTKNetwork and YYCache source code to learn, blog address:

  • YTKNetwork source code parsing
  • YYCache Source parsing

After learning YTKNetwork, I later encapsulated a network framework and opened it in my GitHub repository:

  • SJNetwork

It’s a shame that the library hasn’t been updated since it was released late last year due to a lot of things going on this year. However, the optimization idea is already in place, which can be updated and maintained gradually next year.

The third stage

The writing content of the third stage focused on React Native, because the company had the development task of React Native at that time, so it took some time to learn it. The learning was mainly through the React Native practical project on MOOCs and the development of high-quality online APP. In the learning process, I implemented the APP by myself and put it on my GitHub repository by referring to the course explanation: GitHubPopular-SJ (with the approval of the MOOCs instructor for the course)

It also encapsulates a pure React Natice UI component. One copy of the code supports both iOS and Android. It is now open source on my Github: React-Naive – Highly Customizable – Action – Sheet

Address of two blogs:

  • Take a look at the key technology points of React Native development from a practical project
  • How to encapsulate a React Native component with an open source popup menu component

The fourth stage

In the fourth stage, I focused on code specifications, because there was a small team at that time, and I felt that there were some specifications to practice, so I collected some books and blogs about code specifications, and organized my own set of code specifications for iOS development. There are two blogs:

  • IOS Code Specification
  • How can I improve the readability of my code? – Read The Art of Writing Readable Code

The fifth stage

In the fifth stage, I focused on data structures and algorithms because I wanted to improve my basic qualities. Because, after all, is not the class, so this aspect can not fall behind. After a period of learning and summary, the series of data structure & algorithm in Swift is started:

  • Data Structure & Algorithm in Swift (I) : Swift foundation and data structure
  • Data structure & Algorithm in Swift (2) : Algorithm overview and sorting algorithm

I was going to keep writing this series, but due to the interview and the new job, I didn’t update the second article in the series.

This series will be updated when the current series of object-oriented design is over. This is because, at the moment, object-oriented design learning tasks have a higher priority, for reasons described below.

Phase 6

The sixth stage of writing focuses on object-oriented design. Since a large part of the tasks of the new company are SDK maintenance and development, I want to learn this part quickly, which will be helpful for the later work. Here are some blogs:

  • Six Principles of Object-oriented Design (with Demo & UML class diagrams)
  • Design Patterns for Object-oriented Design (PART 1) : Creating patterns (with Demo & UML class diagrams)
  • Design Patterns for Object-oriented Design (PART 2) : Structural Patterns (with Demo & UML class diagrams)

I also maintain all the demos and UML class diagrams for this series on GitHub: Object-Oriented Design

The blog data

That’s all I have to say about my blog. Here are some statistics about my blogs on various platforms:

platform Number of fans The article number Read the number Like the number Reading/liking
The Denver nuggets 10043 27 131393 4534 28.97
Jane’s book 4785 58 183642 3806 48.25

Based on the number of reads/likes, the quality of blogs on Diggings is generally higher than that of Short books. The main reason is that when migrating from the simple book to the gold mine, I chose the part of the article with relatively high quality in the simple book; And the subsequent nuggets blog has been more focused on quality.

The benefits of tech blogging

As for what blogging has brought me, I think it can be divided into the following points:

  1. Fans and Influence
  2. The mastery of knowledge
  3. The interview chance
  4. Language organization
  5. Work to do the best quality

The first three points are straightforward and easy for most people to see:

  1. A good blog often has a large number of fans, which also increases the influence of the blogger.
  2. Blogging also deepens your understanding of knowledge, because after all, you’re organizing your own language and giving it to others once.
  3. Many interview requests now include “having a tech blog or GitHub” as a bonus. So having a blog may give the interviewer more opportunities to interview.

Compared with the first three points, the fourth and fifth points are relatively recessive, but they are the two points with the biggest gains for me. Number five, in particular, has “benefited” me more than all the other four combined.

As for the fourth point, I want to write something that can be easily understood by others (including myself), so I will keep reviewing and revising what I have written. It was in such a long-term repetitive process that I found my ability of language organization and description improved a lot, which is actually a part of communication skills, so it also helped me to communicate with others in my daily work and life.

I’d like to emphasize number five here: I’ve developed the quality of being the best at what I do while blogging.

It takes some time for a blogger to write a blog. People who read blogs also spend some time. So since you’re both spending time, why not make that time count? Because a blog can be very wonderful or very ordinary: writing wonderful, in fact, is win-win; And write general, in fact, everyone did not have what too good harvest.

And with the increase of my followers, I have higher and higher requirements for my articles: both in terms of the quality of my articles and the reading experience for readers, I always think about how to give readers high-quality knowledge and how to make them easily absorb what I have written. Because more and more people are likely to see my blog in the future, and I have some tags that don’t allow me to neglect the quality of my blog.

Take this recent article on design Principles: Six Design Principles for Object-oriented Design (with Demo & UML class diagrams) :

The design principles of object oriented design are actually mentioned on the Internet and in many books, and if I were writing it myself I could just take a few words and put them up.

  • But even if it’s clear in your own words, why not add an actual Demo to each design principle to make it more intuitive?
  • And even with the theory and the Demo, why not add a UML class diagram next to each Demo to give a clearer look at the relationships between classes in the Demo?
  • Finally, each principle is used for a reason, and the results of not following it can be quite different from those of following it, so why not add two sets of demos and UML at the end of each principle, one that follows the principle and one that doesn’t, So that the reader can better compare the different effects of using and not using this principle.

So, at first, I wanted to write this blog like this: just a theoretical knowledge of six principles. But later, with the continuous improvement of their own requirements, I finally wrote the blog like this: 6 principles of theoretical knowledge + 12 Demo + 12 UML class diagrams + GitHub open source (object-Oriented Design).

The original schedule of this blog was less than 2 weeks, but in fact, it took 4 weeks from the beginning of the study to the release of the blog. Since I didn’t know how to draw UML class diagrams, it took me a while to learn. Moreover, most of the Demo scenes are based on the examples we have seen, and it took a little time, because I think only what I think is my own, I understand well, and other people understand well.

I believe that my future blog will follow this path: I may have an initial plan, but I will continue to push myself to the best level.

Actually I don’t know the cause of developing this quality is which one, is for the sake of fans, improve the influence, also can saying is to share knowledge, also can saying is to want to learn, I think maybe it’s a each with, but these can sum up a point: that is for me and responsible for fans (the reader). So it’s this sense of responsibility to all of us that creates this quality.

So why is this quality my biggest gain? Because this quality affects not only my blogging, but all aspects of my work and life, both now and in the future.

Take an example from life: all my wechat friends should know that I am losing weight, because I set up a Flag in mid-September: every 5kg I lose, I will post a picture showing my weight at that time. Now is the beginning of December, to now after more than 2 months, this kind of photo I have a total of 4 (including the first one), that is to say I have lost 15 kilograms, but also becoming thin, yesterday weighed, the weight is 73 kilograms, 82 kilograms less than the initial weight of 9 kilograms, that is 18 kilograms. So in a week I should be able to post another photo to commemorate my fourth weight loss.

After I posted these pictures, many friends asked me how to reduce it. I’ll just say it briefly: the workouts are anaerobic (iron lifting) combined with HIIT in a roughly 5:1 time ratio. (I almost never run, because running is inefficient in terms of fat loss.) Weekday lunch and dinner are mostly salads, but they are high-protein, high-carb salads with only vinaigrette dressing because regular salad dressing has too many calories. I ordered the salad out of takeout. I have eaten more than 100 times since the middle of September, and occasionally I eat something greasy on weekends. But breakfast is always milk and wholemeal bread, not pancakes or meatloaf with oil.

If I can lose to 72 kilograms at the end of the next week according to the plan, then it has taken 11 weeks (less than 3 months) to lose 20 catties from the beginning of the weight loss, on average losing nearly 2 catties every week, this result should be considered good.

Because I think since it is time to do this thing, we should do the best: from the intensity of exercise and the combination of diet to be the best.

  • Although it is exercise, but the daily meals are the same, no planning, this is not the best;
  • Eating very little, exercising at a low intensity level, and spending a lot of time running at a low speed every day isn’t the best either.

After all, work is busy and requires time and energy. Sports also need to do the best, in the shortest time to achieve the best results, as soon as possible to build a better physique, which is also conducive to the future work.

I won’t give you any other examples, but I’m glad that blogging has given me one quality, and it’s one that I want to share with you more than any other superficial gain of fans, influence, etc., because one quality affects everything you do.

Answer a few questions from a friend (or fan) about blogging

At the end of this post, I’ll share some of the questions that my friends (and fans) often ask me about blogging, and my answers.

Blogging must take a lot of time. How do you balance work and study?

A parallel to this question is “How do you become so productive?”

It’s not productive, I just keep writing, and the number of blogs this year is smaller than the last two years.

My answer to these questions is two-fold:

  1. Blogging is time consuming, but not very time consuming.
  2. Because most of my blog posts are actually derived from study notes related to my work. Therefore, it is not necessary to spend too much thought to balance work and study.

On the first point:

  • Why does blogging take time?

By time, I mean the amount of time: because the amount of time it takes to write a good blog post is a long time: you need to work on content, wording, graphics, typography, and so on, all of which take time in order to get something out of your readers.

  • Why doesn’t it take time?

Because if you can be good with fragmented time, you can spread out large chunks of time, so you actually save time. And my blog is basically from the usual study, and the usual study is related to work, so work while learning, in fact, the blog is completed one-third.

Here’s my own example:

In fact, most of my blog is based on my study notes. Since it is a study note, it is certainly not a one time, it needs to be accumulated through continuous learning, perhaps over several weeks. For example, if you’re reading a book, you can take notes on the chapters you’ve read, but instead of spending a lot of time on it every day, you can take notes on a book (or third-party framework source code) in a few weeks by running in small steps.

Once you’ve made your notes, you can add some content and turn it into a blog. This may include illustrations, progressive statements, and summary statements (which can also be added when you review your notes). It doesn’t take much effort to do this, because the content has already been distilled from the notes, and all you need to do is make the notes easier for others to understand.

Since it doesn’t take much effort to do it, you can make use of the broken time: waiting in line, waiting for the elevator, waiting for the subway, resting time on weeknights, resting time after watching a movie on weekends, etc. In order to review and modify my notes at any time, I put my notes in Youdao Note and Evernote, so that I can constantly modify and refine my notes and blog even outside. And while walking (in order to ensure the environment is safe) they will review their writing, to see if they can write better, etc.

I think it is very important to make good use of fragmented time in time management, which was very inspiring to me when I read Dark Time in college. Till now, I am still deeply impressed by the words of the author Liu Weipeng, who compared the human brain to the CPU.

Mr. Liu Weipeng is an excellent software engineer. This book has a great influence on me personally, and I recommend you to read it.

Having said all this, the above text can actually be summed up in two points:

  1. Blogging comes from learning, and if your learning comes from learning and summarizing on the job, then by the time you’re done learning and summarizing, you’ll be about a third of the way there.
  2. Blogging doesn’t happen in one go. It needs to be refined over and over again, and it doesn’t need to be done in large chunks of time each time, since there aren’t many large chunks of time for people who are already working. If you’re good at fragmented time, you can save time by breaking up the total amount of time and using the time you would otherwise waste.

I think you are a quick learner. What is your method of learning?

Here’s a fact to clarify:

To tell the truth, I think my qualification is very general, and the learning method is not necessarily very clever. The reason why I give the illusion to other people like this question is because I spent a lot of time studying and blogging behind the scenes; That is to say, in the same amount of time, I believe that those who are more qualified will learn better than ME.

Why do I have a lot of time to study?

In the past three years, I haven’t played anywhere far away during the rest time, nor have I played any games (I only played three games of chicken, but didn’t play LOL or pesticide), nor have I had a lot of social activities, except to get together with friends and family. Therefore, although the qualification is not as good as others, but I believe the learning time is still more than some people.

What is said above is the time, as for the learning method, I can briefly introduce, because actually I do not have too advanced skills.

One of the learning models I personally use is shown below:

Based on the flow point in the figure above, you should know the relationship between each node. Here I will introduce what each node does:

Choosing a Study Topic

In fact, I personally think that the selection of learning topics is very important for each stage of learning, because it will determine the quality of your learning and learning results in the short term.

Why do you say that?

  • Because if the study topic is too difficult, it will be easy to hit the enthusiasm of learning, it will be difficult to stick to;
  • On the other hand, if you choose a study topic that is too simple, you can learn it quickly, but it may not actually help you improve your skills. (Of course, there will be some things that need to be learned urgently, but the content of simple things will be given higher priority. Even if it is too simple, you can learn it first.)

Therefore, I think when choosing a study topic: among several topics of similar priority, you need to choose a topic that is “difficult to learn” relative to your current level. It’s hard to say it’s not easy but you can do it. That way, when you’re done, not only will you have a small improvement in your skills, but you’ll also have a confidence boost that you can take to the next round of learning. Even if you can’t do it in a short time, you can take it slow, because after all, it’s not impossible for you, and you won’t give up easily.

Collect a variety of high quality data

A ridge can be seen as a peak from the side

After you have decided on the topic, you need to select materials related to it. My personal habit is to choose a variety of high quality data. For example, when studying design patterns, I find a lot of good blogs, tutorials and classic books to read at the same time:

  • Design Patterns: The Basics of Reusable Object-oriented Software
  • The Way of Objective-C Programming: An Analysis of iOS Design Patterns
  • Head First Design Mode
  • The Design Pattern of Big Talk
  • Mooc net practical course: Java design mode intensive debugging mode + memory analysis
  • Site: the design – patterns. Readthedocs. IO
  • Website: howtodoinjava

Because different people may have different views on the same thing, through reading and sorting out the descriptions of the same event from multiple people, I can understand this issue more deeply and from more angles. Then, combining with my own understanding, I will understand it quickly and thoroughly.

High quality this piece need not say much, when choosing information must be selected those authority, good reputation of the content.

Take notes

A bad writing is better than a good memory

Taking notes is not only about recording knowledge, but also about the quality of knowledge information. Since it has been recorded, it can be consulted and pondered repeatedly in the back to continuously improve the understanding of knowledge.

About the notes:

When taking notes, don’t just extract and copy and paste: although you can do this at the beginning, you must add your own understanding, and the proportion of this understanding should be more and more in the notes, because only your own words are your own.

On how to take notes:

There are many ways to take notes, but I personally prefer cloud-based note-taking software like Youdao And Evernote, both of which support multiple devices. You can also modify and read on your mobile phone outside at ordinary times.

Review, summarize

Review the past and learn the new, can be a teacher

Most of the time you can review to understand more content, and review can also avoid forgetting knowledge, kill two birds with one stone. When reviewing, no matter whether there are new ideas, I should try to find out what new things can be summed up again, which can also help me better understand the knowledge.

For example, when I was learning design patterns, I thought I had a good understanding of adapter patterns, but when I imagined a scenario and realized it, I felt that I did not understand the relationship between these roles very thoroughly. So we can only think about it constantly and draw a picture with our hands, so that we can actually practice an imaginary scene accurately.

practice

Practice is the sole criterion for testing truth

“Don’t know you don’t know” is a dangerous thing. Sometimes we may think we understand this knowledge completely, but when it comes to practical operation, various problems may arise. Therefore, after learning theories, we need to use practice to verify whether our understanding is correct. It’s good if we have this condition, but if we don’t have this condition, we need to create conditions to do it.

feedback

It can’t just end with practice. The result of practice should know whether it is right or wrong. What’s more, no matter whether it is right or wrong, summarize the reasons and what can be improved, and then put it in notes to form a cycle.

How to write a good (and popular) technical article?

Most of this comes from people who are planning to start a blog or who are already blogging but feel that their blog isn’t as popular as expected.

I could write a lot more about this if I were to fully expand on it, but since it’s not the focus of this article, I won’t.

If there are more friends who give me feedback and show interest, I will write a special article to share it later, and those who have this desire can leave a message below.

So in this article, I want to say this: the popularity of an article depends in large part on whether you are truly committed to sharing your knowledge with others.

Some people write for themselves and keep it as a kind of note; Some people blog not only to write about themselves, but also to get others to read their articles. And whether you’re writing to yourself or someone else, once you put your blog on a public platform, you’re sharing your blog, your knowledge.

So if you’re writing for yourself, you need to always ask yourself: Do I really understand what I’m writing?

If you’re blogging for the second purpose of sharing, you need to always ask yourself: Is it easy for your readers to understand what you’re writing, and is it really rewarding?

As I said above, my motivation to write a good blog is to be accountable to my readers and to myself. Writing a blog that is responsible for you and your readers is mutually beneficial.

With this central idea in mind, you will constantly push yourself to write better articles in action, and the quality and popularity of your blog will naturally increase.

In addition to the quality of the content, the depth and subject matter of the blog also affect the popularity of the blog. “Highbrow, lowbrow,” you’ve all heard of it. Even if the content is very good, but the depth of the article is so deep that few people can understand it, it may not be as popular as expected. But this point does not conflict with the point discussed above.

Finally, there is the so-called headline partisanship: even if the content is poor but the headline is interesting, it may be read more, but that does not mean it is really popular. I personally do not praise very highly of this way, I still prefer and the content of the article is very fit, the article title of the rules and regulations, everyone observe my blog should be able to find the characteristics of my blog title, generally there is no redundant word.

OK, so that’s all I have to say. I hope it will help you whether you want to write or not blog after reading this article.

I’m not saying that anyone who does technology must have a tech blog, nor am I calling for everyone who does technology to write tech blogs.

Because each person’s own situation is different, choose what kind of way is their own freedom. But anyway, we all want to be in a better environment, don’t we? This is the core purpose of this article.

You can find out something about me

Below are links to some of my blogging platforms, GitHub, and official accounts for those who want to learn more about me or check out my tech blogs.

  • The Denver nuggets: J_Knight_
  • Jane: J_Knight_
  • Making: knightsj
  • Personal tech blog (RSS feed supported) : KnightsJ.github. IO
  • The public,
    • Name: Programmer Vitamin
    • Qr code:

In particular, it is necessary to say that in addition to the public account will send some technical articles, there will also be some personal thinking and technical & non-technical reading notes.

This post has been synchronized to my personal blog: What Have I Learned from writing tech blogs