[GO] A learning roadmap that allows you to develop and publish services from scratch with Python

at first

This article aims to ** "Develop services with Python from inexperienced programming" ** We have organized the skills to be acquired as a learning roadmap.

** 2-3 hours every day (+2 hours on Saturdays and Sundays) ** We have narrowed down the content to be completed in a minimum of 3 months if you continue. It is okay to skip the skills you have already acquired.

Since the general flow is the same for other languages such as ** Ruby **, It's okay if you just read the part that says Python as Ruby.

The big picture of the learning roadmap

First of all, there are 10 types of skills required for service development.

In each chapter, explaining what each skill is useful for, We will introduce reference articles and books that you can acquire sufficient skills.

image.png

Learning method and reference links

① Construction of programming environment

First, perform ** "environment construction" ** required for programming. Follow the reference article to install ** Editor (Atom) ** and ** Python **.

-Install Editor (Atom) --Install Python -Windows: Install Anaconda -Mac: Install Homebrew -(Windows only) Install GitBash

② How to make a website

If you have no programming experience, it is recommended to start with HTML at first.

The ** various websites we usually see "always use HTML" ** points, The reason is that it is okay to make some mistakes, so you can proceed with your studies comfortably.

--HTML: Build a website skeleton -How to write HTML ① -How to write HTML② --CSS: Add decoration to the skeleton -Site decoration by CSS ① -Site decoration by CSS②

③ Design (Bootstrap)

As I get used to HTML / CSS, I feel ** "I want to make a more beautiful website" **.

It is possible to make a beautiful design with CSS if you gain considerable experience, Everyone is studying to ** "create a service" **, so let's move on as soon as possible.

A useful tool that appears there is ** Bootstrap ** developed by Twitter. ** Even if you don't have CSS skills or design experience ** It's an excellent way to create a stylish site.

There are various versions, Use the latest ** Bootstrap 4 ** as of February 2020.

--Boobstrap Basics: Add Design to Your Website -Learn how to design ① -Learn how to design ② --Bootstrap application: Responsive web design (smartphone compatible) -How to use the grid system

④ Python basics

Since I was used to programming, Python is finally here. Even if you say Python in a word, there are so many elements that you can't study enough.

Therefore, in this article, we will focus only on ** service development **. I will introduce ** essential skills that you can use even if you don't like it **.

-Get used to various data types --int type (integer) --Floating type (number including decimal) --str type (character string) --list type (list) --dict type (dictionary) --Get used to the control syntax -For sentence -IF statement --Make system parts (modules) -Function -Class

⑤ Database

Next is the database (hereafter DB) that is inseparable for service development.

If you use the ** Web application framework "Django" ** that I will introduce later, You don't need to know the DB language such as MySQL.

That said, ** what kind of processing is DB doing internally **? If you do not understand the concrete image, you will definitely have a hard time at the service development stage.

So, let's focus on the minimum elements and study efficiently.

