Русский
Русский
English
Статистика
Реклама

Профессиональное развитие

Обзор книги Do Hoang Tu Operating System from 0 to 1 как новичку сделать свою операционную систему

24.11.2020 10:23:43 | Автор: admin

Около двух лет назад в одном из блогов про IT я натолкнулся на статью, в которой автор вкратце, буквально за 15 минут рассказывал о своем опыте в любимой для многих начинающих программистов идее создания собственной операционной системы. Причем на моей памяти это вторая статья на русском языке, где автор не собирал новый дистрибутив линукс или просто строил планы о том, как создаст новую операционную систему, которой будет суждено изменить мир. По факту автор с нуля на Ассемблере и C написал довольно примитивную операционную систему, не используя ничего кроме компиляторов. В своем материале он ссылался на до тех пор неизвестную мне книгу Operating System from 0 to 1 написанную неким разработчиком по имени Do Hoang Tu.

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

Книга проводит читателя через весь процесс создания операционной системы с нуля, даже человек, не знающий принципов электроцепей и не имеющий глубоких знаний в программировании, может разобраться с темой. И это мне, как специалисту в другом направлении программирования особенно понравилось. Книга знакомит с основными терминами компьютерных систем, из чего состоит процессор, как на физическом уровне создаются логические схемы, что такое MOSFETs и цифровые логические вентили (digital logic gates). При этом автор не вдается в глубокие подробности, которые можно изучить дополнительно из другой литературы.

Затем в книге даются знания о том, как создать операционную систему для IBM x86 процессоров. При этом читателю достаточно довольно неглубоких знаний в таких языках как С/С++ и Ассемблер. Есть отдельная глава об этих языках и их совместном использовании: we will explore assembly language, and how it connects to C. Есть там и про бинарный код и инструкции Assembly.

Тема тронула меня и вызвала не только интерес, но и энтузиазм, ведь я много лет назад уже собирал Linux from scratch. А также полгода как начал на досуге учиться программировать на С, с которым мне не приходится работать, потому что я специализируюсь на веб-разработке. В процессе чтения я предпринял попытку реализовать часть знаний, полученных из книги, насколько мне позволяли свободное время и опыт в С программировании. И, Oh my Gosh, у меня получилось запустить в виртуальной машине ОС с функциональностью печатной машинки. Да-да, это немногим больше, чем Hello word, но для меня этого с лихвой хватило, чтобы вдохновиться на то, чтобы продолжать изучать эту тему.

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

Автор обзора - Максим Жук, инженер-программист практики Frontend Рексофт.

Подробнее..

Опенсорс на уровне компании первые уроки участия в сторонних проектах

10.02.2021 22:13:33 | Автор: admin
Автор: Денис Цыплаков, Solution-архитектор, DataArtАвтор: Денис Цыплаков, Solution-архитектор, DataArt

В мае 2020 года, когда процент коллег без проектов оказался неожиданно высоким, мы решили привлечь желающих к работе с опенсорс. У DataArt есть опыт создания собственных продуктов с открытым исходным кодом: IoT-платформа DeviceHive, .NET-фреймворк Atlas, игровая платформа Kiddo. Но контрибьютором сторонних проектов на уровне компании мы раньше не выступали, и сходу вкладывать в новую инициативу большие ресурсы не планировали. Скорее, хотели посмотреть, как это работает и для чего может пригодиться в будущем.

Один из авторов идеи Solution-архитектор Денис Цыплаков поделился несколькими наблюдениями, которые могут быть полезны всем, кто хотел бы создавать открытое ПО не только в свободное, но и в рабочее время, или дать такую возможность своим командам.

1. Опенсорс может работать на продвижение компании, но это дорого

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

Можно представить, как однажды предъявленный вклад в репозиторий окончательно убедит потенциального заказчика подписать с вами контракт. Но это скорее может сработать, если вы концентрируете усилия в относительно узкой технологической нише. Для тех, кто, как и DataArt, ориентируется на максимально широкий набор платформ и чаще всего имеет дело с самыми распространенными из них, вероятность воплощения такого сценария стремится к нулю.

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

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

2. Опенсорс не принесет мгновенного признания среди программистов

Двадцать лет назад, программируя на Delphi, я вполне мог за выходные написать библиотеку для логирования, которой люди действительно пользовались она была выложена на Torry. Сейчас для любых фреймворков придумано столько, что привлечь внимание можно, разве что играя на ограниченном поле самых современных и эксклюзивных технологий, угадывая тренды и привлекая значительные ресурсы вряд ли менее тысячи человеко-часов в год. Согласитесь, что сделать крутую фичу, скажем, для React за неделю силами тех, кто сейчас оказался в idle, не выйдет.

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

