Pull to refresh

Comments 129

1) Выучите английский на должном уровне.
Полностью согласен.

По опыту скажу, что одно лишь чтение сильно упрощает обучение. У меня чтение повысились, после повышения словарного запаса путем применения lingualeo. Сервис конечно убог, но все-таки проблему с запасом немного решил.

Вот бы еще и на слух понимать лучше, то смог бы множество лекций посмотреть на youtube, но с этим сложности и хз как развивать на слух, для меня это какафония нечленораздельных звуков.
Можете посмотреть в сторону Rosetta Stone… Имхо эффективно улучшает слуховое восприятие и понимание языка (пробовал с немецким языком)… пытается тренировать произношение (тут не всё идеально, но тоже неплохо)…
но она имеет минус в виде существенной цены… очень существенной цены в еврах (эквивалентно какому-нибудь не самому дешёвому интенсиву… но если у вас в городе нормальных курсов нет… или хочется заниматься когда удобно).

(: на торренты за старой, но рабочей версией посылать, естественно, не буду… :).
Могу порекомендовать еще Duolingo. Подходит не только для английского. Сам по нему шведский учу
Да. Согласен. Установил давно. Пробую, но все равно как-то не особо развивается ((( Слушаешь Скотта Майерса или Страуструпа и все… поплыл… как будто не человек говорит, а какой-то инструмент играет
Duolingo так себе. Пробовал немецкий и французский через него — классический учебник + memrise работают гораздо лучше.

У Duolingo проблема в том, что ближе к середине (когда начинается более-менее непростая грамматика) они мало объясняют и выглядит это примерно как «теперь нарисуйте сову», когда человек переходит к practice и тыкается в то, о чём ему не сообщали.

Как эдакий тренажёр грамматики может и нормально, но как что-то самостоятельное — не. Плюс, произношение. В некоторых курсах читает робот, и некоторые языки (как французский, где произношение очень важно) таким образом там выглядят весьма уныло.
Попробуйте подкаст EnglishCafe на eslpod.com, отлично развивает слуховое восприятие английского, а потом Ted Talks на там же Lingualeo…
Рекомендую курс Effortless English от AJ Hoge. В свое время он мне здорово помог преодолеть затык в изучении языка. Автор объясняет за счет чего в обычных школах вызывают отвращение к изучению языка и вообще к учебе, не только в советских, но и в японских. Нужно приготовиться слушать очень много интересных аудиоматериалов!

И я не буду давать ссылку на один русскоязычный торрент с этим курсом.
>>И я не буду давать ссылку на один русскоязычный торрент с этим курсом.
А в личку? ;)
Если есть время, то рекомендую просто смотреть фильмы и сериалы на английском с субтитрами. Я таким способом за несколько лет совершенно не напрягаясь научился понимать речь на слух.
Извиняюсь за оффтоп. Но может вам это понравится и поможет. Есть сайт www.hamatata.com, которые цепляет ссылку на видео на английском и субтитры к файлу. При клике на слово, видео останавливается и оно переводится. Если установить расширение для браузера, то можно переводить фразы и предложения целиком. Я лично так английский на слух с помощью любимых фильмов и сериалов учу :)
Рекомендую www.engvid.com.
(Я умею делать ссылки, но Хабрахабр не разрешает.)
Я бы попробовал, но нет Android версии. Мне нравятся удобные в использовании устройства. Я тестировщик и по работе очень часто имею дело и с iPod и с iPhone и скажу, что мне абсолютно не хочется покупать что-либо у Яблока. Это они мне должны доплачивать за каждое усилие над собою, чтобы еще раз что-то в нем сделать.
На вкус и цвет товарищей нет))
Просто у меня iPhone, и тренажеры я делал для себя, поэтому так получилось
Ну так сейчас пора и Android-версию сделать
Как-нибудь, когда уж совсем делать нечего будет, займусь) Пока «развлечений» других хватает.
я порекомендую изучить использование Node.js

После этой фразы я перестал читать статью
В заглавии сказано веб но не сказано node.js, какое право вы имеете навязывать свою «любимую» технологию?

Что за цифры в таблице с языками я не понял, понял что вы выделили то что вам нравятся зелёным
Почему пхп жёлтый а руби зелёный? Хотя по моим анонимным даным всё совсем наоборот.?

