How to hire a programmer

In Japan, we are finally starting programming education in elementary and junior high schools, but I will explain why Japan has fallen far behind in software from overseas, especially from the United States.

With the spread of computers and the Internet, it has become possible to develop software cheaply and in a short time. A constraint on start-up and innovation is the initial investment in development costs, and in order to save money, capital investment and labor costs must be lowered. It is not unreasonable that the U.S. has been forced to move into other areas after losing its market to an export-driven manufacturing countries like Japan. They turned to the Internet and software, which had low initial costs.

Since the Information Superhighway Initiative under the Clinton administration, there has been a spate of start-ups in this field in the US. This is because the support for launching a venture company is substantial. Furthermore, we should not forget that many of the founders, human resource managers, and other executives have programmer backgrounds.

What about in Japan?

The government orders system development from large companies under a free contract. The prime contractor throws most of the work to subcontractors and secondary subcontractors. That is the reality of Japan, which is becoming oligopolistic. They do that partly because they don't hire good programmers on their own. Since the order was placed by a national government employee who could not manage the server or program, the discovery of the problem was delayed. Anyone who knows the pension and My Number card systems will know how bad they are. You can use open source software on any system or place an order with open source. I hope it will be resolved by a hacker civil servant who will be hired by the creation of the Digital Agency.

In the Japanese distribution industry, the elimination of middlemen called nakanuki has progressed. Similarly, the government should use this method to eliminate intermediaries when ordering the development of public services. The government is increasing outsourcing as an immediate force. However, when outsourcing, they immediately try to rely on a dispatched labor company. As far as data science is concerned, crowdsourcing competition development methods such as Kaggle and SIGNATE allow direct ordering to individual programmers. Patreon and GitHub Sponsors should also be used to pay them. What I would like to propose to development support service providers such as GitHub is that I want them to provide not only project development support but also start-up support using it. For example, if you want to commercialize using software, CAD data, document data, etc., please prepare a service that can recruit employees and investors.

Recently, the number of managers with programmer backgrounds has increased in Japan as well. However, we still see the following recruitment requirements:

  1. How many years of programming experience do you have?

  2. science background

  3. High scorers of TOEIC or other English exams

What is the rationale behind such a recruitment process? Curriculum vitae only proves that you have been interviewed. It has nothing to do with practical skills. Is there a difference in programming ability between liberal arts and science graduates? To top it off, some people even talk about their programming qualifications.

In some areas, programming requires knowledge of mathematics and statistics. That is a fact. Since it is a von Neumann architecture, it is also true that the way of thinking of programming is influenced by mathematics and semiotics. But programming is not math itself, and why do they believe that liberal arts graduates don't know math at all? In the first place, self-taught programmers don't need educational background.

For example, in complexity economics, simulation is used to make decisions on economic models, so it is necessary to know algorithms such as LCS, and graphs are also displayed by statistical processing. Of course, you need that knowledge and you have to read the treatise. In the first place, economics, especially theory, cannot be understood without knowing mathematics.

Science needs various perspectives. There are both basic research and applications. Since the Artificial Neural Network is like a nerve, it would have been naturally influenced by biology. The Deep Neural Network (DNN) has recently made remarkable achievements. Not only the ones created from scratch, but also complex systems, data science, and machine learning, which are newly created by combining the results of various researches. In deep learning, Convolutional Neural Network (CNN), Long Short-Term Memory (LSTM), Generative Adversarial Network (GAN), seq2seq, Transformer, GPT, etc. are born one after another and are being introduced in corporate services.

Currently, object-oriented programming is the mainstream. The ability to pass arguments when creating an instance and overwrite only part of it with class inheritance is required. Even in that case, polymorphism often determines how to write methods. Languages such as Python and Ruby that have good package management and are developed in open source are easy to reuse code and are suitable for these development methods. If you know how to call and extend it, you can write high-performance code, for example by calling deep learning pre-trained models.

Since we borrow the concept of mathematics in programming, it may be useful if we know mathematics. Some will be visible. But not all are related to mathematics. Is there a distinction between humanities and science, even though there are various fields of application? Are the people who talk about such quibble really programmers? Even if they have good programmers in their company, they won't notice their existence.

From scrach will certainly be important in the learning phase. But is it necessary for software designed for joint development? Software that limits functionality and can be imported from other projects will come in handy. Without people writing libraries and frameworks, programmers who write only applications would be in trouble. What is the significance of starting over from scratch and sticking to self-development?

If I were you, I would focus on the following things in the recruitment process:

  1. Account name on GitHub and other development support sites and the name of the project you were involved in developing.

  2. Your favorite language and your specialty.

  3. The reputation of programmers you know.

  4. Role in open source software development projects such as moderators and mentors.

Depending on the use of the software you develop, you will need more languages and more relevant knowledge. If you've helped develop similar software in the past, it's easy to absorb that knowledge.

Being prepared to be laughed at, let's write my experience from here.

I couldn't get a job when I graduated from college and I have no work history. After going on to graduate school, I registered with a dispatching company called Recruit Staffing and received the training. It is a training on how to use spreadsheet software that even children know. When they found out that I had no work history, they laughed in the waiting room and laughed in the toilet. No matter how many times I applied for a job, they never gave me a job.

Masu Uekusa decided not to review the doctoral dissertations of students who had never presented at an academic conference, so I dropped out of Toyo University Graduate School without getting a PhD. After that, I registered with a dispatching company called Pasona Tech. There was an e-mail invitation to come at 9 o'clock, so I did exactly that. Then he said I came too early and brought me back to the front door of the building and I waited for an hour in the cold. When I replied that I had only self-employed work experience, they, like Recruit Staffing employees, scorned me and laughed in the waiting room as well. Of course, they didn't give me a job either.

Economic news and economics are not the same. Economics makes heavy use of mathematics. Since economics is applied research, basic research in various fields can be utilized in it. From an interdisciplinary perspective, the use of statistics, accounting, mathematical science, computer science, and the incorporation of physics concepts have long been practiced. Don't believe even if the application guidelines say, Anyone who is motivated may be from a liberal arts background. At the interview with Tokai Soft in Hamamatsucho, the interviewer told me that people from the liberal arts were in the sales position.

Finally, let's conclude with this word. When I was looking for a job, I was interviewed by JR East Information Systems Company in Shinjuku. The president said, Why are there students in the liberal arts here?