Connect with us

Обучение

Разработка iOS 11 приложений на Swift

Стэнфордский университет опубликовал новую версию курса по Swift в iTunes U.

Леонид Боголюбов

Опубликовано

/

     
     

В новом курсе учтены все изменения, сделанные в iOS 11 и новой версии Swift.

Темы:

  • Инструменты и API, которые понадобятся для разработки приложений для iPhone и iPad/
  • Пользовательский интерфейс.
  • MVC-парадигма.
  • Анимации.
  • Многопоточность.
  • Работа с сетью.

Курс бесплатен и доступен для прохождения на iPhone и iPad. Язык – английский.

 

Комментарии
Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.
Advertisement
Click to comment

You must be logged in to post a comment Login

Leave a Reply

Обучение

Пять способов развиваться и качественно писать код, когда всем плевать

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

Анна Гуляева

Опубликовано

/

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

Взгляд назад

Я работала веб-разработчиком и ранее, но в начале прошлого года поняла, что недовольна своей карьерой. Я не могла понять, почему так происходит, пока не прочитала статью Three types of programmers, которая перевернула мой взгляд:

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

Может быть, дело в этом? Для меня всегда важно, чтобы моя работа выглядела хорошо, но когда я начала работать, то поняла, что клиента не волнует качество кода, если все работает, хорошо выглядит и сделано в срок. Вместо создания идеального кода я получила уныние и упадок.  Вот что часто нужно было заказчикам:

  • Если происходит сбой, его нужно исправить;
  • “Нам нужно начать промоакцию в понедельник”, поэтому работать нужно все выходные;
  • “Мы перенесли все на новый сервер, интеграция сработает, верно?” — “Дайте мне доступ, я проверю настройки.”

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

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

Когда пришло время искать работу, это заняло у меня некоторое время. Мне пришлось забыть о предыдущих проектах и более высокой зарплате. Но была уверена, что найду работу своей мечты. Мое собеседование прошло в среду вечером, и уже в четверг утром меня ждали в офисе. Мне сказали, что моих знаний “недостает совсем немного до junior-позиции”, и пригласили в проект. И тогда мои идеи начали рушиться одна за другой.

Новая работа

Оказалось, что этот проект начался ещё в 2014. В проекте использовались Rails 4.1 и Ruby 2.2.3, а также было много технических проблем, которые не были исправлены уже год. Ничего не тестировалось уже долгое время: в папке было только несколько тестов, и они явно были написаны на ранних стадиях проекта.

Помимо технических проблем, сложности были и с менеджментом. Процесс разработки был разделен на несколько команд, а дедлайны и требования игнорировали реальные возможности программистов. У разработчиков было время только на написание кода. Фазы размышления о стратегии, тестирования и устранения багов были оставлены в стороне. Более того, старые части кода не рефакторились, потому что на это не было времени. Такие проблемы распространены, и многие иногда с ними встречаются. Что тогда стоит делать разработчикам? Или…

Как справиться со всем этим?

Существует два уровня проблем: проблемы на уровне компании или проекта и персональные проблемы с уровнем навыков и организацией работы.

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

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

1. Большой незнакомый проект

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

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

2. Нехватка времени на тестирование

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

3. Недостаточная спецификация задачи

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

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

4. Ревью кода в конце задачи

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

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

5. Я не вижу для себя возможности развития

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

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

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

Я решила этот вопрос так: мне нужен ментор, чтобы улучшить эффективность работы. Ментор может взять ответственность за миссии по вашему саморазвитию, а коллеги — дать вам советы о том, как создать что-то, что будет работать.

Проблемы на уровне компании

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

Я считаю, что любая компания по разработке должна уделять внимание этим вещам:

  • регулярное развитие сотрудников;
  • создание плана профессионального развития внутри компании для сотрудника и для работодателя, который будет относиться не только к продвижению по карьерной лестнице, но и к совершенствованию навыков;
  • распределение ответственности за проблемы в проекте.

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

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

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

 

Комментарии
Продолжить чтение

Обучение

Онлайн-курсы по криптовалютам и блокчейну

В этом списке собраны курсы по основным принципам работы блокчейна и криптовалют, размещенные на проверенных платформах онлайн-образования.

Анна Гуляева

Опубликовано

/

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

Введение в блокчейн-технологии на базе платформы Ethereum

Бесплатный курс поделен на несколько разделов, посвященных как работе блокчейна в общем, так и конкретным особенностям платформы Ethereum и смарт-контрактов. На русском языке.

Decentralized Applications on Ethereum platform

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

Bitcoin and Cryptocurrency Technologies