Я понимаю что это ваше субьективное мнение, но что подумает человек решивший войти в веб, и первым делом нагуглит вашу статью?
В заглавии сказано веб но не сказано node.js, какое право вы имеете навязывать свою «любимую» технологию?


Bill Sourour прям читает ваши комментарии на хабре.

А если в общем — все статьи в той или иной мере субъективны, и это абсолютно естественно.
эм… Тут все-таки имелось в виду, что «если вы уже поизучали JS, то, чтобы не учить совершенно другой язык, можете изучить ноду для бекэнда.»
upd. Немного промахнулся комментарием.
В нашей внезапной реальности Bill Sourour может читать хабр.
Более того: если переводчик отсылает линк на перевод автору — вероятность прочтения увеличивается.
Если бы вы дочитали статью, то прочитали бы следующее.
— На рынке полно вакансий для PHP, но, по крайней мере, судя по нашей табличке, он теряет популярность. Я выделил его жёлтым, поскольку это всё ещё неплохой выбор для создания карьеры.
Ну вот лучше бы они не на свои таблички смотрели, а на реальное положение дел. Без PHP начинающий бэкендщик работу себе не найдет.
Нашел первую работу без опыта на ASP.NET, потом волею судеб работал на java и node.js бекенде. И не то чтобы я кто-то выдающийся. PHP — это wordpress, сайты визитки и фриланс — на фрилансе это огромное поле. А it-компаниях, которые делают кастомные продукты, да еще и с различными модулями на бекенде, кроме непосредственно web-контроллеров PHP встречается, но не особо популярен.
UFO just landed and posted this here
Как минимум вы забыли про интернет-магазины и прочий e-commerce.
давно ни видел на хабре такой жирноты
Новичку, вроде меня понятно, что:
веб = фронт-енд + бэк-енд
и сначала перечислено всё, про фронт, потом всё про бэк. Никаких логических нестыковок.

Несколько замечаний:

1) html — css — js. Вот в таком порядке. Изучать JS до изучения html — глупо.
2) PHP — все еще очень крут. Практически весь e-commerce от малого до крупного работает на нем. Все визитки, интернет магазины сделаны на нем. Поэтому работы под него много.
3) Python/ruby — больше подходит для сервисов и порталов. Часто в вакансиях по ним требуется js-фреймворк по типу react или action-script. Работы не так много еще, но зато вакансии хорошо оплачиваются и таких разработчиков ценят.
4) Лучший алгоритм изучения: книга — пара видюшек — разработка проекта (изучение документации под свои задачи).
5) Часто в вакансиях (особенно начинающих) требуется фул-стек: front-end, back-end и навыки админа под unix.

А так: открыл вакансии своего города, посмотрел требования, изучил то, что смог изучить, сделал уверенную моську и пошел на собеседование.
По второму пункту — ни одна подобная статья не обходится без плевка в сторону PHP, стереотипы сильны, да и уж если честно, то большое количество плохих разработчиков(или не разработчиков вовсе) создали плохую репутацию этому ЯП в среде специалистов.
По четвертому, я бы сказал, что лучше это всё одновременно, т.е. смотреть видео и пытаться написать что-либо, обращаясь к литературе при необходимости, а ещё лучше, если в книге будет не просто обучалка языку, но и предоставлены более фундаментальные основы программирования.
PS. Это удивительно, но по моей личной статистике, только 1 из 4 людей, которые приходят собеседоваться, знают сколько бит в байте и количество значений, которое в нём можно хранить (цепочка приводящая к вопросу — это «Как вы могли бы хранить IP-адрес в БД, кроме строки?», «Сколько байт надо для такого хранения?», «Какое максимальное число можно хранить в 1 байте?» и тд).
И еще меньше людей знают, что в байте не обязательно 8 бит.
А вот с этого момент подробнее. Могли бы уточнить, почему там может быть больше 8 бит?
Байт, изначально, на сколько я помню — это количество бит, которое могло быть передано одновременно и, когда это понятие вводилось, он был равен не 8 битам, а 6. На счёт того, чтобы байт был больше 8 бит, я ничего не слышал, но если такое имело место быть, то было бы интересно почитать.
На вики вскользь упоминается даже про 36-битные байты )
Байт — исторически количество бит для кодирования одного текстового символа. (Википедия)

Самый распространенный необычный вариант: 9 бит, — используется при общении с модемом на последовательном порту.
https://en.wikipedia.org/wiki/8-N-1

Также не все знают, что в килобайте 1024 байта. Еще меньше знают, что их там все-таки 1000, а вот в кибибайте уже 1024.
(Зато об этом отлично осведомлены производители жестких дисков).
Вообще-то пока эти самые производители жёстких дисков не начали выпендриваться в килобайте было 1024 байта. А уже потом, внезапно все «осознали, что неверно использовали приставку и придумали модификацию, явно указывающую на разницу». Да, собственно, и сейчас производители памяти(!) пишут простую приставку а не бинарную.

Собственно бинарные приставки до сих пор сообществом до конца не приняты.
Раз уж эта статья посвящена материалам для новичков в айти, я сочту уместным спросить вас: как бы вы порекомендовали заполнять пробелы в фундаментальных знаниях? Начать с физики, к радиофизике, через электронику к микроэлектронике, затем к процессорам, байт коду, памяти, ОС, и далее?

Есть какие-нибудь удобные возможности (вроде описанных выше курсов и тд) для получения этих знания, возможности, которые вы могли бы порекомендовать? Как раз хотелось бы не быть узким специалистом в своей области и иметь представление о том, как работает вообще всё и почему, но основная работа конечно отнимает изрядно сил и времени.
Конечно, фундаментальные знания физики, радиофизики и так далее, могут быть полезны, для цельности картины мира, но, я считаю, что знание этих дисциплин не сильно влияет на способности к программированию.: ) Может быть полезна различная математика, но это опять же зависит от области, в которой, вы решите применить свои знания. Когда я писал про фундаментальные основы, то имел в виду алгоритмы, их сложности, различные паттерны, различные парадигмы, чтобы информация не была однобокой. Если будет только обучалка языка, то в итоге получится средней руки кодер, а хороший программист не сильно зависит от языка и легко изучает новые. Надеюсь, что я ответил на ваш вопрос.
Если будет только обучалка языка, то в итоге получится средней руки кодер, а хороший программист не сильно зависит от языка и легко изучает новые


Вот только работу этому программисту, если он явно не выделяется, искать будет так же уныло. Работодателям почти всегда нужны люди с конкретным опытом, и даже на перекат с Ruby на Python смотрят без энтузиазма.
Требуют с конкретным опытом и(или) знанием конкретного стека, но при прочих равных в нормальную контору возьмут программиста, а не кодера. Как минимум, потому, что программист может предложить эффективное расширение используемого стека, а средней руки кодер, максимум, апнуть версии используемого.
Эти термины «программист» и «кодер»… Почему просто не говорить «хороший программист» и «посредственный программист»?

Внятной разницы между программистом и кодером никто объяснить не может.
Не я начал :) Мне больше импонируют инженер-программист и техник-программист.
Просто «программист-кодер» у всех разные. Поверхностный гуглинг десяток версий выдаст, от «программист — это математик» до «кодер — это тот, кто знает Ассемблер и работает ближе к железу» ;) А ещё могут вбросить «разработчика ПО», который совсем уж рыцарь в белом плаще.

А вообще, чем стандартные Junior Developer, Developer и Senior Developer плохи?

По-моему, более понятное деление, чем инженер-техник. Особенно учитывая, что это перенос понятий из высшего/среднего профессионального образования, которые сегодня смысла особо не имеют — куча людей имеют вышку сомнительного качества, по факту от колледжа отличающуюся мало, как по сложности, так и по содержанию.
Для меня Junior Software Developer, Software Developer и Senior Software Developer это категории или разряды техников :) А инженеры так и называются (Junior/Senior/) Software Engineer. Существенная разница в том, что техник(разработчик, кодер) решает технические задачи по разработке, а инженер — задачи бизнеса, государства и прочих заказчиков как правило путём формулировки и решения технических задач по разработке, но не только. Грубо, технику нужно техническое задание, а инженеру — бизнес-требования и ограничения, на основе которых первым делом он создаёт техническое задание и его технико-экономическое обоснование, а лишь потом выполняет задание. Пускай эти этапы формально не разделяются, но они в наличии хотя в голове у инженера.
Это всё очень условно, по-моему. По этой классификации сильный программист, работающий в компании и получающий разработанные сверху требования в виде ТЗ, будет «техником»; а средний программист-фрилансер, преобразующий бизнес-требования в ТЗ и его экономическое обоснование — «инженером».

