[PYTHON] Progate's pros and cons

Background At the startup I work for, I am developing a service that focuses on users at the Progate completion level. I have never used Progate even though I will continue to develop and develop services in the future. I decided to actually use it because I wanted to know the level of the target user and make use of the good points and unfortunate points in my service.

What is Progate A programming learning site for beginners that advocates "programming learning that beginners can do" ([Progate official site](https://prog-8.com/)). After performing slide-centered learning, deepen your knowledge by actually repeating the flow of output and output with an online editor. The UI has a lot of illustrations and the design is beautiful. What I personally recommend is that there are many courses, and you can learn from Web-based languages to Python and the command line.

Requirements The requirements for this time are as follows.

――I have been a programmer for 3 years --You can use Python all the way, but you have never systematically learned it. --Learn Progate lessons (from Python I to Python V) in one day

Result It took about 3 hours, and the estimated time on the page should have been about 9 hours, so it probably took about 1/3 of the time. I have come to have a solid image of the words (methods, inheritance, etc.) that I have used somehow.

Good points

Beautiful UI Most of the motivation depends on the cleanliness of the UI and the online editor described below. There is a sense of unity in each language due to the pastel color scheme as a whole. Many beginners think that programming goes all the way to the black screen of the console, and in a good way disappoints that expectation.

Online editor An online editor can be used in the exercise part of the chapter. Add the program to the originally written code based on hints and comments. Basically, except for learning in that chapter, it has already been filled in, and only the code of the newly learned part is filled in. Finally, it is executed online and the result is displayed, and errors and hints are displayed. Especially, the error notification is wonderful, and it explains the error code in an easy-to-understand manner as follows.

--Actual online editor (from official website) 公式サイトより

--Actual code

#Create a dictionary with string keys and numeric values and assign it to the variable items
items={"apple":100,"banana":200,"orange":400}

#Use the for statement to create an iterative process that retrieves the keys of the dictionary items one by one.
for item_name in items:
    # 「---------------------------------------------Please output
    print("---------------------------------------------")
    #Please output so that "◯◯ is one △△ yen"
    print(item_name+"Is one"+str(items[i])+"It's a yen")

--Console output

---------------------------------------------
Traceback (most recent call last):
  File "pana4.py", line 9, in <module>
    print(item_name+"Is one"+str(items[i])+"It's a yen")
NameError: name 'i' is not defined

--Hop-up on the Progate side Screenshot_20200313_154450.png

Many beginners are impatient with console errors, and they are trying to avoid stumbling.

The flow is natural Chapter settings that can be used by people who are new to programming and are new to Python with Progate.

--Python I ... Grammar and conditional branching --PythonⅡ… List and dictionary, repeat (for statement, while statement) --PythonⅢ… Function (argument, return value) --Python IV ... Classes and instances --Python V ... Class inheritance / comprehensive exercise

You can also study for each chapter. There were many illustrations of the technical part, and especially the inheritance was a nice summary of the parts that were difficult to imagine.

Unfortunately

I can't get myself I felt like I actually touched it, and I was able to proceed quite smoothly. That's because there are comments at key points and the errors are polite. However, conversely, if you follow the comments, you will arrive at the correct answer without deep knowledge. In chapters that actually deal with classes, you can write code by following the comments without having to think about whether it is a class, a method, or a variable. When it came time to actually develop it, I felt that if I was stuck in such a part, I would not be able to solve it myself.

Scoring is a mystery Progate seems to score not only the output of the code but also the contents of the code with regular expressions. Therefore, while it is possible to issue detailed error messages, there is also the problem that only specific answers can be passed. An example that I noticed is shown below.

If statement parentheses If you put parentheses before and after the conditional expression in the if statement, an error will occur on the Progate side even if the output matches.

--Code that causes an error

#When count is 3 or more, total_0 to price.Please multiply by 9
if (count>=3):
    total_price*=0.9

--Progate output Screenshot_20200313_173005.png

--Correct code

#When count is 3 or more, total_0 to price.Please multiply by 9
if count>=3:
    total_price*=0.9

Others If you do something that you haven't learned with Progate, you'll get an error (but I think it can't be helped). The wisdom that worked is shown below.

Abuse of bool operation When I wrote the following in the chapter of the part that judges the condition using the not operator, an error occurred on the Progate side. It is unavoidable that this will reduce readability and is not expected.

--Correct code

#If z is not 77, output "z is not 77"
if not z==77:
    print("z is not 77")

--The code you wrote

#If z is not 77, output "z is not 77"
if z-77:
    print("z is not 77")

--Hop-up on the Progate side Screenshot_20200315_145759.png

Line feed code Even if you connect the part that is supposed to be output in two times with "\ n", an error will occur on the Progate side. Or rather, Progate may explain the line feed code ...?

Editor environment Online editor, basically excellent, but only one point to worry about. It is quite stressful that the indent tab has 4 half-width spaces. Since the indent is complemented by the for statement etc., even though there are many opportunities to delete the indent, the four half-width spaces wither and make it a tab character ...

Unhandled part Of course, there are many parts that cannot be covered in all five chapters. Even in the basic grammar, tuples and sets are not covered, and sentence processing (search, replace, regular expression, etc.) is not touched by 1 mm. Too little knowledge is available to decide what to do with programming in the future.

Summary I think Progate is the best teaching material for beginners to lower the threshold of programming. However, I felt that it was an unsuitable tool for acquiring practical knowledge to become an engineer and finding what I wanted to do in the future.

Recommended Posts

Progate's pros and cons
Pros and cons of converting Django's development environment to Docker
python> No #ifdef> Another solution> __debug__ Pros and cons of using