Программировать в качестве хобби, с душой, и особенно бесплатно, это энергозатратно и выматывающе.
Раньше в одиночку, сейчас при помощи ChatGPT, пролазишь сквозь гигантские объёмы информации. Только ступая на одну вершину видишь, что она у подножья другой, выше и сложнее. Чем больше становится знаний, тем яснее небо и виднее громадьё окружающей информации, до которой ещё не дотянулся.

Однажды ты уверенно говоришь себе: теперь я знаю, что ничего не знаю. Произнести это про себя, а тем более вслух, довольно самоуверенно, если понимать смысл высказывания в его историко-философском значении. Например, через иллюстрирование образом круга знаний от Сократа и Платона.
Маленький круг (Ученик/Человек, мнящий себя мудрым) — это небольшая область знания. Но поскольку это всё, что знает человек, он считает свою область огромной, а себя — мудрым. Он не видит границ собственного незнания. Его круг знания мал, а его самоуверенность — велика. Большой круг (Сократ) — это обширная область накопленного знания. Однако его ключевая особенность — это длинная граница соприкосновения с неизвестным. Чем больше ты узнаешь, тем больше ты осознаешь, как много всего ты не знаешь. Сократ, обладая большим кругом, в первую очередь видит эту огромную границу с невежеством
Наверное, поэтому зачастую из дураков получаются самоуверенные деятели, а любознательные эрудиты притоплены в трясине интеллектуальной рефлексии. Однако у этого есть плюс: накопив практические знания ты начинаешь сторониться сложного и искать простое.
Программирование хорошо демонстрирует этапы этого вектора.
Сначала ты ничего не знаешь. Всё огромное, неизведанное и ты постигаешь первые строчки в стиле «Hello, world!».
numbers = [1, 2, 3, 4, 5, 6]
i = 0
count = 0
while i < len(numbers):
if numbers[i] % 2 == 0:
count = count + 1
i = i + 1
print("Even numbers: " + str(count))
Шатаясь на эмоциональных качелях от восторга до отчаяния, вызванного собственной глупостью и бессилием, ты, если не остановился, набираешь стремительно массив знаний. От этого долгое время твой код не становится лучше, но теперь ты можешь его производить. Большую часть времени тратишь на изучение документации и ответов на форумах разработчиков, но пишешь. Пишешь, потому что видишь, что он начал работать.

В какой-то момент ты выходишь на плато своего стека (сферы знаний), и вот тут стоит ловушка. «Прогулки» в этом месте кажутся непринуждёнными, пейзаж знакомым. Скучая ты всё чаще заглядываешь в более укромные уголки и, конечно, находишь там артефакты, о которых не знал или знал поверхностно. И каждая ужасно интересная. Хочется сгрести всё вместе и обязательно куда-то прикрутить.
Вот классный метод класса, а вот, оказывается, отличная стандартная библиотека. Как же её не использовать? Вот ещё гвоздик, вот колёсико. Всё надо, всё в дело! Тут заноза, там заплатка, а вместе вроде как архитектура.
from functools import reduce
from typing import List
def count_even_numbers(numbers: List[int]) -> int:
def reducer(acc, x):
return acc + 1 if x % 2 == 0 else acc
return reduce(reducer, numbers, 0)
class EvenCounter:
def __init__(self, numbers: List[int]):
self.numbers = numbers
def count(self) -> int:
return count_even_numbers(self.numbers)
print(EvenCounter([1, 2, 3, 4, 5, 6]).count())
На этом этапе пытаешься показать «профессионализм» (в моём случае любительский, у кого-то в специальности). На этом этапе исправляешь свой код «детского периода», снисходительно улыбаешься его наивности. Код формируется, как учили, под вырост. В нём правильные слова, может быть даже лучшие современные практики.
Только спустя время ты сам его не можешь прочитать. Чтобы вкрутить новую функцию, реализовать то самое развитие, пытаешься разобраться в конструкции и понять, на кой чёрт здесь этот метод, а здесь такой изворот. Хорошо, если остались свои же подсказки (комментарии, документация).
Есть в зале те, кто закидывал фрагмент своего же кода в ИИ с вопросом: «объясни, что здесь происходит»?

Этот этап может длиться долго. Некоторые застревают в нём на всю жизнь. Другие же осознают, что гениальное просто — это не просто растиражированная фраза с размазанным смыслом. Осознают и понимают, что в лаконичности спрятан лучший способ демонстрации знаний и профессионализма. Чем проще человек может передать свою идею, тем выше уровень его интеллектуальных достижений.
Всё гениальное просто...
numbers = [1, 2, 3, 4, 5, 6]
even_count = sum(1 for n in numbers if n % 2 == 0)
print(even_count)
Но нужно много времени и сил, чтобы сделать просто и понятно.
P.S. Если просто и понятно пока не получается, значит не завершилось ещё наше обучение. Что касается автора, то пришло только понимание, а научиться делать просто сложное, как минимум в программировании, потребует ещё много времени.