Developer's notes
33 subscribers
68 photos
4 videos
74 links
Пишу обо всём и ни о чём, могу и о программировании
Download Telegram
Channel created
What is it all about?

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

Некоторое количество лет назад (но уже в этом десятилетии) довелось мне работать в одной крупной международной outsource/ outstuff компании, ныне не присутствующей на просторах нашей Родины, на должности Senior C++ developer. Заказчиком была одна немецкая automotive контора, на проекте... На проекте, с чьим описанием я всё время испытываю толику проблем, судите сами: проект под Windows c Qt\QML, не работающий ни с железом ни с сеткой, ни даже SQL-запросов там не завалялось, даже самых небольших. Что же он тогда может делать? Казалось бы, делает он какую-то полную ерунду - разбирает XML-based файлы и предоставляет удобный графический интерфейс для редактирования этого формата и всё это совершенно локально, на отдельно взятой машине пользователя... Итог: огромное количество нетривиальных интересных задача, минимум обычного формошлепства. #job #Qt #QML #C++ #automotive #c_plus_plus #interesting_tasks
Unusual project.

Some time ago (but within the current decade) it happened to me to be a senior C++ developer in a famous international corporation which doesn't work in Russia any longer. The corporation works according to oursource/outstuff business model, particularly for this project out customer was one German automotive firm. My responsibility there was an unusual project that I always struggle to describe. Let's judge yourself about that: desktop application for Windows written in C++ Qt\QML without any network interactions and even without SQL-queries I mean at all. Well, what the hell can it be then? Perhaps, it appears to be some kind of crap: the app parses XML-based files and provides handy graphical user interface to edit those files. That's all. As a result: lots of untrivial tasks had been done almost without making usual forms. #job #Qt #QML #C++ #English #automotive #c_plus_plus #interesting_tasks
Channel photo updated
Раскинем сети.

Лето. Жара. Столбик ртути в термометре на моем балконе штурмует новые высоты. Проснувшись с утра от звонка курьера в дверь (да, первый раз я почти проспал доставку продуктов), мысленно я уже загораю в близлежащем парке, физически – ещё нет.
Начал на этой недели читать книгу Таненбаума “Компьютерные сети”, 6-ое издание, много лет назад ещё будучи студентом университета читал другое издание (4ое? 3ее?), с первых страниц заметил большую разницу – что не мудрено. Было бы враньем сказать, что читаю я это для моей работы: любопытство – мой движущий мотив.
Забавно, что мало кто говорит о сетях и сопутствующих технологиях, хотя, это основа всей ИТ индустрии, и, в основном, мы получаем большие зарплаты потому, что эти сети существуют и работают лучше, чем знаменитые швейцарские часы. Мы же получаем хорошие зарплаты, разрабатывая очередной e-commerce или приложение доставки, работающие поверх плеч этих гигантов
#today #summer #weekend #flood #books #networks
🔥1
Entwine it.

It’s summertime, a heatwave has come to central Russia, and a thermometer on my balcony is rising higher and higher. Having awakened because of a ringing doorbell in the morning – that was a currier delivering my usual products – in my thoughts, I’ve been sunbathing in the nearest park since, though, in fact, it isn't so.

Several days ago, I started reading Andrew S. Tanenbaum's “Computer Networks”, 6th edition. Many years ago, being a student, I was reading another edition of the book (4th? 3rd?), and from the very beginning, I noticed a huge difference between editions, well, no surprise. The reason why I decided to read this book is just curiosity, I don’t want to confuse someone with a phrase like “As a software developer I have to read it”, because it wouldn’t be true.
Nevertheless, so few people talk about computer networks and related technologies even though it’s a foundation of the entire IT industry, and our (developers) salaries result from the fact that the networks exist and work better than the famous Swiss watch. When we develop another e-commerce or delivery app we stand on the shoulders of network technology giants.  
#today #summer #weekend #flood #books #networks
Административное (не нарушение).

Было решено разделить канал на англо- и русскоязычные версии. Весь текущий контент остается как есть, ссылка на новый канал появится на будущей недели, до тех пор буду писать на русском.
I've decided to split this channel into two, so a separate English version will appear next week. Before that, I'm going to write in Russian.
#today #administrative #Russian #English #this_channel
👍1
Пусть говорят!