Собственно, у DataArt как раз есть опыт создания собственных опенсорс-продуктов, и они развивались по классическому для продуктовой разработки пути. Думаю, в конечном итоге их успех зависит от продакт оунера здесь всегда нужен харизматичный и энергичный человек, абсолютно уверенный в ценности разработки, которую он представляет. Людей, для которых не просто работа, но и сам продукт важная часть жизни в аутсорсинговых компаниях не бывает много.

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

Любой полезный вклад в открытое ПО делает мир чуть-чуть лучше, но все равно придется разобраться, для чего это нужно вашей компании. Только так можно определить направление усилий и объем ресурсов, доступный для вложения в опенсорс-проекты.

3. В крупнейших опенсорс-проектах всем хватит небольших задач

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

Допустим, в опенсорсной библиотеке при создании шаблона проекта с чем-то интерферировала и неправильно обрабатывалась одна из опций. Мы это быстро поправили силами двух джуниор-разработчиков. Событие не эпохальное, собственно, потому никто с этим вопросом раньше не разобрался. Но кому-то стало чуть комфортнее работать.

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

4. Подходящий репозиторий легко выбрать на глаз

Понятно, что отталкиваться проще всего от технологии. В нашем случае на момент высокого idle без проектов больше всего оказалось JavaScript-разработчиков, и первыми на наше предложение откликнулись двое из них. Дальше самое удобное просто взять топ-100 проектов с GitHub, отфильтровать их по нужной технологии и выбирать те, на которые отзывается ваше сердце. Внутри симпатичных вам проектов остается выбрать тикеты, отмеченные самими разработчиками как важные. И оценить хватит ли вам времени, чтобы наверняка справиться с описанной в них проблемой.

Важно, как устроен сам проект: есть ли гайдлайны и готовая подборка важнейших задач, много ли зафиксировано проблем и много ли там pull requests. Если нет, похоже, что вас в этом репозитории не особенно ждут. В принципе можно представить, что вы рассматриваете чужой огород: если грядки ровные и сорняки регулярно пропалывают, значит, помогать хозяевам будет легко и приятно. Для примера можно посмотреть на Angular.

Репозиторий Angular можно считать образцовымРепозиторий Angular можно считать образцовым

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

5. Порог для входа в опенсорс существует, но он очень низкий

Если в проекте настроен нормальный воркфлоу, участвовать в нем легко. Однако для компаний это все-таки чуть сложнее, чем для индивидуальных разработчиков. Репозитории Angular, React и другие, сопоставимые с ними по масштабу, защищены специальным юридическим фреймворком. Пока ты не пытаешься сделать pull request, ты его даже не видишь, а для участия в проекте в свободное время из дома хватит и простой галочки да, согласен. Но если ты с ним столкнулся как сотрудник компании, потребуется подпись от аналогичного лигал-фреймворка твоей компании в этом нет ничего сложного, но и тривиальной эту задачу я бы не назвал. Если ваши коллеги раньше в рабочее время опенсорс не занимались, юристы могут удивиться.

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

CLA Contributor Licence Agreement лицензионное соглашение для компаний, которые хотят участвовать в опенсорс-проектахCLA Contributor Licence Agreement лицензионное соглашение для компаний, которые хотят участвовать в опенсорс-проектах

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

Еще один момент сделать вклад в такой проект, как Angular или React, вполне реально, но надо быть готовым, что ваши изменения будут долго и дотошно обсуждать, рассматривая каждую букву (буквально). Это полезный опыт, но не каждый и не всегда к этому готов. Если хочется просто сделать что-то полезное, избежав изнурительного ревью можно взять репозиторий попроще. Например, не сам React, а какую-то популярную библиотеку компонентов к нему. Эти ребята значительно менее избалованы вниманием, и процесс протекает проще и дружелюбнее.

6. В опенсорс есть чему поучиться

Прежде всего, это касается джуниор-программистов и тех, кто очень давно работает исключительно в одном закрытом проекте. Сам процесс здесь может выглядеть достаточно поучительно, а объем и сложность всегда можно подобрать по силам конкретному человеку. Как ни странно, все, что нужно для участия умение достаточно аккуратно писать код. С остальным в хорошем проекте помогут: подскажут, например, не выпадает ли написанное вами из code style. К тому же, большие проекты делаются на основе лучших практик участвуя в них непосредственно, можно немного набить руку.

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

7. Не стоит спешить с обещаниями

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