-[Reference book](https://www.amazon.co.jp/SQL-%E7%AC%AC2%E7%89%88-%E3%82%BC%E3%83%AD%E3%81% 8B% E3% 82% 89% E3% 81% AF% E3% 81% 98% E3% 82% 81% E3% 82% 8B% E3% 83% 87% E3% 83% BC% E3% 82% BF% E3% 83% 99% E3% 83% BC% E3% 82% B9% E6% 93% 8D% E4% BD% 9C-% E3% 83% 9F% E3% 83% 83% E3% 82% AF-ebook / dp / B01HD5VWWO / ref = zg_bs_712806_1? _Encoding = UTF8 & psc = 1 & refRID = W5ABD22S47XTVNK56N71) --Understanding the basic processing of DB (CRUD processing) --Understanding the concept of foreign keys -Understanding how to draw ER diagram (DB blueprint)

⑥ Construction of development environment (virtual environment)

If you clear this far, you will have the basics to start service development. However, it will be useful later if you do not rush and understand the concept and usage of ** virtual environment **.

I hope you can check the details in the reference article, The purpose is to prevent the programming environment from getting messed up **.

--Need for virtual environment -Reference article ① -Reference article ② --Try to create a virtual environment -How to use venv

⑦ Understand the procedure of Web application development

Let's finally get into service development. Keep in mind that it is officially called ** Web application development **.

In most web application development, ** "Web application framework" ** is used.

Roughly speaking about web application frameworks, you don't have to program from scratch yourself ** Prepared in "Most of the parts required for development are completed" ** You can think of it as a convenient development assistance tool.

However, just coding the ** "last superficial part" ** can be a daunting task. This is the most difficult thing to do, so let's do our best.

There are two well-known web application frameworks in Python.

It depends on your preference for studying, but There are cases where I made it with Flask but remade it with Django. I recommend ** Challenge Django from the beginning **.

In addition, if it is Django, there is a Qiita article that I wrote originally It is organized so that you can learn the necessary elements in the shortest time.

—— Differences between Django and Flask - Django: ――There are many things to remember first. Difficult as an introduction --A lot of optional functions, once you remember it, you can't let go - Flask: ――There is little to remember and it is relatively easy to develop --Since there are few options, it will be difficult for full-scale development. --In practice, you're often asked for Django -Article that can be a human resource who can develop systems with Python (Django) _Introduction --Understanding the big picture of web application development --Actually coding a web application

⑧ Requirements definition-system design

Next is ** "Requirements Definition-System Design" **, which is often overlooked.

No matter how much you can program ** "What should I make? If you can't decide **, you can't start anything.

I will introduce the articles I wrote in the past, so ** Make sure you master the "process of drawing blueprints from ideas" **.

-Requirements definition-Articles that can be human resources who can design systems --Requirement definition process --Screen design --Functional design --Data design

⑨ Source code control (GitHub)

If you study so far, various source codes will be accumulated. It's a time when it becomes difficult to manage even the most meticulous people.

** "Where did you save that program?" ** ** "I have overwritten and saved .. I want to return to the previous state." ** ** "It is troublesome to share the program with other people (zip it up and attach it to an email, etc.)" **

** GitHub ** is a tool that solves these problems. Be sure to learn it as it will be used in practice.

-Create Account -How to use GitHub

⑩ Service release

Finally, let's publish the developed service. ** Preparation for publishing the service (server preparation) ** is roughly divided into 5 types.

In this article, we will introduce the specific procedure for ** "⑤: Cloud server" **.

Also, to use the cloud server You need to master ** Linux commands **, so let's learn it as well.

-Features of various server services / Merideme -① Buy your own server -② Rent a rental server ――③ Rent a VPS -④ Rent a dedicated server ――⑤ Rent a cloud server -Create AWS account -Publishing services using AWS (EC2) --Contract with AWS --Rent a server --Publish the service --Get used to Linux commands -Reference article ① -Reference article ②

at the end

Creating a service on your own requires a wide range of skills. It's a difficult task, but I've seen many people actually overcome it.

Recently, the environment that makes programming easier has been set up, so There is a growing tendency that good jobs cannot be obtained with partial skills such as ** "I am good only here" **.

Once you get over it, it becomes ** "a powerful skill that is second to none" **, so We support everyone who read this article so that they can survive the three months.

Please do not give up until the end and do your best to create a good service.

【P.S.】 Last but not least, Twitter also publishes programming information. If you like, please follow Twitter account "Saku731".

Recommended Posts

A learning roadmap that allows you to develop and publish services from scratch with Python
A memo that allows you to change Pineapple's Python environment with pyenv
Introducing the book "Creating a profitable AI with Python" that allows you to learn machine learning in the shortest course
A Python script that allows you to check the status of the server from your browser
Introduction of "scikit-mobility", a library that allows you to easily analyze human flow data with Python (Part 1)
I wrote a book that allows you to learn machine learning implementations and algorithms in a well-balanced manner.
Create a plugin that allows you to search Sublime Text 3 tabs in Python
[ES Lab] I tried to develop a WEB application with Python and Flask ②
Deep Learning from scratch The theory and implementation of deep learning learned with Python Chapter 3
WEB scraping with python and try to make a word cloud from reviews
From buying a computer to running a program with python
Create a machine learning environment from scratch with Winsows 10
Until you create a machine learning environment with Python on Windows 7 and run it
A memo that reads data from dashDB with Python & Spark
Try to build a deep learning / neural network with scratch
Jedi-vim shortcut command that allows you to refer to the definition source and definition destination in Python
Python regular expression basics and tips to learn from scratch
Try to generate a cyclic peptide from an amino acid sequence with Python and RDKit
A note that deployed a Python application from Circle CI to Elastic Beanstalk and notified Slack
A standard way to develop and distribute packages in Python
I made a server with Python socket and ssl and tried to access it from a browser
Try to bring up a subwindow with PyQt5 and Python
I tried to make a generator that generates a C # container class from CSV with Python
Hash with python and escape from a certain minister's egosa
Let's create a program that automatically registers ID/PW from CSV to Bitwarden with Python + Selenium
How to write a metaclass that supports both python2 and python3
We have released an extension that allows you to define xarray data like a Python data class.
A note on what you did to use Flycheck with Python
I want to use a wildcard that I want to shell with Python remove
8 services that even beginners can learn Python (from beginners to advanced users)
[Python] A memo that I tried to get started with asyncio
How to make a surveillance camera (Security Camera) with Opencv and Python
Try to extract a character string from an image with Python3
Get data from MySQL on a VPS with Python 3 and SQLAlchemy
I tried to make a periodical process with Selenium and Python
I read "Reinforcement Learning with Python: From Introduction to Practice" Chapter 1
A quick guide to PyFlink that combines Apache Flink and Python
Pass a list by reference from Python to C ++ with pybind11
I read "Reinforcement Learning with Python: From Introduction to Practice" Chapter 2
Created a service that allows you to search J League data
[Python] Try to recognize characters from images with OpenCV and pyocr
Create folders from '01' to '12' with python
2. Make a decision tree from 0 with Python and understand it (2. Python program basics)
With PEP8 and PEP257, Python coding that is not embarrassing to show to people!
Realize environment construction for "Deep Learning from scratch" with docker and Vagrant
Create a tool to automatically furigana with html using Mecab from Python3
[Deep Learning from scratch] I tried to implement sigmoid layer and Relu layer.
Extract lines that match the conditions from a text file with python
Migration from Python2 to Python3 (Python2 is rebuilt as a virtual environment and coexists)
Connect to postgreSQL from Python and use stored procedures in a loop.
I tried to develop a Formatter that outputs Python logs in JSON
A beginner of machine learning tried to predict Arima Kinen with python
Make a decision tree from 0 with Python and understand it (4. Data structure)
Build a "Deep learning from scratch" learning environment on Cloud9 (jupyter miniconda python3)
Create a decision tree from 0 with Python and understand it (5. Information Entropy)
[Python] A program that creates stairs with #
From Python to using MeCab (and CaboCha)
Send a message from Python to Slack
Fractal to make and play with Python
A memo with Python2.7 and Python3 on CentOS
Business efficiency starting from scratch with Python