Здравствуйте, Valentin.AR, Вы писали:
VA>Имеется хороший программист. В своем деле он знает многое (it-технологии, методики и стандарты разработки) и в профессиональном плане давно уже достиг потолка.
Если все проблемы в ИТ решил бы тогда действительно потолок.
VA>Вот он задумался: какой следующий шаг по карьерной лестнице?
Создать свою религию бизнес который решает существующие проблемы лучше других или решает еще нерешенные проблемы.
VA>Т.е. чтоб не сидеть до 40 лет в программистах, ищутся позиции для продвижения по карьере, м.б. даже со сменой фирмы?
Так и сказал бы не хочу больше писать код, ...! А то потолок, потолок... Смешно!
Re[3]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, andyag, Вы писали:
A>Поэтому несмотря на всё моё к нему уважение за громадный вклад в индустрию, с моей субъективной точки зрения практичности, едва ли он дотягивает до джуниора. Больше всего смущает, что он сам не понял насколько нелепо, чудовищно и монструозно выглядит его решение на сегодняшний день.
Чет не увидел ничего громоздкого и юниорского в его коде. Да другие зафигачили в меньшем количестве строчек, за счет ширины. Он же добавил несколько строчек под константы, вместо того чтоб вширь это все росло. Ну и да, это очень по юниорски — обработать исключение, когда все другие не обрабатывали. Ну и 2 функции лисапедные написал вместо того чтоб библиотечные заюзать. Однако, в отличие от реальных юниоров, он вынес эти лисапеды в отдельные функции, и читабельность не пострадала. А реальный юниор, если какой функции нет в языке, то он будет копипастить каждый раз одно и тоже.
А тот код, которые якобы предложили другие — это просто рефакторинг оригинального кода, путем перехода на другие либы и отказ от обработки исключительных ситуаций.
Re[4]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, andyag, Вы писали:
A>>Поэтому несмотря на всё моё к нему уважение за громадный вклад в индустрию, с моей субъективной точки зрения практичности, едва ли он дотягивает до джуниора. Больше всего смущает, что он сам не понял насколько нелепо, чудовищно и монструозно выглядит его решение на сегодняшний день.
BZ>а ты сам код-то прочёл?
Ага. C++ даёт программисту полный контроль над всем происходящим. И программист будет контролировать всё происходящее, хочет он этого или нет
BZ>у страуса там аккуратно обрабатываются все ситуации,
Далеко не все. Начиная со странной идеи в запросе отправлять "Accept: */*", а потом в ответе не смотреть на "Content-Type", и заканчивая отсутствием адекватной реакции на редиректы. Но это нормально: идея-то — показать простое решение для простой задачи.
BZ>а все предложенные решения работают на авось — к примеру они не пропускают заголовк запроса.
О чём вы? Варианты как минимум на Python, Ruby, C#, Java, Scala, Groovy работают с телом ответа — заголовки игнорируют.
Re[4]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, andyag, Вы писали:
A>>Поэтому несмотря на всё моё к нему уважение за громадный вклад в индустрию, с моей субъективной точки зрения практичности, едва ли он дотягивает до джуниора. Больше всего смущает, что он сам не понял насколько нелепо, чудовищно и монструозно выглядит его решение на сегодняшний день.
E>Чет не увидел ничего громоздкого и юниорского в его коде.
Вполне допускаю.
E>Да другие зафигачили в меньшем количестве строчек, за счет ширины. Он же добавил несколько строчек под константы, вместо того чтоб вширь это все росло.
Если все те же самые стилистические требования применить к какому-нибудь Ruby, вместо 3 строчек будет, ну скажем, 10. Но точно не 70 как у Страуструпа.
E>Ну и да, это очень по юниорски — обработать исключение, когда все другие не обрабатывали. Ну и 2 функции лисапедные написал вместо того чтоб библиотечные заюзать. Однако, в отличие от реальных юниоров, он вынес эти лисапеды в отдельные функции, и читабельность не пострадала. А реальный юниор, если какой функции нет в языке, то он будет копипастить каждый раз одно и тоже.
Давайте с точки зрения практики посмотрим:
1. Добавить gzip — много кода
2. Обрабатывать редиректы — много кода
3. Указывать целевую страницу в виде URL, а не в виде "сервер + файл" — много кода
Независимо от того, насколько замечательно оформлено его решение, ошибку он совершил ещё до написания первой строчки — просто выбрал не тот инструмент.
Re[5]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, andyag, Вы писали:
A>Если все те же самые стилистические требования применить к какому-нибудь Ruby, вместо 3 строчек будет, ну скажем, 10. Но точно не 70 как у Страуструпа.
Какие 70? Вот эффективный код Страуструпа:
string server = "www.stroustrup.com";
boost::asio::ip::tcp::iostream s{ server, "http" }; // make a connection
connect_to_file(s, server, "C++.html"); // check and open file
regex pat{ R"((http://)?www([./#\+-]\w*)+)" }; // URLfor (auto x : get_strings(s, pat)) // look for URLs
cout << x << '\n';
6 строчек. Можно легко сократить до 5 без потери читаемости. Все остальное — лисапеды библиотечные.
Вот отрефакторенный код:
std::string server = "www.stroustrup.com";
std::string request = "GET http://" + server + "/C++.html HTTP/1.0\r\nHost: " + server + "\r\n\r\n";
boost::asio::ip::tcp::iostream s{server, "http"};
s << request;
std::regex pat{R"((http://)?www([./#\+-]\w*)+)"};
std::smatch m;
for (std::string l; getline(s, l);)
if (std::regex_search(l, m, pat))
std::cout << m[0] << "\n";
Особой разницы с его кодом я не наблюдаю. Де факто основной код у Страуструпа даже короче.
То мне вот эти решения в плане читаемости не нравятся ни грамма, приходится напрягаться чтоб понять как это все работает, да и отлаживать код в таком стиле удовольствие еще то.
Re[3]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, andyag, Вы писали:
A>Поэтому несмотря на всё моё к нему уважение за громадный вклад в индустрию, с моей субъективной точки зрения практичности, едва ли он дотягивает до джуниора.
До джуниора он может и не дотягивает, но у нормальных сениоров есть привычка не заниматься онанизмом с куском кода в 5 строчек. Надеюсь, у тебя со временем, эта привычка тоже появится.
<Подпись удалена модератором>
Re[6]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, elmal, Вы писали:
E>Здравствуйте, andyag, Вы писали:
A>>Если все те же самые стилистические требования применить к какому-нибудь Ruby, вместо 3 строчек будет, ну скажем, 10. Но точно не 70 как у Страуструпа. E>Какие 70? Вот эффективный код Страуструпа: E>
E> string server = "www.stroustrup.com";
E> boost::asio::ip::tcp::iostream s{ server, "http" }; // make a connection
E> connect_to_file(s, server, "C++.html"); // check and open file
E> regex pat{ R"((http://)?www([./#\+-]\w*)+)" }; // URL
E> for (auto x : get_strings(s, pat)) // look for URLs
E> cout << x << '\n';
E>
Что за нахрен "эффективный код"? connect_to_file и get_strings откуда берутся?
E>6 строчек. Можно легко сократить до 5 без потери читаемости. Все остальное — лисапеды библиотечные.
E>То мне вот эти решения в плане читаемости не нравятся ни грамма, приходится напрягаться чтоб понять как это все работает, да и отлаживать код в таком стиле удовольствие еще то.
Мне тоже не нравится, но я и не принимаю это за одну строку — реально здесь строчек 10. Но только это будет не "эффективный код", а "вообще весь". Не надо забывать, что поддерживать приходится весь написанный код, а не только "эффективный" (возьму термин на заметку — коллег троллить).
Re[5]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, andyag, Вы писали:
A>Независимо от того, насколько замечательно оформлено его решение, ошибку он совершил ещё до написания первой строчки — просто выбрал не тот инструмент.
тут разница между инструментами — в том, какой уровень абстракции поддерживает использованная библиотека
Люди, я люблю вас! Будьте бдительны!!!
Re[4]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, denisko, Вы писали:
D>Здравствуйте, andyag, Вы писали:
A>>Поэтому несмотря на всё моё к нему уважение за громадный вклад в индустрию, с моей субъективной точки зрения практичности, едва ли он дотягивает до джуниора. D>До джуниора он может и не дотягивает, но у нормальных сениоров есть привычка не заниматься онанизмом с куском кода в 5 строчек. Надеюсь, у тебя со временем, эта привычка тоже появится.
Нахамить — нахамил, а сказать-то есть что?
5 строчек кода, использующих библиотеку лучше, чем 50 строчек кода, не использующих её. В случае Страуструпа вообще — 50 строчек, использующих библиотеку.
Re[6]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, andyag, Вы писали:
A>>Независимо от того, насколько замечательно оформлено его решение, ошибку он совершил ещё до написания первой строчки — просто выбрал не тот инструмент.
BZ>тут разница между инструментами — в том, какой уровень абстракции поддерживает использованная библиотека
Есть простое правило — для решения задачи, сформулированной на уровне N, по умолчанию нужно использовать инструмент уровня N-1.
Пример 1: "скачать страничку" -> "скачать данные через HTTP", но не "сконструировать сокет, собрать запрос руками, отправить запрос, получить ответ, распарсить ответ". Хотя вроде делается одно и то же.
Пример 2: "сделать UI" -> "понаделать всякие кнопки и лэйблы", но не "проинициализировать OpenGL и отрисовать в нём прямоугольники с надписями". Хотя вроде делается одно и то же.
Здравствуйте, andyag, Вы писали:
A>5 строчек кода, использующих библиотеку лучше, чем 50 строчек кода, не использующих её. В случае Страуструпа вообще — 50 строчек, использующих библиотеку.
всё зависит от твоих целей. в данном случае страустрап вероятно и хотел продемонстрировать, что написание библиотечного кода на C++ ничуть не сложнее чем на haskell
Люди, я люблю вас! Будьте бдительны!!!
Re[2]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, bazis1, Вы писали:
B>Можно в продажники, но это довольно сильный разворот. B>Можно попробовать сделать собственный небольшой продукт, начать его продавать, научиться на ошибках, проанализировать рынок, сделать что-нибудь более успешное и постепенно вырастить свою фирму. Это адски сложно, требует некой меры везения, но я бы сказал, в разы интересней вышеперечисленного.
Ты удивишься, но оба пункта это одно и то же.
Re: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, andyag, Вы писали:
A>>5 строчек кода, использующих библиотеку лучше, чем 50 строчек кода, не использующих её. В случае Страуструпа вообще — 50 строчек, использующих библиотеку.
BZ>всё зависит от твоих целей. в данном случае страустрап вероятно и хотел продемонстрировать, что написание библиотечного кода на C++ ничуть не сложнее чем на haskell
Я не знаком с Haskell, поэтому если в вашей реплике есть какой-то подтекст, я его не уловил.
То, что Страуструп написал — это не библиотечный код, а самый обычный велосипед:
1. Код не оформлен для переиспользования — это не библиотека, а пара хелперов в прикладом коде
2. Код завязан на один очень конкретный сценарий: есть имя хоста и имя страницы в корне, никакой другой сценарий работать не будет
3. Код не покрыт тестами — не известно насколько он работает в сценариях, отличных от конкретного приложения
4. На код нет документации — ни "зачем он вообще", ни описания интерфейса
Re[7]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, andyag, Вы писали:
BZ>>всё зависит от твоих целей. в данном случае страустрап вероятно и хотел продемонстрировать, что написание библиотечного кода на C++ ничуть не сложнее чем на haskell A>То, что Страуструп написал — это не библиотечный код, а самый обычный велосипед:
извини, но ты сейчас занимаешься спором ради спора. прикладной код точно так же должен быть снабжён тестами, документирован и т.д. но суть дела совершенно не в этом. страустрап считает что продакшн код не напишешь проще чем на C++ поскольку надо обрабатывать ошибки и т.п. и в этом он не прав, поскольку делать всё это можно более кратко чем это делается на C++. но сравнивать его творение с другими примерами, где обработка ошибок уже сделана в библиотеке, не имеет смысла. если мы хотим что-то узхнать о языке, надо сранивать код реализу.щий одинаковую функциональность на базе одинаковых библиотек
как пример — его функция сбора уникальных url на хаскеле будет выглядеть как unique $ sort $ all_matches(url_regex) input_data, т.е. в разы короче
Люди, я люблю вас! Будьте бдительны!!!
Re[2]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, BulatZiganshin, Вы писали:
BZ>Здравствуйте, andyag, Вы писали:
BZ>>>всё зависит от твоих целей. в данном случае страустрап вероятно и хотел продемонстрировать, что написание библиотечного кода на C++ ничуть не сложнее чем на haskell A>>То, что Страуструп написал — это не библиотечный код, а самый обычный велосипед:
BZ>извини, но ты сейчас занимаешься спором ради спора. прикладной код точно так же должен быть снабжён тестами, документирован и т.д. но суть дела совершенно не в этом. страустрап считает что продакшн код не напишешь проще чем на C++ поскольку надо обрабатывать ошибки и т.п. и в этом он не прав, поскольку делать всё это можно более кратко чем это делается на C++. но сравнивать его творение с другими примерами, где обработка ошибок уже сделана в библиотеке, не имеет смысла. если мы хотим что-то узхнать о языке, надо сранивать код реализу.щий одинаковую функциональность на базе одинаковых библиотек
Единственная причина по которой я спорю — мне кажется, что меня неправильно поняли. Я даю оценку коду Страуструпа с точки зрения решения вполне конкретной задачи: "скачать страничку и спарсить ссылки". Конкретно для этой задачи решение реально херово-велосипедное. То что он там в своём решении обработал пару ошибок не делает это решение лучше. Если в отрыве от задачи смотреть на код — у меня никаких претензий. Код как код, даже обработка исключений есть. Обычный такой код — не лучше и не хуже какого-то любого другого, который пишет "коллега, сидящий с вами в одной комнате".
Re[2]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, vsb, Вы писали:
vsb>Архитектор. Тимлид. Менеджер. Свой бизнес в сфере IT. Обычно такие варианты продвижения в реальности происходят, в зависимости от того, насколько программист готов работать с людьми и брать на себя ответственность.
Для этого надо перестать быть программистом. Если говорить о карьере _программиста_, то вершина карьеры — это senior, наверное, типа "черный пояс программированию". У программистов есть уровень мастерства, карьера это из другой области.
Re[3]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, gandjustas, Вы писали:
G>Здравствуйте, bazis1, Вы писали:
B>>Можно в продажники, но это довольно сильный разворот. B>>Можно попробовать сделать собственный небольшой продукт, начать его продавать, научиться на ошибках, проанализировать рынок, сделать что-нибудь более успешное и постепенно вырастить свою фирму. Это адски сложно, требует некой меры везения, но я бы сказал, в разы интересней вышеперечисленного. G>Ты удивишься, но оба пункта это одно и то же.
Тут есть одно ключевое отличие — умение работать с людьми. Вот например моя главная проблема — если мне кто-то начинает рассказывать простые обывательские вещи про то, как он вчера на улице увидел своего кума в новой футболке и как эта футболка отличается по дизайну от прошлогодней, или обсуждать погоду по полчаса, мне становится банально скучно и я при всем желании не умею это скрывать. Т.е. я вежливо слушаю, улыбаюсь, даже вопросы задаю, но что-то в тоне голоса и выражении лица выдает скуку. Люди это чувствуют и считают меня высокомерным заносчивым хреном, хоть я ничего против них не имею, мне просто тупо скучно слушать то, что не содержит пищи для размышлений. А для продажника это равносильно карьерной смерти. Более того, даже в оыбчной программерской деятельности это вызывало отношение "не хочешь с нами болтать — иди в подвал баги фиксить, а мы пока решим, кто из нашей тусовки пойдет на повышение, выдав твои результаты за свои".
А вот создавать и продвигать продукты это не мешает, т.к. когда ты скачиваешь из интернетов триал программы, тебе пофиг, что думает ее создатель про последнюю игру твоей любимой футбольной команды. Тебе же продукт нужен, а не жилетка поплакаться.
Re[9]: Для “Программиста” какая следующая ступень в карьере?
Здравствуйте, andyag, Вы писали:
A>Единственная причина по которой я спорю — мне кажется, что меня неправильно поняли. Я даю оценку коду Страуструпа с точки зрения решения вполне конкретной задачи: "скачать страничку и спарсить ссылки". Конкретно для этой задачи решение реально херово-велосипедное.
потому что задача, я полагаю, состояла в том чтобы продемонстрировать как выглядит код на C++. и оценивать его с точки зрения production нет смысла. и тем более делать на основании этого кода выводы, что страустрап не умеет писать production код
A>То что он там в своём решении обработал пару ошибок не делает это решение лучше. Если в отрыве от задачи смотреть на код — у меня никаких претензий. Код как код, даже обработка исключений есть. Обычный такой код — не лучше и не хуже какого-то любого другого, который пишет "коллега, сидящий с вами в одной комнате".