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

Расскажите немного о себе.

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

Что побудило вас начать программировать?

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

Что вы чувствовали, когда начинали обучение? Сталкивались ли вы с какими-либо проблемами? Было ли это легким занятием?

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

Было ли вам сложно обратиться за помощью?

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

Как долго ты занимаешься программированием? Какие мудрости вы почерпнули на этом пути?

Я начал писать код в январе 2015 года, что составляет почти целых 3 года написания кода. Это похоже на экспедицию с новыми делами.

Я узнал несколько важных вещей:

  1. Я научился подходить к проблемам с упрощенной точки зрения. Разберитесь в проблеме, если возможно, каждую ее частичку, затем разбейте ее на мельчайшие части, решите каждую, и проблем больше не будет.
  2. Лучший способ научиться программировать - это писать код, но лучший способ стать гуру - читать чужой код.
  3. Ваша способность искать и использовать ресурсы определит, насколько хорошо вы станете. Учитесь в Google, это основное требование для программирования. Я избавлю тебя от головной боли и бессонных ночей. Иногда твоя работа.
  4. Не изобретайте велосипед - для большинства проблем, с которыми вы столкнетесь, уже есть решение. Вы никому не принесете никакой пользы, начав с нуля, столкнувшись с теми же проблемами, с которыми столкнулись другие, потратите свое драгоценное время и энергию только на то, чтобы придумать нестандартное, менее эффективное и небезопасное решение. Найдите существующие решения, поймите их, а затем используйте их. Иногда это невозможно, но избегайте этого, если можете
  5. Когда вы не видите решения какой-либо проблемы, сделайте шаг назад, сделайте перерыв, поинтересуйтесь чьей-то точкой зрения на проблему, сфотографируйте проблему в целом или даже оставьте все как есть, сделайте что-нибудь еще и вернитесь к проблема позже.
  6. Работая над проектом от начала до конца, можно многому и лучше научиться. Вы узнаете так много вещей, с которыми не столкнулись бы, просто создав простую программу.

Что вы планируете делать со своими навыками разработчика?

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

Чем вы любите заниматься в свободное время?

Пишу музыку в стиле транс / EDM и путешествую по новым местам.

Расскажите нам о своем проекте, заказах кампуса. Что послужило вдохновением для этого? Как прошел процесс разработки?

Campus Orders - это платформа, которая помогает студентам делать заказы из своих отелей и доставлять их туда. Заказ кампуса был вдохновлен идеей, что уровень проникновения Интернета в Кении составляет 84%, но мы используем Интернет только для целей социальных сетей. Мне это кажется неправильным, если бы мы могли использовать Интернет для нашей повседневной деятельности, так много вещей можно было бы автоматизировать, убрать так много посредников, бюрократию и коррупцию и даже сэкономить много часов и времени. Я разработал заказы на кампус, чтобы использовать Интернет и повысить эффективность того, как люди продают и покупают вещи.

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

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

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

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

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

За это время я узнал, что нужно для создания приложения для Android с нуля до производства, работая со сторонними библиотеками (Mpesa API) и, что наиболее важно, как мыслить как владелец продукта.

Какой совет вы бы дали начинающим разработчикам?

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

Последние выводы?

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

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

Если вы хотите внести свой вклад в Campus Orders, вы можете проверить это на Github: https://goo.gl/JPnqb3

Вы скачиваете его на https://goo.gl/Rdz8b3.

Чтобы связаться с Джо, просто напишите ему письмо на адрес [email protected].