Ни для кого не является секретом распространенное мнение, что программисты и прочие ИТшники разговаривать не умеют, ибо а) им не с кем, кроме компьютера б) просто не нужно. Видели бы эти люди количество совещаний в день рядового разработчика и тем более team leader’а… На самом деле, практически ни один серьезный программный продукт не может быть сделан “в одного” – подозреваю, что внутрикомандная коммуникация среди разработчиков превышает аналогичную среди других “белых воротничков”: бухгалтеров, юристов, маркетологов. Добавьте сюда популярные в индустрии разговоры о T-shaped skills, учтите, что в обычной среднестатистической продуктовой команде кроме программистов присутствуют такие роли как аналитики, тестировщики (возможно, дизайнеры и DevOps) – и, надеюсь, вы начнёте что-то подозревать.

“Им просто присылают задания, а они сидят и пишут код в соответствие с ними – просто и четко”, – могут сказать другие. И это – другое распространённое и неправильное мнение. Реальная жизнь и реальная разработка максимально далеки как от примеров Вышмата из моего предыдущего поста, так и от задач с Leetcode по следующим причинам:

а) всё, что можно сделать “по шаблону”, автоматически – уже давно так и делается, индустрия справилось с этим ещё до появления ChatGPT

б) Главная и основная загвоздка – а кто и как напишет это сверх подробное и точное ТЗ, что я только код быстро напишу по нему и сразу и все тесты пройду и в продакшн выложу?

Так же замечу, что, диаграмма классов в Confluence и документирование кода – это прекрасно, но все же не может полностью заменить созвон на тему “Что мы вообще хотим добиться и как нам не провести все выходные дебажа этот код”.

#job #IT #General #Около_ИТшное
👍1
Административное.

Хочется отметить: канал не носит сентиментально-лирического характера, технический контент скоро подвезут.
#today #administrative #this_channel
Состояние потока.

Жара только усиливается – пообещали нам +34 сегодня. Такая погода явно требует некой жест^ технического контента. И вспомнилось мне одно собеседование и тестовое задание на нём. Как я уже говорил: собеседования – это отдельный жанр (кринжа), при этом если вы разработчик и хотите получать адекватную зарплату – зло абсолютно неизбежное. Если учесть, что многие компании имеют 2ух – 6ти ступенчатые собеседования, то проведя достаточно лет в индустрии, есть шанс пройти собеседований не меньше, чем было экзаменов в Вузе.

Впрочем, в эту довольно известную и крупную российскую компанию, менявшую имя несколько раз, собеседования не шокировали числом и сложностью, всё было довольно стандартно, кроме тестового задания: созвон с HR, тестовое задание, созвон с командой, созвон с тех директор чего-то там. В итоге не взяли на последнем этапе – скорее всего нашли разработчика подешевле, никаких сильно отрицательных эмоций это не вызвало у меня, впрочем, положительных тоже. Поскольку собеседования, как известно, не покрыты NDA, ничто не сдерживает меня от опубликования тестового задания и его решения.

Тут хочу отметить, что я, не советую вам соглашаться на практику тестовых заданий, потому что: а) как правило это не оплачивается б) у нас сейчас рынок кандидата. Иначе говоря, соглашайтесь на это только если вы начинающий разработчик либо вам просто интересно посмотреть, что они там хотят. Данное тестовое задание было действительно не слишком сложным и длинным, без дальнейших променадов перейду к нему.

Нужно написать консольное приложение на C++, в нём должно быть 2 потока, один из них выводит ‘1’ в стандартный вывод, второй выводит ‘2’ в стандартный вывод, при это единицы и двойки всё время чередуются, переносов строк – нет, программа работает бесконечно. То есть вывод должен быть “12121212….”. Использовать потоки и средства синхронизации из стандартной библиотеки (std).

Ниже приведу версию без всякой синхронизации, которая, конечно, работает неправильно, а вот правильные ответы и разбор – будут в следующих постах.

#include <iostream>
#include <thread>

using namespace std;

int main()
{

auto firstRoutine = [](){
while (true){
cout << '1';
}
};

auto secondRoutine = [](){

while (true){
cout << '2';
}
};

thread th1{firstRoutine};
thread th2{secondRoutine};


th1.join();
th2.join();

return 0;
}

#job #C++ #Около_ИТшное #interview #собесед #today #memories #c_plus_plus #IT
🔥2