Nice to meet you, everyone living in Qiita Land.
I didn't feel like posting much because I felt that Qiita had a lot of great people, but I wanted to do some output, so I decided to post it.
Thank you for your kindness.
At the moment (2020/04), I belong to the Department of Computer Science, a third-year student at a certain university. Before I entered university, I had a stance of "programming, what is it delicious?", But once I finished learning Java object-oriented programming in class, I now think "Hey, programming is a pain." At school, I often talk about algorithms, information theory, OS, computer architecture, digital circuits, etc. rather than programming, so I don't really write much code. Writing code is almost my hobby. That's why I decided to do web development on my own and train myself to write code.
§ About In this article, I will explain what steps a beginner who is new to web application development should take to escape the violent copy and paste and code while understanding for himself. It is a thing that I thought about and wrote.
I'm learning using Python-based web frameworks (Django
, Flask
). Detailed development environment below.
Macbook Pro macOS Catalina 10.15.4 13-inch
Python3 3.7.7
Flask 1.1.2
Django 2.2.2
I will write in the order I learned.
-** What you learned in the computer science class and seems to be related to Web development ** --Object-oriented programming in Java (especially understanding field, constructor, instance, class inheritance)
-** Everyone's Python 4th Edition 8th Edition ** (published by SB Creative) --Basic calculation --Difference in data type --Class inheritance
-** HTML & CSS for people starting the Web, JavaScript Kihon no Kihon ** (Kindle, by Makoto Taniguchi)
--HTML structure
--JavaScript basics (Vanilla JS
, jQuery
, Vue.js
basics)
-** Progate HTML, CSS course (free only) **
-** Move and learn! Introduction to Python Django development ** (published by Shoeisha) --How the web application works --Python, Django environment construction --Backend mechanism (routing, view, interaction with DB) --Front-end mechanism (HTML, CSS, JS) --Deploy to production environment
-** Technology that supports the Web --HTTP, URI, HTML, and REST ** (Kindle, by Yohei Yamamoto) --Web design concept --URI (URL) implementation policy --Hypertext Transfer Protocol (HTTP) design concept --Others (I haven't read it yet)
I've lined up a lot of learning sources, but it took a little less than two years ** to complete all of this ... Don't.
** The biggest mistake was to solidify the basic technology without setting a purpose.
If you want to develop a web app! I have a strong feeling that I don't know what to do! If there are people who say that, I think it is better to be enthusiastic to finish this amount in ** a year, preferably half a year **. I want you to lean forward and learn!
Below are the stumbling blocks that I thought through this learning and how to deal with them.
I think most people will have a headache with this. HTML
, CSS
, JS
, Python
, Django
, HTTP
, ... I have thought that the mechanism of the Web is ** a variety of technologies covering various fields **, so-called ** comprehensive art **. By the way, the listed technologies are not enough. At least security, databases, etc. are not enough.
The solution to this is all-out, ** divide the difficulties. ** (I wonder if it can be transmitted, it is a nostalgic Leroy monk)
To be honest, it is impossible for beginners to do all the development by themselves (called a full stack engineer).
It takes time to learn all the techniques, and I am struck by the overwhelming amount of knowledge in the first place. I'm pretty broken.
If ** the goal is to complete the product **, I don't think it's a good idea to keep spending time on how to achieve that goal. I think it is best to work in a team that combines people with various specialties. If you feel that you don't have the skills you can handle, you can do it in any field, just finish one introductory book and try another product by changing the numbers in that introductory book. But let's make it. It is a step forward step by step.
On the other hand, if you are ** aiming to learn the technology around Web applications **, let's touch on various technical aspects and make a lot of errors and suffer (suddenly demon). That seems to be your shortest skill acquisition technique. Let's work hard.
In my personal opinion, it feels better to go to the ** front end side ** first. It feels great when HTML and CSS are decided. In addition, I think that even in hackathons, if you put on the front end, you will feel like you have done a lot of work.
The back end is familiar with the language and also learns how to use the framework, so there are times when you learn twice, so I think it will take some time from the start of studying until you can actually make a product (of course). I'm not saying that the front end can be done without studying, and personally it's becoming the field I want to study the most).
As for what I should study further, I recommend ** Progate, which does not require environment construction, ** is completed on the browser, and ** changes are reflected immediately **. think.
Books are good, but if the publication date is a little earlier, the CSS writing method may be old, or the framework version may be up and not supported, so just check if the publication date is old. I think it's better to keep it.
I honestly don't know this (because I haven't touched other languages and frameworks such as Ruby at this time), but one thing I can say is that ** choose a language you are familiar with ** * * I think it is good for mental health **.
I was just playing around with Python when I first started working with web apps, so I chose a Python framework. Basically, in development, you do not write the code yourself from scratch, but you make good use of the code (library) written by other people, so it is easier to get used to the unique notation of the language. is.
I am prepared to get a lot of errors during development. When dealing with that error, I think it's about three times as hard as a language you're used to finding out what's causing it if you're not familiar with it.
For those who haven't touched any language, I honestly don't recommend Python (especially Flask). Because the amount of information on the Web is overwhelmingly small. (The number of search hits on Qiita is ** Rails 33401, Flask 2346, Django 4588 (as of April 14, 2020) **, and I think that the weakness of the Python framework is overwhelming.) This difference in the amount of information affects the development speed, so if you have never touched it, we recommend in the order of Ruby on Rails
> Python Django
> Python Flask
.
I think there are people who are doing this while googled on the net. It's written like this on that page, but it often happens that it's written like this.
In such a case, the most useful thing is the ** official document ** or ** book called a masterpiece **.
The official documentation is in the words of the developers and the like, and is often ** explained in the most concise and pointed out, stark word sense **. By the way, the official tutorial of Django, a Python-based web application framework, is God. Rather than google around, think that you have been deceived by the official tutorial and try running once. The steps to explain are all engraved where it is easy for beginners to trip.
In addition, there are some books that Qiita recommends that "this book should be read". Of the articles that basically say that, ** books that are acclaimed in multiple articles are basically good books **. I think it's better to look for a book that way than to rely on Amazon reviews.
If you're worried about how to implement it, stop ** developing ** and ** trying to go to google ** and then go to ** official documentation ** or ** books called masterpieces **. You should take the time to read it.
** The chaos in your head is organized in a pleasant way, paving the way for implementation. ** (It's a great religion, but it's true)
** Amazingly studying. This is serious. ** **
My recommendation is ** Web-supporting technologies --HTTP, URI, HTML, and REST **, which I mentioned above. Did you go through the backend and wonder why you just use GET and POST on the Web? The answer is in this book. This is a must read.
** Are you doing it alone? ** **
I think that services have users, so if possible, it feels better to develop in a place with people.
I think there is a community of engineers and designers all over the country. Even if you are not good at that kind of thing, you can go to the Mokumokukai or whatever. If you think it doesn't suit you, you can try it at the family restaurant with a reliable friend.
In the area where I live, a coworking facility where engineers and designers gather was born this spring, and I am a heavy user.
I think it's best to do it with someone, not alone. I don't think an engineer can be strong alone.
If anything, it may be for people who ignore speed and want to solidify the ground and proceed. Roughly speaking, I feel like I'm learning in the order of front side → object-oriented programming → back end → official document or book.
The reason why statically typed languages that declare types are good is that you often don't understand why your code doesn't work unless you are strongly aware of the concept of types. Basically, most web-based languages (Ruby, Python) are dynamically typed languages (like), but I know that it is convenient to hide the concept of types. I think it's only humans. It seems that an adult with a gentle face was actually a scary person. This seems to be honestly pros and cons, but I think this is what I think.
It has become unexpectedly long. Did you put too much effort into it?
Actually, this is an article that is not very friendly to beginners.
If you don't understand a word, please do a Google search. I'm sorry.
However, I don't want you to worry in the same way when I stumble, so I hope everyone will do their best.
Thank you for reading and I will write something again.