1773

История с Java...script

Серия История с Java...script

Устраивался как-то на одну из первых работ. Откликнулся на вакансию программиста в компанию местного провайдера. В описании ничего необычного, требуются знания HTML, JavaScript и чего-то еще, уже не вспомню.

Пришел на собеседование, меня без лишних слов отправили за компьютер сделать какую-то простую страничку. По сути это была верстка, даже не программирование. Что ж, задание есть задание. Сделал за 15 минут. Задание давал, как выяснилось исполнительный директор. После того, как я ему показал результат и его он устроил, был отправлен к другому директору, выше которого в компании уже никаких директоров нет.

Уселись с ним на диван, и он начал беседу: "Насколько хорошо ты знаешь Java". И делает паузу. Я напрягся. После двухсекундной паузы он все же произносит: "...script". Я с облегчением выдохнул: "Нет предела совершенству." Далее шел еще какой-то диалог, но не суть важно.

На первый рабочий день пришел другой программист и сразу выяснилось, что я нужен ему на замену, а он увольняется (или скорее его увольняют); поэтому он передает мне все дела, документацию и прочее. Когда он открыл проект, над которым работал в данный момент, то я покрылся холодным потом. Это был самый настоящий 100% натуральный код на Java. Он поинтересовался – с какого пункта надо объяснять. Я признался, что с нуля. Пути отхода я уже не видел. В голове промелькнули мысли про голодные дни, когда я снова ищу работу, и надо проходить собеседования. Поэтому я остался внимать суть по новому для меня направлению, тем более день собеседования уже был позади.

Дальше я неделю приходил на работу, где мне не давали никаких задач, я просто изучал проект и заодно азы Java. Познавал до набухания мозга что такое есть сервлет, зачем нужен TomCat и прочие явошные дела. Что-то у меня даже получалось, но это было копирование имеющегося кода с незначительными изменениями.

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

В итоге когда мозг совсем набух от влитых знаний, я принял самостоятельное волевое решение переписать проект на PHP, о котором никому не сообщил и принялся за переделку. На мой взгляд этот личный кабинет был очень простой и делать его на Java было неправильным решением. Я так понял, что тот, кто этим занимался, просто знал Java и ему было так удобно сделать. А то, что найти специалистов на замену будет сложновато как-то никто не думал. При этом я прибегнул к небольшой хитрости. Дело в том, что с этим проектом можно было работать только с ноутбука в офисе, во внутренней сети. Но я нашел лазейку, и отключил функцию засыпания ноутбука, когда крышка была закрыта. Уходя с работы, я просто закрывал крышку с незалоченным Windows, а из дома подключался к нему через удаленный рабочий стол и работал. Так я не был зависим только от рабочего времени и писал код вечером и ночью. Я только беспокоился на тему того, что кто-то надумает посмотреть что в ноуте в этом время, но вроде ничего такого не было.

За две недели все было готово. Новое веб-приложение на PHP я выкатил ночью в выходные. В понедельник ко мне прибежали менеджеры с разными проблемами. Вполне логично, что не все было сделано хорошо и некоторую бизнес-логику я упустил. Зато теперь я мог все это чинить, потому что код был полностью мой и я понимал все что он делает, поэтому за неделю все горячие проблемы разрешились.

В этой схеме все выглядело более менее гладко, если бы не человеческий фактор. Кое-какие функции я за незнанием бизнес-логики сделал по-своему, а большинство багов исправил. И это повлияло на то, что отдел операторов стал некачественно выполнять свою работу. Точнее они могли скрывать раньше свои косяки, ссылаясь на баги программы, но когда я эти баги исправил (но никому не сказал) - они продолжили это делать. Тут и случились нестыковки, но это уже другая история...

Лига программистов

2.3K постов12K подписчика

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

Вы смотрите срез комментариев. Показать все
220
Автор поста оценил этот комментарий

Потом автор свинтил, пришел кто-то другой и так же матерясь переписал проект на RoR/NodeJS/Go/что_там_было_модно.

раскрыть ветку (31)
36
Carpe diem
Автор поста оценил этот комментарий

Так очень часто бывает в конторах, где всё делает один программист.

Да и не только.

У нас есть очень ценная приблуда, писанная поляками на... держитесь... Visual Basic .NET. Когда она перестанет устраивать в существующем виде мы вряд ли станем искать разработчика со знанием этого прекрасного языка, а сделаем с нуля на что_там_будет_модно


Select Case CInt(dv(i).Item("IdUnitOp"))

Case 1, 2, 3, 4, 5, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 30

jm = " " + dv(i).Item("EngUnit1")

GetMyStrSngMs(dv(i).Item("PresVal"), suZa, jm, 0)

GetMyStrSngMs(dv(i).Item("ActVal"), suRe, jm, 0)

GetMyStrSngMs(dv(i).Item("Accuracy"), ac, jm, 0)

tx = "<TD align=right style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='" & bCol & "'>" & dv(i).Item("PresValTx") & "</TD>"

PrintLine(1, tx)

tx = "<TD align=right style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='" & bCol & "'>" & dv(i).Item("ActValTx") & "</TD>"

PrintLine(1, tx)

tx = "<TD align=right style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='" & bCol & "'>" & dv(i).Item("AccuracyTx") & "</TD>"

PrintLine(1, tx)

Case 7, 21, 8, 40

tx = "<TD align=left style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='" & bCol & "'>" & dv(i).Item("PresValTx") & "</TD>"

PrintLine(1, tx)

tx = "<TD align=left style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='" & bCol & "'>" & dv(i).Item("ActValTx") & "</TD>"

PrintLine(1, tx)

tx = "<TD align=right style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='" & bCol & "'>&nbsp</TD>"

PrintLine(1, tx)

Case Else

tx = "<TD align=right style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='" & bCol & "'>&nbsp</TD>"

PrintLine(1, tx)

tx = "<TD align=right style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='" & bCol & "'>&nbsp</TD>"

PrintLine(1, tx)

tx = "<TD align=right style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='" & bCol & "'>&nbsp</TD>"

PrintLine(1, tx)

End Select

раскрыть ветку (21)
33
Автор поста оценил этот комментарий

держитесь... Visual Basic .NET.

Не стоит так драматизировать, любой дотнетчик сможет поддерживать код на VB.NET, пусть и не без грусти.


Другое дело, что сам код - говно, если судить по отрывку.

раскрыть ветку (9)
18
Carpe diem
Автор поста оценил этот комментарий

Не стоит так драматизировать, любой дотнетчик, пусть не без грусти, сможет поддерживать код на VB.NET.

Ну я сам .NET знаю весьма прилично, но не стал бы лезть в это дерьмо даже если бы меня позвали для этого в FAANG на зарплату в 2 раза выше рынка :)

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


упоротым неймингом

О, вы ещё этого не видели


Module Wydruki

Public IdApp As Long

Public FirmaNazwa As String

раскрыть ветку (8)
5
Автор поста оценил этот комментарий

Спросил нашего самого молодого джуна

Ну правильно, зачем оно ему?) Нужно спрашивать вайтишника, который устроиться не может.


вы ещё этого не видели

Ох, однажды мне приходилось поддерживать проект с неймингом на итальянском. Опыт это специфический, благо, Google Translate уже тогда был.

раскрыть ветку (5)
4
Carpe diem
Автор поста оценил этот комментарий

Нужно спрашивать вайтишника, который устроиться не может

Ну он то может и взяться, но вот результат...

Опять же после такого "бэкграунда" он и дальше устроиться не сможет :)

Жалко и себя и вайтишника

раскрыть ветку (3)
7
Автор поста оценил этот комментарий

Лет пять назад У нас в банке работал дядечка лет 60, в ИТ отделе. Путем всяких реорганизаций и сокращений Ит отдела он оказался грубо говоря на должности сисадмина-эикея с административными функциями, посидел пару лет так и свалил на удаленку работать на какую-то московскую фирму прогать на Делфи блядь, я выхуеть долго не мог.

раскрыть ветку (1)
11
Carpe diem
Автор поста оценил этот комментарий

Почему бы и нет. Найти человека на легаси очень непросто, а дельфийские проги ещё 40 лет будут делать что им положено. Как в штатах до сих пор что-то на Коболе писанное крутится.

3
Автор поста оценил этот комментарий

Может наоборот: посмотрит на некоторое говно и сделает вводы, став в последствии круче, чем те, кто узнал о решениях раньше, чем о проблемах.

3
DELETED
Автор поста оценил этот комментарий

Я разок в учебных целях ввалился бесплатно в стартап очень "увлечённых" людей.

Комментарии и нейминг функций с переменными были на эсперанто...

Меня хватило на полчаса, а потом мы с ними решили, что я не вливаюсь в коллектив :)

2
Автор поста оценил этот комментарий

выдрики?

раскрыть ветку (1)
2
Carpe diem
Автор поста оценил этот комментарий

Судя по тому, что на немецком принтер это дрюкер ;) это что-то относящееся к печати.

Ну и по смыслу кода тоже

7
Автор поста оценил этот комментарий

Dim tdLeft As String

Dim tdRight As String

Dim tdEndEmpty As String

Dim tdEnd As String

tdLeft = "<TD align=left style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='"

tdRight = "<TD align=right style='border: 1px Solid gainsboro; font-size: 9pt' bgcolor='"

tdEndEmpty = "'>&nbsp</TD>"

tdEnd = "</TD>"

Select Case CInt(dv(i).Item("IdUnitOp"))

Case 1, 2, 3, 4, 5, 6, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 30

jm = " " + dv(i).Item("EngUnit1")

GetMyStrSngMs(dv(i).Item("PresVal"), suZa, jm, 0)

GetMyStrSngMs(dv(i).Item("ActVal"), suRe, jm, 0)

GetMyStrSngMs(dv(i).Item("Accuracy"), ac, jm, 0)

tx = tdRight & dv(i).Item("PresValTx") & tdEnd

tx = tx & tdRight & bCol & "'>" & dv(i).Item("ActValTx") & tdEnd

tx = tx & tdRight & bCol & "'>" & dv(i).Item("AccuracyTx") & tdEnd

PrintLine(1, tx)

Case 7, 21, 8, 40

tx = tdLeft & bCol & "'>" & dv(i).Item("PresValTx") & tdEnd

tx = tx & tdLeft & bCol & "'>" & dv(i).Item("ActValTx") & tdEnd

tx = tx & tdRight & bCol & tdEndEmpty

PrintLine(1, tx)

Case Else

tx = tdRight & bCol & tdEndEmpty

tx = tx & tdRight & bCol & tdEndEmpty

tx = tx & tdRight & bCol & tdEndEmpty

PrintLine(1, tx)

End Select


немного упростил. так заработает?

раскрыть ветку (2)
12
449857929
Автор поста оценил этот комментарий

Вы приняты!

Иллюстрация к комментарию
3
Автор поста оценил этот комментарий

В VB есть &= для конкатинации строк, аналог +=. Но вообще лучше StringBuilder использовать.

А ещё лучше не писать html в коде, тем более если это ASP, динамически таблицу можно нарисовать контролами, как для десктопа.

А ещё лучше не писать вёрстку на ASP, это все равно рано или поздно приходит к формированию html кода от руки, если SPA приложение развёртывается. Чисто бэк на нём хорошо выглядит, а вот эту магию преобразования VB/C# кода в html/js очень сложно поддерживать.

5
Автор поста оценил этот комментарий

На одной из первых работ был проект на ASP.NET WebForms. И тоже на VB.NET


Через пол года поддержки этого шедевра , стал просто просто писать отдельные классы и модули на C#.


Они отлично вызываются из VB.NET, CLR-то единая.

4
Автор поста оценил этот комментарий

А у нас есть приблуда написанная просто на VB.

Причём не для внутреннего пользования, а мы её продаём по 20 тысяч рублей за штуку.

Под Win 10 работает. Но в связи с переходом на линукс её таки придётся переписать.

раскрыть ветку (2)
4
Carpe diem
Автор поста оценил этот комментарий

Всегда можно для начала попробовать запустить в Wine :)

1
Автор поста оценил этот комментарий
Так сейчас же есть кроссплатформенный .net и вроде как VB там тоже поддерживается. Хотя написать проект с нуля порой проще, чем мигрировать с .net framework на .net, особенно если есть завязки на либы, которые есть только под винду
2
ChatGPT
Автор поста оценил этот комментарий

Конвертить между языками очень удобно с помощью ChatGPT

Иллюстрация к комментарию
раскрыть ветку (3)
3
Carpe diem
Автор поста оценил этот комментарий

Для .net есть давно готовые конвертеры.

Это все они делают на изи, причем с гарантией что оно соберётся потом.

Проблема в том, что говнокод при этом становится говнокодом в кубе и дальше его читать ещё страшнее.


В вашем случае, к слову, тот же самый эффект - select, который аналогичен switch в c# преобразовали в странную последовательность if.

раскрыть ветку (2)
0
ChatGPT
Автор поста оценил этот комментарий

Ну вообще это я его попросил переделать на IFы, а то в скриншот не влезал )

Иллюстрация к комментарию
Иллюстрация к комментарию
раскрыть ветку (1)
1
Carpe diem
Автор поста оценил этот комментарий

На самом деле это более релевантно исзоднику.

А дальше лучше вникнуть в логику, почему получились такие наборы и что оно вообще. И наверняка нахуй переписать все.

5
Запретите запрещать!
Автор поста оценил этот комментарий

пайтон же)))

раскрыть ветку (2)
2
Автор поста оценил этот комментарий

Уже раст и го)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

А Java все еще в тренде, и даже kotlin её не победил

2
Автор поста оценил этот комментарий

Хрена ты маг, смешал JS framework Node c Go.

Вот так, сука, и живём...

раскрыть ветку (5)
2
Автор поста оценил этот комментарий

JS framework Node

Что заставляет вас думать, что NodeJS - это фреймворк?

раскрыть ветку (4)
1
Автор поста оценил этот комментарий

Что заставляет думать, что это язык?

Ладно, среда исполнения для серверной реализации JS, но нихуя не компилятор.

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Откуда вы про язык взяли? Давайте оперировать словом "платформа".


ОК, что должно мешать сравнивать рантайм NodeJS с Go? Небесная крутость компилируемого Go (который в бинарнике тащит свой рантайм, к слову) или адская гибкость рантайма ноды?

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

Просто уловил эмоциональную составляющую в твоём посте. По человечески согласен. Но Go в этом enum лишний, прям в глаз резануло ))

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

На мой взгляд этот выглядит Java/C/Go/Rust... FreePascal ))

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества