Когда в стране пиздец и ад, я под любимые Любэ поделюсь наболевшим в последний месяц.
Как-то в свое время пошла у Семьи шутка, что я де белая ворона во всех семейных профессиях: не врач, не препод, не связана с геодезией\инженерией (а как же мой диплом инженера-системотехника?!) в общем одно сплошное разочарование. А вот теперь волею судьбы новая работа подкинула мне возможность быть преподом. Да ну нахуй лучше не надо. Какие-то связи с каким-то эконом вузом и их дипломники часто проходят у нас практику и остаются. Уже одна девочка работает пару месяцев, один парень ещё с прошлого года вроде бы. А тут подвалила ещё порцайка. По-логике вещей на 1 студента 1 ментор со стороны нас. Но тут случилась маааленькая жопа, из программистов в офисе только я, а на прогеров хотело ажно 3. Угадайте с трех раз :7 Но, на моё счастье один еблан отсеялся ещё на уровне собеседования. Парень сам по себе мерзкий, а вел себя как царь и бох.
Начну с отсеявшегося с занебеснымЧСВ. Не помню как его зовут, но то не важно. Собеседовали его мы вдвоем с девушкой-консультантом по финансам. Сашенькая маленькая, хрупкенькая, няшненькая блондиночка с мозгами и хваткой питбуля. Ну и я со своим тихим, детским голоском, после болезни ставшим ещё более тихим (хорошо что вообще говорить могла). В общем авторитета визуально 0 целых хрен десятых. И против нас ОНО брутальное мачо-мэн соблаговолившее осчастливить фирму своим присутствием. У Мачо-мэна было резюме на англицком, интермидиет в знаниях языка, С++ в ЯПах и опыт разработки многопоточных приложений. На деле, человек не знал что такое Remove (я сейчас даже не про команду, а как слово переводиться). "Многопоточность" заключалась в том что один поток написал, маякнул, заткнулся, второй потом прочитал (не многопоточность ни разу). Мальчег условно знал умные слова вроде "семафоры", "мьютексы", "ERP", "CRM" и т.п. но совсем не знал разницу между ними. На мою просьбу рассказать что делают процедуры (при этом я вполне обещала подсказать незнакомые команды) парень повопил на первую процедуру, что мол она на паскале, а он его не знает и не может. *Нихера не паскаль, C/Side навижена* На что я разумеется сказала: рассказывай про вторую. Вторая была на c# хоть синтаксис знакомый. Дали ему время "я не могу сосредоточиться когда вы на меня смотрите". *я разбирала Димины каракули на борде, Саша что-то в телефоне читала, охуеть мы на него смотрели* В общем процедуру даже на Си он мне не рассказал. На вопросы по его же резюме парниша нихуя не ответил: ни что за опыт в команде, ни какую работу он считает интересной. Так ещё под конец попытался побычить на нас с Сашей. Парень вылетел с треском.
А вот два других остались... пока. Муж вон в режиме он-лайн практически слушает мои периодические стоны. Первый, который мне кстати вначале очень даже ничего так, по крайней мере хоть что-то смог сказать о процедуре - Евгений. Первое впечатление мягко говоря было обманчивым. Да, парень где-то как-то слышал о программирование (в резюме делфи стоит, а на деле нихера не знает). Но все равно прочитать и понять код так и не смог. Причем что делает каждая команда я ему рассказывала. Кстати, код, чтобы не быть голословной что там ерунда:
PROCEDURE MyProc(VAR inputstring : Text[1024];sep : Text[30]) : Code[20];
VAR
k : Integer;
tmps : Text[30];
str : Text[1024];
BEGIN
IF (STRLEN(inputstring) <> 0) AND ((STRLEN(sep) <> 0)) THEN
BEGIN
k := STRPOS(inputstring, sep);
IF k <> 0 THEN
BEGIN
tmps := COPYSTR(inputstring, 1, k-1);
k += STRLEN(sep);
str := DELSTR(inputstring, 1, k);
inputstring := str;
EXIT(tmps);
END
ELSE
BEGIN
tmps := inputstring;
inputstring := '';
EXIT(tmps);
END
END
ELSE EXIT ('');
END;
Потом было мега-сложное задание, там же на первой встречи, написать решение одной из задач:
1. Дан текст, в каждом третьем слове добавить приставку ark, в каждом пятом слове окончание erm.
2. Дан массив найти минимальный четный элемент.
3. Есть два языка. Написать функцию перевода слова с одного в другой.
4. Дан массив найти среднеарифметическое всех нечетных элементов.
5. Дан массив если номер элемента кратен четырем и элемент положительно число, то заменить элемент на его квадрат.
6. Дан текст, найти и вывести слова содержащие две гласные буквы подряд.
7. Дан массив, вывести количество всех нечетных элементов кратных 6. И сумму четных кратных 11.
Причем способ решения меня не интересовал от слова совсем, хоть ежиком, хоть бубликом, хоть алгоритмом, хоть на словах. Мальчик выбрал 2 задачу и ничего внятного по ней не написал. А 6 была на дом, и мне прислали по ней решение:
program text;
uses crt;
const
n=5;
var
z: array[1..n] of string;
y, q: byte;
begin
writeln('Vvedit slova');
for q := 1 to n do
readln(z[q]);
write('Slova za umovoyu: ');
for q := 1 to n do
for y := 1 to length(z[q]) do
case z[q][y] of
'a','e','i','o','u','A','E','I','O','U':
case z[q][y+1] of
'a','e','i','o','u','A','E','I','O','U':
begin
write(z[q],' ');
break;
end;
end;
end;
Readkey;
end.
Потом были ещё задачки на дом:
1. Пользователь вводит дату. Вывести количество дней от введенной пользователем даты до текущей. Вывести словом месяц введенной даты (если введено 10.1.14 то вывести январь). Вывести день недели, если это позволяет IDE.
2. Пользователь вводит текс, проверить являет ли текст палиндромом.
3. Пользователь вводит диапазон числен, найти все палиндромы на этом диапазоне.
4. Пользователь вводит квадратное уравнение a*x^2 + b*x + c = 0 решить его. Под «пользователь вводит» подразумевается что вводит коэффициенты.
5. Пользователь вводит текст осуществить кодирование текста методом подстановки (символы одного алфавита заменяются символами другого например букве A будет соответствовать L и т.п.). Зашифрованный текст вывести в текстовый файл.
6. Считать файл из п5 и расшифровать его.
И я охреневала узнавая, что при отрицательном дискриминанте квадратное уравнение решения не имеет, а вот делить на 0 можно. Кодирование подстановкой означает заменить строчные буквы на заглавные. Пользователю намного удобнее вводить в консоли путь к файлу, или просто не заморачиваясь хранить его в строго определенном месте. Что текст это n слов разделенных пробелами и только пробелами... или это было уже из другого задания? А не, все-таки здесь, на палиндром задача, потому что "А роза, упала на лапу Азора" это, дети мои, уже не палиндром в отличие от "а роза упала на лапу азора".
Из следующих заданий я уяснила много нового для себя: например, что 60 листов а4 английского текста с туевой хучей картинок за 2 недели нельзя прочитать, при уровне владения английским "средний". А разобраться и подавно. И даже перевести такие простые вещи как "quantity to receive", "quantity received" и "table relation" этого уровня никак не достаточно. И понять разницу между этими количествами в контексте создания заказа на покупку для экономиста непосильная задача. Хотя да, он же хотел на быдлокодера, зачем быдлокодеру разбираться в каких-то там количествах. Если в задаче сказано, что должна быть процедура или функция, то делать и разбираться будет только с процедурой. Функции нафиг не нужно. Да и как разбираться? Прочитал вроде работает и так сойдет.
Последнее дз вообще убило во мне веру в людей.
Задача №1.
Реализовать два алгоритма сортировки: пузырьком и выбором (
http://algolist.manual.ru/sort/) для массива состоящего из целых чисел. Реализовать следующие возможности:
1. Пользователь задает размерность массива.
2. Пользователь выбирает метод сортировки.
3. Пользователь выбирает способ задачи входного массива: ручной ввод, автоматическое заполнение случайными числами, считывать из файла, указанного пользователем.
4. Пользователь выбирает способ упорядочивания входного массива (по возрастанию или убыванию).
5. Пользователь выбирает способ отображение результата (на экран или сохранение в файл), при этом пользователь может задать разделитель между элементами массива. По умолчанию разделитель «;» (точка с запятой).
6. Выводить количество перестановок, потребовавшихся для сортировки входного массива.
Обязательное условие при решении задачи №1: каждый метод сортировки должен быть реализован как отдельная процедура (или функция). В противном случае задача будет считаться не решенной.
Задача №2.
Разработать программу для генерации текстового или XML-файла, пригодного для импорта в NAV для таблицы 18 Customer.
1. Выбрать минимально необходимый набор полей для введения в систему нового клиента.
2. Из выбранных полей отсеять те поля, у которых заполнено свойство TableRelation.
3. Размерность и типы данных должны быть сопоставимы (т.е. если поле имеет тип Text[30], то соответствующее поле в ПО должно быть String[30]).
4. При генерации текстового файла каждое поле таблицы это отдельная строка начинающаяся с номера поля в «<» «>» (пример поле Name его номер 2, строка будет такой «<2>Клиент1»)
Обязательное условие: генерация текстового файла. В противном случае, задача считается не решенной. Так же рекомендую использовать стандартные средства для генерации XML-файла, которые предоставляет среда разработки.
Задачи были с жестким дедлайном выдалась утром 13.02.14 сдать их нужно было 18.02.14 до 17:00. Первую мне благосклонно кинули 21.02.14 в 16:53 (да я, ска, задрот). Несчастная сортировка так много времени заняла. Даже несмотря на наличие кода в ссылке. Зато вторую сделал за 3 дня, 24.02.14 уже прислал результаты. Сделана на "отъебись". Подумать мозгами явно не метод мальчика, почитать что-то кроме тоже. И правильно, собственно, нахера учить паскаль если будешь кодить на наве. Вот только мальчик не учел, какое это все производит впечатление. Ну, да бох с ним, маленький ещё, пусть учится.
Второе йунное дарования зовут Арсений. Он и хуже и лучше одновременно. Программер нулевой ваще, парень не знал даже begin end. Но он по-крайней мере смог прочитать англоязычный текст и даже как-то разобрался. Правда не на 100%, но по крайней мере Тая хоть не свернула с ним разговор через 5 минут, когда он не ответил на 3 вопроса из 3х. Минут 15 мурыжила. От парня я получала истерические крики, что он не может разобраться с процедурами, а потом что таки разобрался и даже результат работы. Правда не вкуриваю как оно разобралось, если до последнего не мог понять, что при объявлении procedure myproc (a: integer; b: real); myproc (a,b) и myproc (b,a) это две большие разницы. А SQL таблицы с кириллицей в названия полей! Это вообще эпик. И у него квадратное уравнение не имеет решения при отрицательном дискриминанте, но хотя бы он проверял чтобы не было деления на ноль. Мега задачу с шифрованием парень тоже как-то примерно разумно решил, не на уровне большие\маленькие буквы, а на abcdef\qwerty. С полиндромами та же фигня раком. Про скроки последнего дз я молчу, а уж качество вообще ни в какие ворота ни на какую голову. Задача с XML так и не была сделана нормально. Выгрузка только в текст, поля в лесподрова. И эпичнейшее
procedure TForm1.Field1Change(Sender: TObject);
begin
s:=Field1.Text;
m:=length(s);
if length(s)>20 then
begin
s1:=copy(s,1,m-1);
Field1.Text:=s1;
Field1.SelStart:=m;
Field1.SelLength :=0;
end;
end;
В качестве средства ограничение кол-ва вводимых символов в элемент TEdit, при том что у бедняги эдита есть свойство MaxLength которое зомечательно ограничивает кол-во символов, которые можно ввести. Зачем он хочет на программиста?
Вообще у меня этот вопрос к обоим, если честно. Ошиблись когда выбирали? Бывает да, но тогда учитесь, делайте. Нет, сидят на жопе ровно. Я им указываю на ошибки, они молча внимают. Переделать? НИТ! Не сказали же. Не понимают, спросить чтобы разъяснили, тоже нет. Спросить про задание: как делать, что делать. Тоже не могут.
Нет, я прекрасно понимаю, что как преподаватель дерьмо ещё то. Я не умею правильно учить, особенно если людям нахуй не всралось то, чему я пытаюсь их научить. Но так и не моя обязанность заинтересовать людей в том, что они и так хотели заниматься. Заинтересовать на уровне, чтобы они сами разбирались и пытались сделать что-то. Но зачем если и так хорошо? Научат, решат, в рот положат, разжуют и все будет зашибись.
С такой сменой моя цена, как специалиста, будет стабильно высокой.