И стоит этому фрилансеру например перейти под руководство менеджера, который бы разрабатывал ТЗ для тех же заказов, как он превратится в «техника».
Тут скорее разница не в текущих обязанностях, а в потенциальной способности начать успешно решать те или иные задачи без дополнительного обучения.
Такого не бывает, любой программист, ушедший чуть далее уровня университетских задачек на своем профессиональном пути, способен «решать бизнес задачи», «формировать под решение ТЗ», отличия лишь в качестве создаваемого решения. От чего зависит качество? Оно зависит от знания предметной области и технического уровня программиста.
Именно эти два критерия имеют значение, именно по этой причине в вакансиях ищется не абстрактный «инженер», а достаточно опытный программист со знанием стека и предметной области.

Кстати понятие «программист-инженер» немного напоминает понятие «настоящий мужчина», все говорят об нем, но в реальности никто его не видел.
Вы не путаете программиста с архитектором + бизнес-аналитиком? Или, точнее, зачем-то их обязанности добавляете программисту… Хороший программист должен понимать цели бизнеса и код писать под них… но вот «создаёт техническое задание» и тем более «технико-экономическое обоснование» — это задача бизнес-аналитика, это задача бизнес-аналитика + архитектора + менеджера проекта.
Не путаю. Например, типовая должностная инструкция инженера-программиста:
  1. На основе анализа математических моделей и алгоритмов решения экономических и других задач разрабатывает программы, обеспечивающие возможность выполнения алгоритма и соответственно поставленной задачи средствами вычислительной техники, проводит их тестирование и отладку.
  2. Разрабатывает технологию решения задачи по всем этапам обработки информации.
  3. Осуществляет выбор языка программирования для описания алгоритмов и структур данных.
  4. Определяет информацию, подлежащую обработке средствами вычислительной техники, ее объемы, структуру, макеты и схемы ввода, обработки, хранения и вывода, методы ее контроля.