Бывают и обратные ситуации, когда программист, отправивший pull request, может очень долго ждать пока его обновление примутБывают и обратные ситуации, когда программист, отправивший pull request, может очень долго ждать пока его обновление примут

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

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

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

Вместо заключения

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

  2. Участие в опенсорс однажды позволит ответить на вопрос о знакомстве с технологией Х: Вообще-то, я один из ее контрибьюторов.

  3. Опенсорс улучшает карму и позволяет человеку, а иногда и всей компании, приобрести новый опыт в области, где коммерческих проектов пока было мало.

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

Подробнее..

Data Analyst или Data Scientist кем бы вам хотелось быть?

10.07.2020 16:05:35 | Автор: admin
Каково находиться в каждой из этих ролей, рассказывает Matt Przybyla, автор статьи, опубликованной в блоге towardsdatascience.com. Предлагаем вам ее перевод.


Фото с сайта Unsplash. Автор: Christina @ wocintechchat.com

Мне довелось поработать и профессиональным аналитиком данных (Data Analyst), и исследователем данных (Data Scientist). Думаю, было бы полезно поделиться опытом по каждой должности, указывая ключевые различия в повседневных задачах. Я надеюсь, что моя статья поможет определиться, что подходит именно вам. А тем, кто уже работает, возможно, после прочтения захочется изменить свою должность. Некоторые начинают аналитиками данных, а затем переходят в исследователи. Не так популярен, но не менее интересен путь от исследователя на невысоких позициях до аналитика на позиции сеньора. Обе должности имеют свои особенности и требуют определенных умений, о которых необходимо знать, прежде чем сделать следующий большой шаг в профессиональном развитии.

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

Data Analyst


Если вы хотите описывать данные за прошедший период или текущий момент и презентовать стейкхолдерам ключевые результаты поиска, полную визуализацию изменений и тенденций, значит, вам подходит позиция аналитика данных. У упомянутых должностей есть общие черты, которые я описывал в другой статье, охватывающей сходства и различия между необходимыми для этих позиций навыками. Сейчас же я хочу показать, как роль аналитика данных в сравнении с ролью исследователя данных ощущается. Очень важно понимать, чего ждать этим специалистам в их повседневной работе. Аналитик будет взаимодействовать с разными людьми, много общаться и поддерживать высокий темп выполнения задач выше, чем требуется от исследователя данных.

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

Ниже вы найдете ответы на самые частые вопросы о том, с чем сталкиваются аналитики данных.

  • С кем придется работать?

В основном со стейкхолдерами компании, которые запрашивают обобщение данных, визуализацию выводов и отчеты по результатам. Общение, как правило, устное или через цифровые каналы: электронную почту, Slack и Jira. По моему опыту, вам предстоит тесно взаимодействовать с человеческой и аналитической составляющими бизнеса, а не инженерной и производственной.

  • Кому предоставляются результаты?

Вероятнее всего, вышеупомянутым стейкхолдерам. Однако если у вас есть менеджер, вы отчитываетесь перед ним, а он уже передает данные стейкхолдерам. Не исключен и вариант, когда вы собираете пул запросов, составляете по ним отчет и презентуете стейкхолдерам. Для составления отчетов у вас могут быть такие инструменты, как Tableau, Google Data Studio, Power BI и Salesforce, которые обеспечивают легкий доступ к данным, например к файлам CSV. Другие инструменты требуют больше технических усилий составления расширенных запросов к базам данных с помощью SQL.

  • Какими будут темпы работы над проектом?

Значительно выше, чем у исследователей данных. Вы можете подготавливать несколько пулов данных (запросов) или отчетов ежедневно и крупные презентации с выводами еженедельно. Поскольку вы не строите модели и не составляете прогнозы (обычно), а результаты скорее описательные и ситуативные, работа идет быстрее.

Data Scientist


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

  • С кем придется работать?

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

  • Кому предоставляются результаты?

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

  • Какими будут темпы работы над проектом?

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

Заключение



Фото с сайта Unsplash. Автор: Markus Winkler

Аналитики и исследователи данных пользуются одинаковыми инструментами, такими как Tableau, SQL и даже Python, но профессиональные задачи у них могут быть очень разными. Повседневная деятельность аналитика данных включает больше собраний и личного взаимодействия, требует прокачанных софт-скиллов и быстрого выполнения проектов. Работа исследователя предполагает более долгие процессы, общение с инженерами и менеджерами по продуктам, а также построение прогностических моделей, осмысляющих новые данные или явления в их развитии, тогда как аналитики фокусируются на прошлом и текущем состоянии.

Надеюсь, статья была интересной и полезной. Спасибо за внимание!
Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru