Когда-то я читал книгу Стивена Кинга "Как писать книги". Главное, что там мне запомнилось, кроме истории как он подтерся ядовитым плющем — это мысль, что хороший писатель делает постоянно две вещи: много читает и много пишет.
Эта мысль отражает весь цикл развития любого эксперта — впитывание и генерация знаний. Для производства хорошего продукта — нужно много впитывать. Это затрагивает любую область. Поэтому, помимо базы знаний, я собираюсь изучить множество книг и других источников. Заглянуть в каждый угол. Собрать сборник лучших источников и переварить их, чтобы дать апгрейд. Собрал интересные статьи и книги по теме "Управление памятью":
Please open Telegram to view this post
VIEW IN TELEGRAM
Алгоритмические методы для нахождения решений
Бу, испугался? Это снова пост про алгоритмы. Не бойся.
В нем мы быстро перечислим методы нахождения разных решений. Для меня, как и для многих, есть только одно название решения — brute force. Но, чем глубже погружаешься в эстетику и красоту математики, тем ярче видишь другие решения и их необходимость.
Вот методы, которые помогают найти решения в жизни или коде:
- Переборные методы: туда входит метод полного перебора, а также метод ветвей и границ
- Жадные алгоритмы: Алгоритм Дейкстры и алгоритм размена монет
- Динамическое программирование: задача о рюкзаке
- Эвристические методы: Tabu Search
- Поиск в пространстве состояний: BFS и DFS
- А также: Метод разбиения и завоевания, Методы имитации, Интерактивные методы и др
Насколько это необходимо на практике мы конечно не знаем, в нашем прекрасном мире мобильных кнопок, но как минимум поверхностное знакомство мне чуть помогло писать промты для чатгпт. Но это не точно
Бу, испугался? Это снова пост про алгоритмы. Не бойся.
В нем мы быстро перечислим методы нахождения разных решений. Для меня, как и для многих, есть только одно название решения — brute force. Но, чем глубже погружаешься в эстетику и красоту математики, тем ярче видишь другие решения и их необходимость.
Вот методы, которые помогают найти решения в жизни или коде:
- Переборные методы: туда входит метод полного перебора, а также метод ветвей и границ
- Жадные алгоритмы: Алгоритм Дейкстры и алгоритм размена монет
- Динамическое программирование: задача о рюкзаке
- Эвристические методы: Tabu Search
- Поиск в пространстве состояний: BFS и DFS
- А также: Метод разбиения и завоевания, Методы имитации, Интерактивные методы и др
Насколько это необходимо на практике мы конечно не знаем, в нашем прекрасном мире мобильных кнопок, но как минимум поверхностное знакомство мне чуть помогло писать промты для чатгпт. Но это не точно
Wikipedia
Полный перебор
метод решения математических задач
Почему чем сеньорней инженер, тем сложнее ему менять работу
Прыгать по работам было выгодно в перегревшем рынке 2021-2022 года, автор книги рассказывает почему этот подход вымер сейчас.
Выписываю крутые мысли для заметок из разных источников, и конечно же не мог выписать из книги — вдохновения года🙂🙂
Этот пост продолжение прошлого поста почему сеньорам нельзя часто ходить по собесам. Украл советы сами знаете где:
🟣 сеньорам сложнее менять работу, тк помимо технических навыков нужно обладать глубоким знанием предметной области.
🟣 сеньорам сложнее менять работу, потому что нужна сеть коллег, которым ты доверяешь. Идти в место, где будут недобросовестные или некомпетентные разработчики дополнительный риск
🟣 прыгать каждые 1-2 года по работам простительно новичкам, но для сеньора это уже редфлаг
🟣 для сеньоров и ведущих нужно много времени для погружение в культуру, бизнес контекст и приоритизацию компании. Обучение этому обычно занимает не менее года.
🟣 прежде чем увольняться подумайте какие задачи вы сделали после себя. Создание платформ и запуск продукта обычно занимает годы. Одна из причин, почему менеджеры и инженеры становятся более востребованы — они видят несколько этапов роста и могу продать этот опыт в другом месте
🟣 автор поговорил с многими инженерами из бигтеха и многие из них приобрели бесценный опыт понимая как решения разыгрываются в большие временные рамки
🟣 чем сеньорнее ты, тем сложнее получить повышение.
Прыгать по работам было выгодно в перегревшем рынке 2021-2022 года, автор книги рассказывает почему этот подход вымер сейчас.
Выписываю крутые мысли для заметок из разных источников, и конечно же не мог выписать из книги — вдохновения года🙂🙂
Этот пост продолжение прошлого поста почему сеньорам нельзя часто ходить по собесам. Украл советы сами знаете где:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Ресурсы для подготовки к system design интервью
Курсы:
https://www.udemy.com/course/system-design-interview-prep/
https://www.educative.io/courses/grokking-the-system-design-interview
https://www.coursera.org/specializations/software-design-architecture
https://www.udemy.com/course/system-design-a-comprehensive-guide/
https://www.educative.io/courses/web-application-software-architecture-101
Бесплатные материалы:
https://github.com/donnemartin/system-design-primer
https://github.com/karanpratapsingh/system-design
Вопросы:
https://medium.com/double-pointer/top-25-system-design-interview-questions-c468e025b370
https://www.educative.io/courses/grokking-the-system-design-interview
По процессу прохождения:
https://habr.com/ru/company/piter/blog/650785/
https://habr.com/ru/company/getmatch/blog/516718/
https://hackernoon.com/anatomy-of-a-system-design-interview-4cb57d75a53f
Курсы:
https://www.udemy.com/course/system-design-interview-prep/
https://www.educative.io/courses/grokking-the-system-design-interview
https://www.coursera.org/specializations/software-design-architecture
https://www.udemy.com/course/system-design-a-comprehensive-guide/
https://www.educative.io/courses/web-application-software-architecture-101
Бесплатные материалы:
https://github.com/donnemartin/system-design-primer
https://github.com/karanpratapsingh/system-design
Вопросы:
https://medium.com/double-pointer/top-25-system-design-interview-questions-c468e025b370
https://www.educative.io/courses/grokking-the-system-design-interview
По процессу прохождения:
https://habr.com/ru/company/piter/blog/650785/
https://habr.com/ru/company/getmatch/blog/516718/
https://hackernoon.com/anatomy-of-a-system-design-interview-4cb57d75a53f
Udemy
Mastering the System Design Interview
Insider tips for your system design interview from a former Amazon hiring manager – plus 6 mock interviews for practice!
Вопросы для собеседований: RunLoop | ч. 1
Сразу к предыдущей статье выложил закрепляющие вопросы, которые можно смотреть отдельно и точечно готовиться к собесам.
🟣 Что такое RunLoop?
🟣 Какие основные задачи решает RunLoop?
🟣 Как работают таймеры?
🟣 Как RunLoop взаимодействует с очередями?
🟣 И другие вопросы
💎 Получить доступ по скидкам можно тут или тут
Сразу к предыдущей статье выложил закрепляющие вопросы, которые можно смотреть отдельно и точечно готовиться к собесам.
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from armansu
Плотность таланта бьет массу таланта
На днях услышал интересную “физическую” вариацию небезызвестной цитаты Стива Джобса о том, что “Игроки уровня А нанимают игроков уровня А+. B-игроки нанимают C-игроков, а C-игроки нанимают D-игроков”. Эту мысль сформулировал Дарио Амодеи (CEO, Anthropic) в интервью Лексу Фридману. Он предложил следующий мысленный эксперимент.
Представьте, что есть 2 команды. Первая команда состоит из 100 человек и все 100 являются А-игроками: невероятно умны, высокомотивированы и на 100% заряжены миссией компании. Вторая команда состоит из 1000 человек, из которых 200 супер умных и мотивированных А-игроков, а 800 - случайная выборка из BigTech. Первая команда имеет большую плотность. Вторая команда имеет большую массу. Какую команду Вы выберете?
Когда талант смотрит вокруг и видит других талантливых и увлеченных людей, это задает тон всему, что Вы делаете. Каждый доверяет компетенции друг друга. Если в Вашей команде 1000 или 10000 человек и плотность таланта упала, появляется бюрократия, стандартизация, процессы и ограничения.
На днях услышал интересную “физическую” вариацию небезызвестной цитаты Стива Джобса о том, что “Игроки уровня А нанимают игроков уровня А+. B-игроки нанимают C-игроков, а C-игроки нанимают D-игроков”. Эту мысль сформулировал Дарио Амодеи (CEO, Anthropic) в интервью Лексу Фридману. Он предложил следующий мысленный эксперимент.
Представьте, что есть 2 команды. Первая команда состоит из 100 человек и все 100 являются А-игроками: невероятно умны, высокомотивированы и на 100% заряжены миссией компании. Вторая команда состоит из 1000 человек, из которых 200 супер умных и мотивированных А-игроков, а 800 - случайная выборка из BigTech. Первая команда имеет большую плотность. Вторая команда имеет большую массу. Какую команду Вы выберете?
Когда талант смотрит вокруг и видит других талантливых и увлеченных людей, это задает тон всему, что Вы делаете. Каждый доверяет компетенции друг друга. Если в Вашей команде 1000 или 10000 человек и плотность таланта упала, появляется бюрократия, стандартизация, процессы и ограничения.
что выведтся в консоль
Anonymous Quiz
7%
object 1 -> up <link>, deinit, object 1 -> down <link>
12%
object 1 -> up <link>, object 1 -> down <link>, deinit
13%
object 1 -> up <link>, deinit, object 1 -> down nil
17%
deinit, object 1 -> up <link>, object 1 -> down <link>
14%
object 1 -> up <link>, deinit
30%
ничего
8%
Другое
Знакомьтесь, Серафима. Это уникальная история, где девушка в 22 года получила первую работу в компании мечты.
За счет таланта и упорства. Без накрутки и обмана. Контрибьютив в swift и занимаясь своими проектами. В штат, а не контракт. Занимаясь развитием SwiftUI и Swift Concurrency.
Это как пройти игру на самых сложных настройках раньше всех. Когда Сима зашла в наш чат все мужики ущемились.
В рамках строгого NDA мы обговорили:
Также я уговорил Симу создать свой телеграм канал. Потому что Готэму нужны новые герои.
Подписывайтесь, Сима обещала что будет делиться новостями и фишками про SwiftUI и другими советами прямо из кухни.
Для меня это лучшая мотивирующая история интернета и я очень рад, что именно я не только первым ей поделюсь, но и уговорю сделать свой блог для развития и мотивацию нас.
После общения с такими людьми мотивация творить разрывает.
Please open Telegram to view this post
VIEW IN TELEGRAM
Ставь перед собой амбициозные цели
Я рад, что мой канал притягивает тех людей, кого я ищу.
Талантливых, целеустремленных, честных, амбициозных. Такие создают самую плодородную почву. Самую вайбовую атмосферу. Они не привыкли обвинять кого-то в своих неудачах и делают работу до конца. Они вдохновляют, помогают, развивают. Верят в свои силы и не видят невыполнимых задач. Их самооценка всегда на высоком уровне, что не позволяет пользоваться грязными приемами. Для них слова честь и репутация не пустой звук для прогревов и манипуляций. Своим уровнем работы над собой создают новые уровни вдохновения.
Именно такой аудитории я всегда хотел. Быть частью ее. С самого детства окружать себя теми, кто своим примером вдохновит тебя. Покажет, что может пройти путь сильных и выполнить любые цели.
С каждой неделей мне пишут все больше людей с благодарностью мотивацию. Их заряжает та работа над собой и то упорство, жажда познаний, любознательность. Кто получает удовольствие от состояния потока в обучении. Они делятся материалами для канала и книги. Благодарю вас за поддержку.
Эта энергия передается и мне. Заряжает и наполняет. Создает четкие границы и фильтры куда нужно смотреть, а на что не стоит тратить время.
С каждой написаной страницей книги я понимаю, что хочу выложиться на 200% и создать не просто книгу с основами языка, а сделать масштабный путеводитель, который расскажет весь путь от начала до развития инженера.
Сделать не просто историю про iOS разработчика, который открыл документацию. А историю инженера. Историю любви и уважению к своей работе. Историю поиска смысла и целей. Истрия благодарности. История о заполнении пустоты. книга с душой, где я оставлю много труда.
Спасибо всем вам. А я буду стараться, чтобы притянуть как можно больше нужных людей в наш факультет.
Я рад, что мой канал притягивает тех людей, кого я ищу.
Талантливых, целеустремленных, честных, амбициозных. Такие создают самую плодородную почву. Самую вайбовую атмосферу. Они не привыкли обвинять кого-то в своих неудачах и делают работу до конца. Они вдохновляют, помогают, развивают. Верят в свои силы и не видят невыполнимых задач. Их самооценка всегда на высоком уровне, что не позволяет пользоваться грязными приемами. Для них слова честь и репутация не пустой звук для прогревов и манипуляций. Своим уровнем работы над собой создают новые уровни вдохновения.
Именно такой аудитории я всегда хотел. Быть частью ее. С самого детства окружать себя теми, кто своим примером вдохновит тебя. Покажет, что может пройти путь сильных и выполнить любые цели.
С каждой неделей мне пишут все больше людей с благодарностью мотивацию. Их заряжает та работа над собой и то упорство, жажда познаний, любознательность. Кто получает удовольствие от состояния потока в обучении. Они делятся материалами для канала и книги. Благодарю вас за поддержку.
Эта энергия передается и мне. Заряжает и наполняет. Создает четкие границы и фильтры куда нужно смотреть, а на что не стоит тратить время.
С каждой написаной страницей книги я понимаю, что хочу выложиться на 200% и создать не просто книгу с основами языка, а сделать масштабный путеводитель, который расскажет весь путь от начала до развития инженера.
Сделать не просто историю про iOS разработчика, который открыл документацию. А историю инженера. Историю любви и уважению к своей работе. Историю поиска смысла и целей. Истрия благодарности. История о заполнении пустоты. книга с душой, где я оставлю много труда.
Спасибо всем вам. А я буду стараться, чтобы притянуть как можно больше нужных людей в наш факультет.
Список задач с объяснением решений
Месяцев 10 назад я находил то ли ролик, то ли пост создателя Neetcode. Там он делился эффективным методом решения алгозадач. Быстрый ликбез: бывший сотрудник гугла создал свою платформу-задачник, который помогает лучше подготовиться к алгосекциями. Платформа дает самые релевантные задачи и создает роадмапы. Проект стал настолько успешным, что его доход приносит ему 1 лям $ в месяц. Очевидно, он ушел из гугла и начал развивать свой проект. Это снова отличный пример, когда страсть к чему-то и потребность рынка можно монетизировать.
Суть же в том, что его подходы помогают быстрее обучаться другим. Один из таких подходов "не запоминай код — запоминай решение". Множество разработчиков, которые ищут быстрые пути, чаще выходят на самые долгие. Они бездумно и без подготовки сразу идут в практику, прорешивают всё без структуры или еще хуже, тупо пытаются запомнить код. Это все ленивые методы, которые в итоге приводят к огромной потери времени на поздних стадиях. Как в стратегиях и мобах, где ты допустил критическую ошибку в прокачке билда, а лейтгейм уже был проигран из-за ошибки на начальных этапах. Фарм опыта чаще важнее, чем голды.
Я решил попробовать этот подход и сделал свою таблицу с решенными задачами, которые часто встречаются для мобильных разработчиков. В них я написал объяснение решений, которые как заметки, лучше отпечатываются в памяти.
Список будет обновляться.
P.S. На днях я также пересмотрел свои подходы к обучению и теперь буду делать больше упор на задачи, а не вопросы.
Месяцев 10 назад я находил то ли ролик, то ли пост создателя Neetcode. Там он делился эффективным методом решения алгозадач. Быстрый ликбез: бывший сотрудник гугла создал свою платформу-задачник, который помогает лучше подготовиться к алгосекциями. Платформа дает самые релевантные задачи и создает роадмапы. Проект стал настолько успешным, что его доход приносит ему 1 лям $ в месяц. Очевидно, он ушел из гугла и начал развивать свой проект. Это снова отличный пример, когда страсть к чему-то и потребность рынка можно монетизировать.
Суть же в том, что его подходы помогают быстрее обучаться другим. Один из таких подходов "не запоминай код — запоминай решение". Множество разработчиков, которые ищут быстрые пути, чаще выходят на самые долгие. Они бездумно и без подготовки сразу идут в практику, прорешивают всё без структуры или еще хуже, тупо пытаются запомнить код. Это все ленивые методы, которые в итоге приводят к огромной потери времени на поздних стадиях. Как в стратегиях и мобах, где ты допустил критическую ошибку в прокачке билда, а лейтгейм уже был проигран из-за ошибки на начальных этапах. Фарм опыта чаще важнее, чем голды.
Я решил попробовать этот подход и сделал свою таблицу с решенными задачами, которые часто встречаются для мобильных разработчиков. В них я написал объяснение решений, которые как заметки, лучше отпечатываются в памяти.
Список будет обновляться.
P.S. На днях я также пересмотрел свои подходы к обучению и теперь буду делать больше упор на задачи, а не вопросы.
Google Docs
Algo
Самая главная тема в управлении памятью — захват ссылок. Нет ни одной другой практической темы. Мне всегда казалось очень странным, что кандидат рассказал про всякие кишки: sidetable, unsafe pointer, WeakObject, жизненный цикл объекта. Но не смог решить простую задачу с захватом ссылок. Прошлый квиз подтвердил, что эта тема требует отдельного разбора.
Лучший формат обучения — задачи с комментариями. Теория, лекции и вопросы — это лишь дополнительная вода, которая помогает усвояемости.
Я уже писал, что собрав 400 вопросов для собеседований понял, что такой подход не поможет эффективному обучению. Зубрежка ответов на теорию — кроссворды на эрудицию. Реальный скилл куется практикой. С этого момента я фокусируюсь только на практических задачах. Где минимум теории и максимум практики.
В этой подборке с ответами и комментариями я собрал:
Please open Telegram to view this post
VIEW IN TELEGRAM
Техники устранения коллизий в разных языках программирования
Разница между кодером и инженером — в понимании "базы". Для кодера многое в работе компьютера — магия. Какие-то гномы крутят колесики в комьютере и наш код чудесным образом выполняется. В этом канале мы не приветствуем этот путь.
Computer Sience — это масштабная и глубокая наука. Она объясняет нам как работают привычные инструменты. Чем шире и глубже кругозор, тем лучше и крепче знания для решения рабочих задач. Даже вчера, созваниваясь со своим менти, он рассказал, что изучив работу управления памятью в Rust'е он лучше стал понимать как работает память в Swift'е.
Вдохновившись этим я решил собрать разные подходы решения одних проблем из разных языков. Начнем с решения коллизий:
Для нас хэштаблицы это магическое место, куда можно складывать элементы и брать оттуда за единицу времени. Есть некая хэш функция, которая вычисляет номер ячейки, но бывает так, что для нескольких разных объектов хэш функция вернет одно и тоже число. Если у вас 100 попугаев и 80 клеток, значит в какой-то клетке будет несколько попугаев. Это и называется коллизия.
🔗 Separate chaining
В данном подходе используется вместо одной ячейки используется двухсвязанный список. Соотвественно когда добавляется элемент, высчитывается номер ячейки, находится соответствующий список и добавляется в конец объект. Такой подход используется во многих языках программирования, в том числе в Java, Go, C++.
Основным минусом данного подхода является то, что если все элементы попадают в один список, то получится длинный связанный список, соотвественно результирующая сложность будет соответствующая.
Посчитает ассимптотику по времени.
🟣 Поиск элемента: в среднем O(1), в худшем случае O(N)
🟣 Добавление элемента: в среднем O(1), в худшем случае O(N)
🟣 Удаление элемента: в среднем O(1), в худшем случае O(N)
В Java есть оптимизация, если список разрастается и становится больше определенного количество элементов, то список превращается в сбалансированное двоичное дерево. Соотвественно сложность уменьшается до O(log N)
📂 Open addressing
Второй подход называется открытая адресация. Подход предполагает, что количество элементов для вставки не больше, чем количество ячеек в таблице. Если при вставке элемента оказывается, что ячейка уже занята, то смотрим на ячейку +1, если свободна то вставляем туда, иначе проверяем +2, +3 и так далее. Есть мини оптимизации, позволяющие не линейно прыгать по ячейкам в поисках свободного слота, а квадратично.
Стоит отметить, что удаление здесь это просто флажок (tombstone), означающий что ячейка свободна. Такой хак позволяет продолжать прыгать по ячейкам при поиске элемента, чтобы не остановиться раньше времени.
Сложность по времени.
🔘 Поиск элемента: в среднем O(1), в худшем случае O(N)
🔘 Добавление элемента: в среднем O(1), в худшем случае O(N)
🔘 Удаление элемента: в среднем O(1), в худшем случае O(N)
Такой подход тоже находит свою реализация в языках программирования, таких как Python, Ruby, Rust.
Разница между кодером и инженером — в понимании "базы". Для кодера многое в работе компьютера — магия. Какие-то гномы крутят колесики в комьютере и наш код чудесным образом выполняется. В этом канале мы не приветствуем этот путь.
Computer Sience — это масштабная и глубокая наука. Она объясняет нам как работают привычные инструменты. Чем шире и глубже кругозор, тем лучше и крепче знания для решения рабочих задач. Даже вчера, созваниваясь со своим менти, он рассказал, что изучив работу управления памятью в Rust'е он лучше стал понимать как работает память в Swift'е.
Вдохновившись этим я решил собрать разные подходы решения одних проблем из разных языков. Начнем с решения коллизий:
Для нас хэштаблицы это магическое место, куда можно складывать элементы и брать оттуда за единицу времени. Есть некая хэш функция, которая вычисляет номер ячейки, но бывает так, что для нескольких разных объектов хэш функция вернет одно и тоже число. Если у вас 100 попугаев и 80 клеток, значит в какой-то клетке будет несколько попугаев. Это и называется коллизия.
В данном подходе используется вместо одной ячейки используется двухсвязанный список. Соотвественно когда добавляется элемент, высчитывается номер ячейки, находится соответствующий список и добавляется в конец объект. Такой подход используется во многих языках программирования, в том числе в Java, Go, C++.
Основным минусом данного подхода является то, что если все элементы попадают в один список, то получится длинный связанный список, соотвественно результирующая сложность будет соответствующая.
Посчитает ассимптотику по времени.
В Java есть оптимизация, если список разрастается и становится больше определенного количество элементов, то список превращается в сбалансированное двоичное дерево. Соотвественно сложность уменьшается до O(log N)
Второй подход называется открытая адресация. Подход предполагает, что количество элементов для вставки не больше, чем количество ячеек в таблице. Если при вставке элемента оказывается, что ячейка уже занята, то смотрим на ячейку +1, если свободна то вставляем туда, иначе проверяем +2, +3 и так далее. Есть мини оптимизации, позволяющие не линейно прыгать по ячейкам в поисках свободного слота, а квадратично.
Стоит отметить, что удаление здесь это просто флажок (tombstone), означающий что ячейка свободна. Такой хак позволяет продолжать прыгать по ячейкам при поиске элемента, чтобы не остановиться раньше времени.
Сложность по времени.
Такой подход тоже находит свою реализация в языках программирования, таких как Python, Ruby, Rust.
Please open Telegram to view this post
VIEW IN TELEGRAM
GeeksforGeeks
Separate Chaining Collision Handling Technique in Hashing - GeeksforGeeks
Your All-in-One Learning Portal: GeeksforGeeks is a comprehensive educational platform that empowers learners across domains-spanning computer science and programming, school education, upskilling, commerce, software tools, competitive exams, and more.
Software Developer vs Software Engineer: Ты не настоящий программист
В ИТ нижние и верхние планки не стоят на месте. С каждым годом все легче войти в ит, но все сложнее взять ту самую "сеньорность". В российской ит культуре иногда много срачей кто такой настоящий инженер. Мне кажется, это из-за языкового барьера. В западной культуре уже давно определились с терминами кто есть кто.
software engineer - это тот, кто строит ресторан и описывает меню, а software developer - это те, кто готовят блюда из этого меню.
Software Engineer обычно получает больше, чем Software Developer.
В русском языке мы не предаем такого значения этой разнице. Мы все-таки чаще используем слово «разработчик» как для developer, так и для engineer, хотя можно найти вакансии «программиста-инженера» или уже грейды в групных компаний, как software engineer.
В ИТ нижние и верхние планки не стоят на месте. С каждым годом все легче войти в ит, но все сложнее взять ту самую "сеньорность". В российской ит культуре иногда много срачей кто такой настоящий инженер. Мне кажется, это из-за языкового барьера. В западной культуре уже давно определились с терминами кто есть кто.
Software Developer - если очень просто, это программист, который специализируется на одном языке программирования или фреймворке. Поэтому чаще всего к названию приписывается название технологии: SwiftUI кнопкокрас, React/TCA developer. Считается, что такой разраб, который кроме кода, может допом и тесты писать, и документацию, и проектировать решения. Но он ограничен рамками одного языка.
Software Engineer - это эксперт, который обладает набором навыком и знаний, чтобы проектировать и создавать системы на разных уровнях. Инженер также пишет код. Можно сказать, что Software Development это подветка Software Engineering. Только инженер не привязывается к одному языку программирования. В зависимости от требований он может сменить стэк.
software engineer - это тот, кто строит ресторан и описывает меню, а software developer - это те, кто готовят блюда из этого меню.
Software Engineer обычно получает больше, чем Software Developer.
В русском языке мы не предаем такого значения этой разнице. Мы все-таки чаще используем слово «разработчик» как для developer, так и для engineer, хотя можно найти вакансии «программиста-инженера» или уже грейды в групных компаний, как software engineer.
Coursera
Software Developer vs. Software Engineer: Differences + More
How do software developer duties differ from those of ...