I started writing an online book called!
https://zenn.dev/bigen1925/books/introduction-to-web-application-with-python
The motivation for writing this book begins with the encounter with a book.
At that time, I had no experience as a new graduate and got a job as an engineer at an IT venture that has its own Web service, and it was about three years ago. During those three years, I gained development experience mainly on the server side, and also designed and implemented applications from requirement definition.
In the third year, we were able to implement and release some large functions that could last for tens of man-months in accordance with the framework's manners in the infrastructure environment left by our predecessors. (Of course, we were developing as a team, not alone) It was a fun time for a while, as I felt like I was an engineer, and the feeling of talking with the business side, putting the functions I wanted into words, writing the program, and defeating the tasks.
However, I noticed such a task slayer after a year. Even if I continue this work for five years, I cannot be like the senior engineer in front of me.
The company's senior engineers will magically solve any problems you may have, from server configuration to language implementation, algorithms, and performance optimization (profiler, query optimizer, etc.).
Problems that could be solved by writing a program in the web framework (I was using Laravel at that time) could be solved by myself. Most of the time, even if you don't know the moment, you can read the framework reference and solve it. In addition, more than 95% of the business hours for function development of Web-based ventures were in that category.
But the remaining 5% aren't sure what the server is, what the protocol is, what the headers are. When you come across such a problem, the senior engineer comes in quickly and solves it quickly.
By the way, he tries to teach me various things for my later studies. "It's long to talk about everything, so it's difficult to explain this (laughs)." That said, although he will teach me in a nutshell, I cannot understand it deeply, and I will rely on my seniors again next time.
I think I can't catch up without studying something, but the difference between myself and my seniors is so big that I don't know what to study from. I try to read design pattern books and infrastructure books at random, but the knowledge that I have no place to practice is hard to establish, and I do not feel that I am growing forever. Even if you try to study from the tasks that you touch in pieces in your work, it is difficult to learn because you do not have the basic knowledge.
And as if to catch up with such impatience, the task slayer that I enjoyed half a year ago suddenly becomes struck by a sense of rut. As with any game, when you can defeat an enemy that you haven't been able to defeat for a long time, you'll be happy to be able to challenge that enemy many times, but it's becoming commonplace to defeat them. It's boring.
Combined with that feeling, engineering suddenly became boring.
Then, when I was approaching my fourth year, I felt as if I had read a book and suddenly opened my sight. That book
Learn while making a web server Introduction to web application development from the basics (written by Kazuya Maebashi)
is.
In this book, you write your own web server and web application using Java. Starting with the explanation of "What is a Web server / Web application?", The flow is to actually create a simple Web server / Web application.
Then, when I actually wrote it along with the book, it became possible to display a web page on the browser with a program of only dozens of lines. Also, if you spend hundreds of lines, you can exchange using cookies, and you can create a web framework that can perform routing and session management using cookies.
Of course, the details are not as good as the high-precision, high-performance web servers and frameworks that are on the market, but they work quite like web frameworks and can display homepages normally. Moreover, since I actually move my hand and write from 0, I have a grasp of all the specific processing, at least for the application I created.
After I finished this book "Then, does Laravel's Middleware be implemented in this way?" "Does Laravel's routing actually do this behind the scenes?" I was able to imagine the mechanism even before I investigated things that I didn't need to know in detail in my work.
(Middleware etc. was not written in Mr. Maebashi's book, but after reading it, it became fun and I actually wrote it myself, and I was able to implement it)
By the time I finished reading this book, I quit the first company I was indebted to and changed jobs to the second company.
Since the company has changed, I will touch on new products, but the language has changed from the first company and it was a Python-Django web service.
For me, who has only written PHP, I often remembered it, but the mechanism of Django, a web framework, comes to my mind when I read a simple introduction. On the contrary, even unknown functions that do not appear in the introduction, when proceeding with actual work "I'm sure there is such a function around here, and it should be possible to change it with the set value, right?" When I looked it up, it actually existed.
I think that one of the characteristics that separates engineers who are good and those who are not is the ability to "hit". The power to understand at a glance the error message, "Oh, this is strange" when an error occurs. The power to immediately understand when creating a new function, "Oh, if you change here, it's over."
There was a feeling that some of them were acquired. The field of view suddenly widened and the view changed.
So that as many people as possible can enjoy engineering And what I think is most important is that engineering has become fun again since then.
Knowledge is mysterious, and the more you know, the more you don't know.
Once you understand a web server or web application, you want to know about TCP communication, or the difference between Django and Laravel, or the difference between a web application and a database application. Or, I just wanted to study Python more deeply in the first place to understand the framework. (Fluent Python is recommended)
As you study the differences between frameworks, you will find that linguistic constraints and cultures have a significant impact on the framework, and you will want to learn about language implementation. (Introduction to C compiler creation for those who want to know low layers is recommended)
However, I've also found that motivation drops when I learn to stay too far from work. For me, reading Javascript 6th edition was quite difficult because I don't have many opportunities to use the front application deeply.
Still, learning and writing are fun every day for the past year.
And when I looked around, it seemed that there were many engineers who were sluggish in the second or third year like me. And there were some engineers who had been sluggish for the 5th and 7th years.
What I'm trying to say here is not that it's bad because it's sluggish, or that it's good because it's over the wall, but that those people seem to be tired of engineering in common.
Even for such a person, I have come to want people to think that engineering is fun. As I used to be, a book I picked up may remind me that engineering is fun again. And if there is no such book in the world, I thought it would be okay to write it, so I decided to start writing this book.
I don't feel like saying "enjoy life" or "enjoy work" or something like that. What I'm looking for is a friend who will sparkle my eyes with my favorite game. This book is not a book I write for you, but a book I write for me to enjoy the game of engineering more.
The first half of the book will be an introduction to web application development from the basics, which will be learned while creating a web server (while tracing by Kazuya Maebashi, the content will be to create a web application in Python instead of Java. In the second half, we will use Django as a theme to imitate various functions installed in modern frameworks.
In the first half, I could have just introduced Mr. Maebashi's book, but when I had a study session for junior engineers in the company where there are many Python users,
In the first place, there were members who became a barrier to being Java There was a part of the explanation flow that confused the junior engineer, and it seemed that it could be made better. By publishing on a platform called Zenn, there is a possibility that it will be delivered to a wider range of engineers For that reason, I decided to write a new one in my own words. In the latter half, Professor Maebashi's book focuses on "what you need to know as a good Web engineer" and introduces various peripheral knowledge such as SSL and security. However, this time, my book is just for disassembling my toys and turning them around for self-satisfaction, so I'm thinking of modifying the contents a little.
For those who are willing to make money as an engineer, the content written in Professor Maebashi's book is a compulsory item, so if you are interested, please read that as well.
The permission of Dr. Maebashi is currently being confirmed, and if the permission is not obtained, the writing of this document will end immediately. We received the consent of Dr. Maebashi. Thank you very much.
Also, I think that what kind of book triggers a breakthrough varies from person to person. As I mentioned in the middle, books that I find fun to study are very close to the code I usually write, but they are not barely enough (I often say "one step outside my realm"). Is appropriate.
In that sense, I don't think this book will be a breakthrough for everyone. However, in this era of the heyday of Web services, there are many companies that want to proliferate services anyway, because simple technology is enough, and engineers who can only write a little bit are enough. In addition, programming schools have become extremely prosperous, and there are many junior engineers who learn only how to use simple web frameworks and put them into action. I am one of them.
I thought that those people would stumble in the same place as me, and I dared to say, "I wish I could meet such a book one year earlier," toward people like me. I named it "Introduction to Python Web Application Homebrew for 3rd Year Web Engineers".
I hope this book will entertain me, not me somewhere.
https://zenn.dev/bigen1925/books/e6c9492a82f5e2e10fca/viewer/422445
Recommended Posts