Как стать автором
Обновить

Тёмная сторона в программировании для новичков, в том числе и на php

Время на прочтение 5 мин
Количество просмотров 7.6K
По прошествии шести лет программирования видишь свои ошибки. Конечно ошибки чисто свои, но сделаны они по не знанию. И к сожалению незнание берётся вместе со знанием.

Самый простой способ это проверить прочитать про любые парадигмы, паттерны и так далее. Когда Вы будете изучать что-либо, то будет два или более лагерей: «за», «против», «ни за это и то» и так далее.
Давайте возьмём такую частность как венгерская нотация:
Суть венгерской нотации сводится к тому, что имена идентификаторов предваряются заранее оговорёнными префиксами, состоящими из одного или нескольких символов.

В книгах по программированию я читал, что нужно использовать венгерскую нотацию и префиксы формировать по типу данных: int iData;.
Но тут есть минус: при изменении типа потребуется изменять имя переменной.

Именно такие минусы в итоге могут быть теми фундаментальными ошибками в формировании будущего программиста.

Тёмная сторона


Последний Хабратопик Путь Джедая: акт 2 дал толчек опубликовать свои размышления того, что такое тёмная сторона программирования и программиста.
Автор того топика говорит:
Темная сторона. Дело не в том, что вы должны считать себя тупым или не умным, дело в том, что вы не должны быть высокого мнения о себе.

Быть уверенным в себе, поверить в себя — нужно и надо. Не бояться проблем и с головой идти в решение — тоже нужно. Но когда вы будете считать себя умнее кого-то (думаю имеет место сравнение с достаточно умным человеком), то с этого мгновения все остановится, включая саморазвитие, желание учится, етц.


Что ж поехали.

Прокрастинация


Когда нет результата

Программирование для меня началось с тяги написать свою игру. В школе я сильно увлекался GameDev'ом, но получить результат я не смог. Вообще читая литературу по GameDev'у в то время я натыкался на много примеров кода для MS Visual Studio. Именно тогда я начал читать книги по Visual Studio, что было зря. Как оказалось потом в книгах и толстенных библиях про программирования не было ровным счётом ничего.
По Visual С++ я прочитал пару библий, кучу сайтов и всё что я мог делать — MFC, причём так как С++ я по сути не знал, то у меня очень быстро разработка глохла.

В желании получить результат я даже пытался освоить Visual basic. Выдержка из одной книги:
Отличие сред визуальной разработки от более ранних инструментов программирования состоит в том, что они вместо программиста “пишут” наиболее часто встречающиеся и скучные части программы, освобождая его таким образом для интересного и творческого труда. Иногда, если задача простая, случается, что компьютер создает всю программу полностью. Еще одна особенность – программисту, работающему в Visual Basic и других подобных средах, никуда не деться от так называемого объектного программирования, завоевавшего в последние годы программистский мир.

Turbo Pascal, как и все мы изучали в школе, но разработка игр не удалась за отсутствием движка. Было немного примеров по Delphi, поэтому и по этой IDE были прочитаны пару книг. Около двух лет я читал всё, что относится к разработке и работе движков игр, но своё не сделал.

Прошел наверное не один год, прежде чем я понял, что дело не в моем понимании книги, а в информации в этих книгах и последовательности её изучения. Я банально думал, что мне нужно книги по Visual Studio, тогда как нужно было изучать книги по языку.
Я методично читал про высокопарные высказывания про правильный синтаксис, а в коде примеров идущих с книгой были ошибки, пропуски, упущения, либо он не компилировался.

В итоге по прошествии 4-х лет попыток написать свою игру я имел ровным счётом — НИЧЕГО.
Сейчас я могу сказать, что чем больше у меня не получалось тем больше прогрессировала прокрастинация. Фактически периоды времени между тем когда код писался или были попытки его запустить — постоянно увеличивались. И я в поисках результата начал прыгать с языка на язык и пытаясь обрести «истину», периодически забивая голову чтением теории, что никак не помогало разобраться.

ИМХО: В программировании (вначале) важно изначально выбрать, что-то одно и хоть немного достичь, иначе можно долго прыгать с языка на язык, из IDE в IDE, или с фреймворка на фреймворк.

Переписать Мир

