Предложения для двух интересных тем для копошилки


#1

Привет всем. Хотелось чтобы кто-нибудь написал или скинул ссылки(в идеале конечно касаемо iOS разработки) по следующим двум темам

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

Это бы очень помогло начинающим iOS программистам, чтобы они не плавали на поверхности, а сразу могли сориентироваться в нужном направлении.
Заранее всем спасибо.


#2

За сколько вы сделаете работу + буфер времени на всякий случай (непредвиденные обстоятельства). Что имеется ввиду - вот дали вам задачу - написать чат. Разбиваете эту задачу на подзадачи и оцениваете времязатраты на каждую, к примеру: основной UI чата - 24 часа; реализация обмена данными с сервером - 14 часов, регистрация - 8 часов, … (довольно грубо, цифры с потолка). К каждой подзадаче добавляете буфер времени, чтобы не было такого, что вы сказали “вот интерфейс чата я напишу за 24 часа”, а у вас возникли осложнения с реализацией какого-то элемента и времени вы потратили 30 часов.

Обычно оплачивается время, а не приложение или его части. Т.е. у вас (допустим) стоит рейт 8$ в час, вы даете клиенту эстимейт времени (за какое время вы сделаете кажду часть приложения и суммарно сколько времени выйдет исходя из технического задания, изменения и/или функционал, которого изначально нету в договоре - это + к общим времязатратам). Это в идеале, конечно же.

Это как? И зачем? Грубо говоря, есть два вида приложений - клиент-серверные и клиентские. А дальше их можно разбивать хоть на сотни видов (мультимедийные, одноэкранные, читалки, бла-бла-бла…)

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

С помощью фреймворков и технологий, которые предоставляет эппл. В дополнение к ним есть некоторое количество полезных 3-d party фреймворков (не сказать что большое) типа RxSwift/ReactiveCocoa, Realm, Alamofire, Fabric … которые дают то, чего нету в стандартных библиотеках от эппл (за исключением Alamofire, это обертка над стандартным HTTP). UI фреймворки старайтесь не использовать, лучше и качественней будет написать все самому, чем использовать какой-то индусский код.
Опять же, фреймворки - это дело вкуса, все зависит исключительно от вас (вашей команды).


#3

Спасибо за ответ.

Хочется еще прояснить некоторые моменты, а именно в контексте оплачиваемого времени

А) как его учитывать (программы таймеры и еще какие утилиты. вести записи в спец тетради)

Б)что учитывать в этом времени, а что нет при выставлении этого заказчику(составление тз, продумывание экранов, логику их взаимодействия, обдумывание написание кода гугление и т.д. ) приведу пример есть задача ты сел и приблизительно накидал план действий, включил таймер и начал кодить. Случился ступор или непонимание выключил таймер сидишь тупишь ищешь решение задачи - нашел включаешь таймер продолжаешь кодить. Так это работает? Т. е. нужно четкое понимание когда включать/выключать таймер отсчета времени.

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

Г) Каким образом определить свой часовой рейт?


#4

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

гугление, как и обдумывание логики - часть вашей работы.

Работаете (думаете, гуглите, пишите код, верстаете UI) - трекаете время, сидите и читаете социалочки - не трекаете.

уже писал об этом выше

Пока не будет опыта в реализации - более-менее точное время вы не определите.

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

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