Аналитик даёт матмодель и алгоритмы, инженер их анализирует и даёт ТЭО выбранному им способу, в котором в частности показывает какие части матмодели и алгоритмов имеет технический и экономический смысл реализовывать программно, а какие оставить за естественным интеллектом.
Чтобы хоть что-то «программировать», надо иметь представление о предметной области, которую ты пытаешься смоделировать в коде. Если «физики и так далее...» не знаешь, значит — твоя предметная область то, что можно описать бытовым языком «без математики». Типа сайта-странички соседней пончиковой. Если хочешь интересную работу в проектах с инженерной начинкой — придётся учить и физику и математику (особенно) и много ещё чего. На это и жизни не хватит — это «процесс», а не разовый «акт». Как то так…
UFO just landed and posted this here
.Net станет кроссплатформенным только после выхода .Net Core, и то только консоль и web-приложения.
UFO just landed and posted this here
Не уравнивайте .Net и C#
> весь e-commerce от малого до крупного
Крупный лет пять назад начал переезжать на AEM (он же Adobe CQ, он же Day CQ) — масштабируемость из коробки рулит, не грех и заплатить.
Не обязательно своего города. Если фриланс, или хочется уехать в другой город, или просто маленький городок, где ловить нечего.
Статья дает начинающим общее представление о веб-разработке и о том, что читать и куда развиваться, но по поводу языков думаю, что php все равно надо знать, так как есть множество сайтов использующих php которые надо поддерживать, развивать. Много и вакансий требующих знания php.
После чтения возник еще другой вопрос сколько может уйти времени на изучение языков и фрэймворков, если например есть желание перейти из системного администрирования в веб-разработку и свободного времени совсем немного, много ведь надо читать.
delphi все равно надо знать, так как есть множество программ, использующих delphi которые надо поддерживать, развивать.
Я закончил трёхмесячный курс «Основы программирования» — Pascal, HTML, CSS, JS, PHP (всего по чуть-чуть). Занятия были 3 раза в неделю по 3 часа и немного задавали домой на выходные. Курсы ни одному работодателю не сдались.
Через полгода поступил на второе высшее на вечернюю форму обучения (также 3-4 раза в неделю по 3 часа). Первый семестр тот же Pascal, кроме него Assembler и дискретная математика. Не успел сдать экзамены, уже предложили работу.
Второй семестр у нас давали C, HTML, CSS, JS, PHP, MySQL. При этом на работе приходится изучать ещё и bash, Lua, Python (модернизирую форк опен-сорса одного), nodejs. Свободного времени просто нет, а я уже нарисовал ТЗ на три своих проекта и для них тоже надо учить языки.
На рабочем проекте я единственный разработчик и этакий человек-оркестр, но все знания поверхностные. Это несколько напрягает. Углубляться в языки нет времени, приходится ставить задачи соответствующим спецам.
Когда я сам искал работу, то столкнулся с девочками-по совместительству-отдел кадров. Они валят в требования к кандидату всё, чем занимаются у них в конторе. Если ты отвечаешь на все вопросы и решаешь их тестовые задания успешно, тебе могут отказать из-за отсутствия опыта или непрофильного образования.
В компанию, где сейчас работаю, я носил и отправлял резюме несколько раз. Постоянно отказывали. Тогда я записался на семинар наших городских софтверных компаний и тупо раздал после семинара свои резюме директорам.
Через день позвонили, через две недели вышел на работу.
Идти в разработку ПО никогда не поздно. Мне 36 лет.
А что у вас было в резюме, что вас взяли единственным программистом без опыта?
А разве по комментарию не понятно? У человека рвение было! Есть люди, которые не умеют или не знают, но решают задачи, потому что целеустремленные. А есть такие, которые очень много знают и умеют, но рвения нет. Никто не хочет рисковать и боится получить косынко-игрателя не смотря на то что косынко-игратель хорошо прошел собеседование или знает туеву хучу технологий. Всем нужны люди с огоньком в глазах, даже если каких-то знаний нет, это все наживное
Я предпочитаю слово «настырный». Образно говоря, в гору никогда не лезу, а поднимаюсь по спирали, или потихоньку эту гору срываю.
В резюме у меня вся моя деятельность с 18 лет. Например, из слесаря КИПиА я стал ИТ специалистом в банке, потом был ИП, потом водителем-экспедитором. Специфика региона — вакансий мало, а с хорошей зарплатой — ещё меньше.
Разработчиком меня взяли по двум причинам: мне всё равно на чём разрабатывать проект, так как я одинаково мало знаю любой язык (остальные кандидаты доказывали, что писать надо именно на том языке, который они знают); мне нужен опыт разработки и запись в трудовой «инженер-программист» в компании, довольно известной в области защиты информации, работодателю нужен возможно минимальный бюджет — все довольны.
Сегодня, кстати, победил свой же собственный прокси-сервер на node.js, добавлю ноду в резюме.
Проект практически готов с моей стороны, задумываюсь, чем дальше заняться: по-хорошему, надо браться за Java, но embedded linux бросать не хочу. Как радиоинженеру, очень уж мне нравятся эти мелкие компьютеры.
Про Java:

> как отдельных приложений бэкенда, так и работающих в паре с JSP

На данный момент JSP можно встретить разве что в legacy.
Есть гораздо более дружелюбные технологии: Spring Boot (можно и отдельно Spring MVC, но это будет чуть более трудоемко), Play! Framework и т.п.
UFO just landed and posted this here
С замечанием про templating в Spring Boot согласен, спасибо.
Тем не менее, я считаю, что JSP ужасна, и новичку в 2016 году предлагать ее не стоит.
UFO just landed and posted this here
Уместно было бы упомянуть шаблонизатор Thymeleaf и вдогонку Tiles — зрелые и популярные
Нравится синтаксис Jade. Сам Jade не использовал, но в Rails постоянно использую его аналог — slim.

JSP отличная вещь для портфолио-проектов если вы хотите в бэкенд. JSP практически полностью снимает необходимость долбиться с фроненд технологиями и при этом сделать законченый проект. Да и как по мне, так сама технология довольно мощная

А как же GO и ReactJS?
Или автор не в курсе их существования?
При упоминании JavaScript ни слова об одной из популярнейших библиотек jQuery, которую КМК надо было упомянуть самой первой. Так как практически во всех вакансиях фрон-энда ее знание является одним из приоритетных.
JS переживает сейчас то, что PHP пережил лет 10 назад, а Ruby и Rails лет 5 назад. Расслабьтесь, скоро они успокоятся и займут свою нишу.
Ну а по поводу популярности и не популярности, и о том кто какую позицию теряет, есть более адекватный анализ. Вот тут например: TIOBE Index.

Что касается популярности, так вот был на devconf.ru не так давно. Секция PHP заняла самый большой зал в Сколково на конференции. А секция по js небольшую комнатку 30 кв/м. ;)
Про Питон понравилось
За ним не стоит огромная компания, как за языками Java или C#, но Python – отличный язык для того, чтобы быстро выполнять поставленные задачи.


Вообще статья больше для какого-нибудь Medium или для VC.ru (где я ее вчера уже видел, кстати) подходит.
Хорошая обзорная статья. И про реальный опыт тоже полезно. Без него никуда.
UFO just landed and posted this here
Какой-то маленький налог.

Для сравнения, в ny 35+9=42.
Очень странный странная статья, особенно в части упоминания технологий и яп:

Факт №1 — в статье упомянут mongoDB, но нет ни слова о реляционных бд\sql, что очень странно, так как mongo встречается на рынке довольно редко и чаще всего в достаточно сложных проектах, куда новичка не возьмут

Факт №2 — php лидирует на рынке, но упомянут в самом конце списка. Так же стоит упомянуть, что у php богатейшая экосистема, того же аналога https://github.com/doctrine/doctrine2 не найти под node.js\ruby

Факт №3 — ставить java\c# в один ряд с Python\PHP\JS\Ruby крайне странно, это совершенно разные весовые категории, на которых создаются совершенно разные классы продуктов
того же аналога https://github.com/doctrine/doctrine2 не найти под node.js\ruby
Под Ruby есть rom-rb, хоть это и не прямой аналог doctrine2, но по возможностям не уступает
UFO just landed and posted this here
Doctrine2 это orm, в основе которой лежит data mapper паттерн, active record это его противоположность. По сути доктрина это клон hibernate из экосистемы java.
UFO just landed and posted this here
Посмотрите документацию и примеры кода, на аналог Hibernate это не слишком похоже. Взять хотя бы модели, сохраняющие сами себя…
https://github.com/balderdashy/waterline-docs
UFO just landed and posted this here
Понимаете, дело не в уникальности, а в самой сути паттерна Data Mapper, он предполагает абсолютную чистоту модели и не приемлет нахождения в ней дополнительной функциональности, в том числе методов сохранения.

Что касается иллюзий, я сам в повседневной жизни пользуюсь data layer на основе Active Record паттерна, вроде пока жив и вполне доволен. Но юзебельность AR никак не опровергает изначального тезиса, что под node.js нет достаточно распространенной data mapper orm, правда?
UFO just landed and posted this here
Посмотрел вашу ссылку, ноль звезд, ноль форков, это не годится для продакшена, по крайней мере сейчас, так что пока обсуждать нечего.
UFO just landed and posted this here
А вы бы взяли в продакшн data layer без какого либо сообщества и с одним контрибьютором, который к тому же пишется в реалтайме?
UFO just landed and posted this here
Такой риск неприемлем для большинства проектов, data layer пакеты большие, а выделять деньги на их поддержку\исправление\дописывание никто не захочет. Проще и логичнее использовать более зрелую платформу, где уже присутствуют все необходимые инструменты. Ну или обходиться без них.
UFO just landed and posted this here
Напомню, что речь шла за orm с одним контрибьютором. Предлагаю закончить этот разговор, слишком много демагогии.
UFO just landed and posted this here
Просто сомнительно что из https://www.npmjs.com/search?q=orm 1370 ORM пакетов нет ни одного с внятным data mapper.