Курс от Принстонского университета, в котором более подробно рассказывается конкретно о биткоине и его будущем, но также рассматриваются и вопросы использования криптовалюты в качестве платформы, а также правовая регуляция вопроса. Начинается 19 февраля.

Digital Transformation in Financial Services

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

IBM Blockchain Foundation for Developers

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

 

Комментарии
Продолжить чтение

Дизайн и прототипирование

Дизайн-перемена: воркшопы дизайнеров Яндекса в 10 городах страны

Теперь не слушатели поедут к преподавателям, а преподаватели к слушателям. Этой весной ведущие дизайнеры Яндекса проведут бесплатные однодневные воркшопы в десяти городах страны.

Леонид Боголюбов

Опубликовано

/

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

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

В этом году компания решила попробовать новый формат — его назвали «Дизайн-перемена». Теперь не слушатели поедут к преподавателям, а преподаватели к слушателям. Этой весной ведущие дизайнеры Яндекса проведут бесплатные однодневные воркшопы в десяти городах страны: Воронеже, Екатеринбурге, Иркутске, Казани, Калининграде, Красноярске, Новосибирске, Ростове-на-Дону, Самаре и Ярославле. Воркшопы состоятся в субботние дни в апреле-мае; точное расписание можно посмотреть на сайте «Дизайн-перемены».

Воркшоп продлится весь день. На нём дизайнеры расскажут, как выстроена в Яндексе работа над веб-сервисами и мобильными приложениями. Затем слушатели разобьются на команды и под руководством преподавателей попробуют создать дизайн продукта. Это позволит на практике понять, как устроены основные этапы работы, от формирования гипотез до создания прототипа. В конце преподаватели дадут обратную связь по каждому проекту. У участников воркшопа будет шанс получить приглашение на стажировку.

Чтобы принять участие в воркшопе, нужно зарегистрироваться и выполнить тестовое задание. Для этого потребуется опыт работы в веб-дизайне, пусть даже небольшой. Задания можно присылать до 20 марта. Претенденты, которые успешно прошли отбор, получат приглашение на воркшоп по почте.

Комментарии
Продолжить чтение

Обучение

Как изучить Deep Learning за 6 месяцев

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

Анна Гуляева

Опубликовано

/

Требования

  • вы должны быть готовы уделять обучению от 10 до 20 часов в неделю следующие полгода;
  • у вас должны быть навыки программирования, потому то вам надо будет научиться работать с Python и облачными вычислениями (опыт самого Python и облачных вычислений не нужен);
  • базовое знание математики;
  • компьютер с доступом в интернет.

Шаг 1

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

Пройдите курс Practical Deep Learning for Coders. Он займет у вас 4–6 недель. В этом курсе надо будет запускать код в облаке. В Google Colaboratory есть бесплатный доступ к GPU. Другие варианты — Paperspace, AWS, GCP, Crestle и Floydhub. Все они достаточно хороши. И не нужно создавать собственный сервер.

Шаг 2

Пора узнать некоторые основы. Изучите математический анализ и линейную алгебру. Хороший обзор матанализа представляет из себя Big Picture of Calculus. Линейную алгебру можно изучить по курсу Гилберта Стренга на OpenCourseWare от MIT. Как только вы закончите с этими двумя курсами, прочитайте Matrix Calculus for Deep Learning.

Шаг 3

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

Шаг 4

Закончите финальный проект. Здесь вы должны выбрать библиотеку глубокого обучения (Tensorflow, PyTorch, MXNet) и создать решение любой проблемы с нуля. Первые три шага должны были дать вам понимание применения глубокого обучения и твердый фундамент для дальнейшей работы. Создание проекта с нуля позволяет лучше освоить инструменты.

Шаг 5

Пройдите вторую часть курса на fast.ai — Cutting Edge Deep Learning for Coders. Этот курс затрагивает более сложные темы, и вы сможете читать последние исследования в этой области.

Каждый из шагов должен занять от 4 до 6 недель. Примерно через 26 недель у вас будет солидный фундамент в глубоком обучении, если вы будете следовать этому плану.

Глубокое обучение: что дальше?

Пройдите Стэнфордские курсы CS231n и CS224d. Это отличные курсы для изучения компьютерного зрения и обработки естественного языка, соответственно. И прочитайте книгу, которая даст вам ещё большее понимание темы.

 

Комментарии
Продолжить чтение

Постеры для разработчиков

Наша рассылка

Каждому подписавшемуся - "1 час на UI аудит": бесплатный ускоренный курс для разработчиков!

Нажимая на кнопку "Подписаться" вы даете согласие на обработку персональных данных.

Вакансии

Популярное

X
X

Спасибо!

Теперь редакторы в курсе.