После неудач и передышки я заинтересовался программированием для web. Прочитал книгу по php4 и худо-бедно начал писать «сайты». Конечно в основном я правил и дописывал скрипты и объединял это в «сайты».

Через время я начал читать код, видеть свои ошибки и осваивать php5 с его плюшками в виде «ООП». Первое, что писал для нового пых-пыха: класс для работы с базой данных, потом еще «классов».
В итоге на разработку того или иного сайта у меня уходило очень много времени, для «обдумывания» как будет работать самый простой сайт. Я почти каждый раз переписывал / дополнял / совершенствовал классы.

В принципе я знал, что существуют те или иные библиотеки как в виде классов (php5), так и для устаревшего php4. Но тогда я был просто одержим идеей самому писать всё, что нужно.

Когда для самого маленького проекта тебе в итоге приходится «немного» переписывать свои классы в очередной раз, то как тут не быть прокрастинации?

Борьба с нагрузками

Одна из причин почему мною овладела жажда всё писать самому была борьба с нагрузками.
Ярые сторонники компилируемых языков поливали грязью php и указывали на его ущербность и «медленность».

А ярые сторонники написания своих компиляторов, CMS, фреймворков, библиотек, классов — везде и всегда к каждому паблик проекту выливали тонну грязи и примеров тормозов.

Если честно, то за 6-ть лет Я единожды столкнулся с перегрузкой сервера моим приложением. И лишь из-за того, что я cделал так для mysql:
SELECT ...,... FROM ... WHERE in ( SELECT ...,... FROM ... WHERE in ( SELECT ...,... FROM ... WHERE in ) )
Выполнение одного SELECT'а отдельно позволило убрать нагрузку.

Но я слушал старших товарищей и следовал их советам: «изучи язык, а тогда уже используй фреймфорк», «пиши свой фреймворк, так как чужой будет ограничивать твою разработку» и так далее…

Спасение


Лучший инструмент — тем которым можно пользоваться, а не тот которого нет. Другими словами — пишите программы как можете сейчас, а не «как нужно».

Со временем я начал концентрироваться на определённом языке и если что-то не получалось, то методически спрашивал. Например когда я заинтересовался qt, то начал читать с++ и про ООП, а уж потом про библиотеку.

Я всё же обнаружил для себя «силу» различных библиотек и framework'ов. Стал использовать крупные проекты и читать их код, что позволяет учиться.

Я начал писать и использовать код под обстоятельства. Если это был простой сайт, то его можно было написать на php без mysql, либо использовать CMS на файлах/sqlite. Для сайта-визитки использования mysql может быть избыточно.

Большой сайт пытаться впихнуть в парадигму работы «без SQL» наоборот может негативно сказаться на результатах. От лени и недальновидности в первые пару лет Я переписывал проекты (сначала без SQL, потом с SQL).

Давайте будем честными: взлом малоизвестного ПО — маловероятно, особенно сайт с посещаемостью <1000 uniq/day.

Писать для крупного проекта я могу доверить писать себе только если я в этом профессионал и смогу достичь результата. Вообще надо понимать, что писать серьёзный проект и делать это для себя/в свободное от работы время/в одиночку в разы сложнее, чем поставить ТЗ и получить результат от другого человека/команды. И тут дело в многих вещах.

Мы все находимся на разном уровне развития и кто-то чаще всего впереди нас. Я не вижу ничего позорного в том, что бы программист заказывал разработку у другого программиста. Хотя кто-то считает ниже своего достоинства заплатить другому, а вот сутками на форуме болтаться — пожалуйста (прокрастинация).

Не нужно боятся использовать чужие классы, библиотеки, фреймворки и так далее. Если проект испытывает проблемы по их причине, то тогда нужно включать голову. Перефразирую: Заниматься предварительно оптимизацией — зло.

Очень помогает в «не изобретению» велосипедов чтение про шаблоны проектирования (паттерны).
Теги:
Хабы:
-16
Комментарии 28
Комментарии Комментарии 28

Публикации

Истории

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн
Геймтон «DatsEdenSpace» от DatsTeam
Дата 5 – 6 апреля
Время 17:00 – 20:00
Место
Онлайн
PG Bootcamp 2024
Дата 16 апреля
Время 09:30 – 21:00
Место
Минск Онлайн
EvaConf 2024
Дата 16 апреля
Время 11:00 – 16:00
Место
Москва Онлайн