Этот вопрос задавали на youtube раза три (возможно даже один и тот же человек, я это не отслеживаю) и когда я начал писать заметку, то понял, мне нечего рассказать. Я стал чаще писать сначала заметку, а потом записываю видео. Пока пишу заметку, я как бы прикидываю, о чем я буду говорить в видео. В итоге текстовая и youtube версии получаются очень похожими.
После клика я попал в компанию, которая делает что-то похожее на 1C кадры для рынка США и Канады. Это одностраничное приложение, в котором очень много сделано на стороне клиента, поэтому здесь очень даже серьезный упор на JavaScript.
Чтобы реализовать одностраничное приложение когда-то было принято решение использовать фреймворк Dojo Toolkit. Изначально я его не очень воспринял, но потом как-то втянулся и мне понравилось, как все реализовано. По идеологии Dojo очень похож на Angular 2, что очень даже эффективно при создании одностраничных приложений.
Мы очень много пишем JS компонентов и UI разработка занимает достаточно большую часть моего рабочего дня. На backend стоит SQL Server и .NET и коммуникация между UI и задним планом происходит как у REST сервисах. Это не совсем сервисы, я бы даже сказал совсем не сервисы, но все же общение между двумя слоями идет с помощью передачи JSON пакетов. И это наверно единственное с точки зрения архитектуры, что мне нравится.
Отделение представления от backend таким способом, что они общаются через простой JSON формат реально отделяет представление от контроллеров и тем более логики. Если использовать представления Razor, то ваши представления будут слишком жестко привязаны к контроллерам и перейти на что-то другое будет практически невозможно. В нашем случае все независимо и перейти на что-то типа микросервисы будет достаточно просто. Достаточно просто перенаправить запрос в JS на endpoint микросервисы и больше никаких изменений в JS коде делать не нужно. И этот сервис может работать даже на Java, главное, чтобы он возвращал нам JSON.
Я уже на блоге как-то писал, что интегрировать C# код в представления в любом его виде не желательно. Это нормально для небольшого приложения, но, если это серьезный проект, общение контроллера с UI должно быть совершенно не связанным.
Ну ладно, Razor использовать еще можно даже в средних проектах, потому что он реально удобный, но в представлениях не должно быть никаких хелперов типа Html.Form() даже в самых маленьких проектах, никаких плюшек, которые предоставляет задний план, иначе зависимость представления сильно растет и перевести backend на java без полного переписывания заднего плана будет невозможно.
У нас крупный проект, над которым работают сотни программистов и в нашем случае было правильное решение полностью отделить UI и сделать его максимально независимым.
В остальном, мне реально нечего сказать про мою нынешнюю работу. Это самая скучная позиция, которая у меня когда-либо была. Я прихожу каждый день на работу и просто пишу совершенно скучный код получения данных из базы с минимальной бизнес логикой на backend. Я так же пишу много JS, HTML и CSS для UI.
Я очень любил работу в Klick Health, когда я работал на Sony. Да, были бессонные ночи, не очень высокая оплата труда, но были интересные проекты, я мог сам решать, как и что реализовывать, я выбирал технологии и процессы. У меня были реально сложные задачи, много серьезной оптимизации и т.д.
В моей нынешней компании день более спокойный, работа более предсказуема и процессы уже давно сформированы и если меняются, то не сильно. И это наверно проблема любой большой компании. То же самое и в Apple или Microsoft и в этом тоже есть свой плюс – спокойная и предсказуемая работа. Она мне нравится, но все же когда меня спрашивают – а чем ты гордишься, что ты такого крутого делаешь – мне совершенно нечего сказать.
Что еще можно сказать о технологиях. Недавно мы перешли на git. До этого долго использовали TFS, в котором все пишут в одном брэнче SharpTop, а если нужно смерджить что-то в другое место, то это занимало очень много времени и происходило слишком медленно. Не знаю, это проблема TFS или того, как все было сделано в компании. Неужели и в Microsoft все пишут так же в одном большом брэнче? Я этого не понимаю и не приветствую, хотя в Макрософт кажется уже перешли на git, поэтому тут больше вопрос должен звучать – неужели они писали все в одном брэнче?
Я не понимаю, как так можно писать все одну кучу и потом тестировать. Сейчас мы перешли на git, но процесс не изменился, теперь просто пишут не в sharptop, а master, но делают это все и сначала код попадает в туда, а только потом его тестирует qa.
Блин, ну это наверно тема отдельного разговора, как работают люди с git. Но это опять же мне не нравится. В нашей команде мы пытаемся изменить это и возможно будет разрабатывать все в отдельных бренчах, тестировать, и только по завершению всей работы переносить код в основной брэнч.
Что мне дала новая работа – более высокая зарплата за спокойную и предсказуемую работу. Возможность научится в реальном приложении (а не на тестовых примерах) писать одностраничное приложение - не понравилось. Я считаю, что одностраничные приложения прекрасно подходят для таких вещей, как текстовый редактор, электронные страницы и т.д., но не для того приложения, которое создаем мы на работе. Познакомился с Dojo (неплохо). Познакомился с TFS - не понравилось и судя по всему все уже переходят на git.
В общем, мне особо нечего рассказать про нынешнюю работу. Я смог рассказать про стек, но я понял, что видео на эту тему писать смысла нет и пока не буду, потому что оно получится слишком скучным и ограничимся только статьей на блоге.
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку уже лайкнули 1 человек
Привет, Михаил у меня ваша книга Библия C# 2-е издание покупал, вот в инете нашел Библия C# 3-е издание что бы посмотреть, про WPF там не чего нету, там только WinForm
Новое издание, которое выходит уже кажется четвертое. Оно кажется даже еще не вышло.
Михаил вчера в видео вы говорили про Java в банковском секторе что им платят много и работы много, вот интересно стало почему им так много платят ? чем они там занимаются в банке ?
Банки - это финансы, там ответственности больше. Там опыт и знания нужны выше. Я же сам работал как бы в банке, когда работал на Sony, потому что мы ,были банком поинтов. Это реально нагрузка. Каждый запуск сидишь и боишься, что где-то есть ошибка и компания потеряет деньги. Меня как-то пока больше в банковскую сферу не тянет.
Михаил, доброго дня.
В Java бэкенд разработчику нужно знать сам язык, технологии работы с БД и фреймворк для разработки. Получаем Java Core, JDBC (по старинке), Hibernate, Spring(какие-то части, слишком он большой). Какие аналогии в данном примере будут на .NET? C#, ADO.NET/Linq, ASP.NET Core?
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.