Ну, например в мире RoR, который будет постарше чем мир node.js, но схожий по ценностям, ORM c DataMapper, которую не страшно было бы взять в продакшен, нет. Есть ORM с названием DataMapper, реализующая ActiveRecord, но только названием дело и ограничивается.
UFO just landed and posted this here
Я пару лет назад отказался от ruby и js на бэкенде в новом серьезном проекте из-за отсутствия production ready реализаций ORM c DataMapper. Наличие было вторым пунктом после open source. В новостях ничего не мелькало.
UFO just landed and posted this here
А все потому что Data Layer на DataMapper ( простите за тавтологию) находится в ( ещё раз простите ) в попе на дне!

По производительности. За удобство разработки практически всегда нужно платить производительностью.
UFO just landed and posted this here
Именно нарушение SRP доставляет неудобство, как только основная логика становится сложнее чистой функции от состояния. Вот есть допустим какой-метод Document::approve(), понятно, что скорее всего он меняет состояние, но в случае ActiveRecord не понятно, дергает он save() после изменения или нет. В лучшем случае дернём save повторно в контроллере и даже не вызовем повторного обращения к базе, а вот в худшем сохраним не нужное изменение.

Вообще принципы SOLID соблюдают именно для удобства. Удобно, например, когда у сущности (не в смысле DDD и ко, а в смысле метода, класса, модуля ) — единственная ответственность, когда уже по названию ясно, что сущность делает.
UFO just landed and posted this here
А причём тут технические различия? Я про ценности сообщества, про то, что признано лучшими практиками в процессах разработки.
UFO just landed and posted this here
и как с него слезть на что нибудь на паттерне Active Record.

Если у человека возникает желание с DataMapper перелезть на ActiveRecord, значит, скорее всего, для его задач DataMapper избыточен, бизнес-логика, инкапсулированная в модели, достаточно простая, а сам маппинг практически 1:1. Другой вариант — бизнес-логика лежит отдельно (может даже в контроллере) и сущности Doctrine (анемичные) используются ею лишь как DTO между базой и моделью. Doctrine в частности и DataMapper в целом не для этого разрабатывались, они нужны для реализации персистентности сложных богатых моделей, а не банального CRUD — тут и ActiveRecord будет избыточен.
UFO just landed and posted this here
А тут уже нужно смотреть нужны ли вообще эти связи загружать из базы и, главное, гидрировать в объекты при каждом запросе.

Чаще всего, когда слышу жалобы на неудобность Doctrine при разработке, то дело оказывается в том, что на неё вешают слишком простые задачи либо вынужденно (сами задачи приложения простые), либо применяя какие-то антипаттерны.
CSS после JS? Думаю, надо наоборот, так как JS имеет возможности доступа к CSS, поэтому сначала надо изучить стили. Вообще, мне кажется, что статью надо назвать «Как стать фронт-енд разработчиком». О бек-енде сказали мало, вернее ничего не сказали. А где же SQL, похоронили? Сразу на NoSQL перешли? Не стоит забывать о Фаулере Чистого кода, GoF (3 раза перечитывал и еще 33 раза перечитаю!), алгоритмах и структурах данных, О-нотациях. Неужели можно выучить вот так вот скрипт и сказать :«вот я, берите меня джуном!». Я даже своей жене, которая переходит с гуманитарных наук не советую и рекомендую, а ЗАСТАВЛЯЮ хотя бы не вникнуть с ушами, а просто понять суть алгоритмов сортировки, поиска, массивов, связных списков, очередей, стеков, хеш-таблиц и т.д. О книгах ничего и не было почти сказано. Я начинал с С/С++ от первоисточников: 7 книг Страуструпа, Герберта Саттера, Скотта Мейерса, перешел на Java советами подготовки к OCA/OCP, Шилдта, Блоха, Хорстмана, Эккеля и многих других. Этого для новичков вполне достаточно. По поводу алгоритмов, не все смогут осилить несколько томов Кнутта, но Седжвика можно прочитать или хотя бы послушать и сделать практические задания! Во время изучения всего этого уже можно написать пару сотен мелких программ и создать парочку разработанных собой, которые не стыдно будет выложить в гит и в резюме скинуть ссылку. А если вдруг станет стыдно, то опять таки-же — Мартин Фаулер «Рефакторинг. Улучшение существующего кода», Мартин Роберт — Agile PPP, и конечно же его Чистый код, который надо перечитывать раз в год как минимум. И это только начало, для джавистов интерпраиза, например, список еще километрами раскручивается, заворачивая Spring, Hibernate, все разработки Spring Data (вот том-то и встречается с MongoDB, как было сказано выше), MyBatis и т.д. и т.п. Можно еще много писать, но так как это комментарий, пока остановлюсь на этом.

>> GoF (3 раза перечитывал и еще 33 раза перечитаю!)
Она же сухая! Сложная для прочтения. Кроме как в качестве справочника ее сложно воспронимать
>>Она же сухая! Сложная для прочтения.
Судя по вашему комментарию, вы в программировании недавно. Пройдет некоторое время и вы измените свое мнение
Достаточно давно.
Но зачем тратить время на борьбу со сном, когда можно читать в запой.

Почитайте книгу про рефакторинг, одно предложение «Да, пахнуть определенно не может… а вот пованивать — запросто» чего стоит. Оно уже крылатым стало. Человек пишет увлеченно, интересно и позитивно. Не перегружая деталями.

Еще один пример SICP. наглядно, понятно один пример с рекурсией «Напишите рекурсивную функцию вычисляющую факториал итеративно» чего стоит. Ни разу не заснешь пока читаешь. Авторы «рисуют» алгоритмы.

А при GoF прям спать хочется.
Gof пишут о шаблонах, не надо сравнивать с алгоритмами и рефакторингом, это 3 разные вещи и любой хороший программист должен разбираться в этих вещах
Я говорю вам не про разбираться\не разбираться. А про то что книгу GoF можно использовать только как справочник, не более. Ее не возможно читать как другие, к примеру Макконела, Фаулера. Также можно вспомнить авторов Страуструп и Лафоре, вот последнего читать значительно легче и проще, при этом не в ущерб в знаниях.
Кому-то невозможно, а кому-то легко. Всем не угодишь.
UFO just landed and posted this here
Спасибо за статью, будет полезно в качестве ориентира.
Автор советует приглядеться к node.js другой автор наоборот его не рекомендует: https://habrahabr.ru/post/129640/

Да и списывать php уж совсем как-то странно, тем более что вышла 7 версия, которая на самом деле довольно хороша…
Хотелось бы похожую статью, только про то, как стать сетевым инженером.
Если Вы считаете, что будете жить вечно, то да — изучайте N технологий/техник/наук/спецификаций/прочее, которые кажутся важными человеку, написавшему именно эту статью. Плюс тысячи статей с технологиями/… от тысяч уважаемых профессионалов про не менее важные вещи. И только потом начинайте писать реальный код, выходящий за рамки Hello World-ов. Это примерно то же самое, что и закончить ВУЗ по специальности: с одной стороны, нельзя сказать что Вы не специалист, с другой — совсем не факт, что Вы можете здесь и сейчас реально помочь реальному проекту. Разница с ВУЗ-ом лишь в том, что он даёт «корочку», которая имеет хоть какой-то вес. А какие рекомендации даст «Bill Sourour» вашему потенциальному работодателю при попытке устройства на работу?
Мои советы на счет англйиского и изучения его быстро до рабочего уровня писал тут Freelance FAQ: какой уровень английского нужен?

В целом совет как стать разработчиком всегда даю такой — устраивайтесь на работу программистом. Если не берут, анализируйте, в чем дело, устраняте препятствие и снова — устраивайтесь на работу программистом. Рекурсивно, в общем.
Мне очень симпатичен подход «попробуй все потрогать, потом сам решишь».
Грамотно и верно. Без кругозора программист — всего лишь талантливая обезьянка.
Забыли упомянуть, что еще важен и нужен опыт и понимание принципа работы веб-сайта: http-протокол, роль веб-сервера, роль базы данных, веб-браузер. А также, кроме серверного программирования на модных языках, еще и опыт развертывания, интеграции и управления готовых CMS-систем, которые может быть легаси, но вполне себе решают задачу в роли бэкэнд системы. Заказчику, важна суть, а не то, на каких технологиях реализовано и насколько это в тренде.
Sign up to leave a comment.

Articles