• Как командно разрабатывать php проект?

    1. Как уже сказали выше - git или mercurial (на bitbucket, github или на своем сервере). С основного репозитория клонируем копии на локальные машины.
    2. dev-среда:
    2.1 dev-сервер с поддоменами для каждого разработчика
    2.2 или локальный веб-сервер (у каждого свой)
    2.3 обязательно - "предпродакшн" сервер - там будут производиться проверки перед деплоем на продакшн
    3. Ставите каждому нормальную IDE, которая умеет работать с локальными файлами и деплоить изменения на сервер (PHPStorm).
    4. Настраиваете IDE таким образом, чтобы вы работали с локальными файлами, и при этом при сохранении изменения автоматически отправлялись на ваш dev-сервер.
    5. Юнит-тесты, функциональные тесты, чтобы перед деплоем на продакшн быть уверенным в том, что кто-то из разработчиков не сломал ваш проект своими изменениями.
    6. Если есть изменения в БД - миграции
    7. На продакшене также клонируетесь от основного репозитория (для удобства обновления кода)

    Т.о. процесс разработки будет выглядеть так:
    1. Разработчик pull`ит изменения из основного репозитория
    2. Что-то меняет в коде, тестируя это на своем dev-сервере
    3. После покрытия кода новыми тестами, прогоняет их и заливает изменения в основную ветку
    4. На предпродакшене обновляемся с основной ветки. Прогоняем все тесты.
    5. Если тесты прошли - на продакшене обновляемся на тот же коммит
    Ответ написан
    Комментировать
  • Можно ли работать программистом, но не оценивать сроки?

    pletinsky
    @pletinsky
    Ваша проблема довольно типична на самом деле :) Это не какие то индивидуальные особенности, просто многие боятся самому себе в этом признаться.

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

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

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

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

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

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


    Системный подход решает многое.
    Ну и конечно классический финт ушами: закладывание рисков. Просто учтите риски, добавив время, проявив храбрость, чтобы сказать большую цифру. И если на самом деле сделаете быстрее, считайте, что учтенные вами риски попросту не случились. Это вашему руководителю будет очень понятно.
    Ответ написан
    Комментировать
  • Как командно разрабатывать php проект?

    copist
    @copist
    Empower people to give
    Инфраструктура
    * Создайте репозиторий на Bitbucket или GitHub.
    * Создайте себе локально копию репозитория и локально поднимите базу данных с одинаковой структурой
    * Если в базе требуются изменения, создавайте "миграции", которые обновят структуру данных или сами данные.
    * Свои изменения по коду, так же как и миграции, отправляйте в репозиторий

    Ещё есть возможность создания виртуальных серверов для разработки или использование online IDE. Решает кучу проблем, если интернет быстрый.
    * https://compilr.com/ Полноценная среда разработки
    * https://koding.com/ Среда разработки с предустановленным веб-сервером и элементами социальной сети
    * online-php.com Online IDE
    * https://codeanywhere.com/ Среда разработки. Код можно хранить в облаке, а также в Dropbox, Google Drive, FTP, github.
    Другие тулзы для совместной работы в online

    Промежуточные версии
    Если вы географически недалеко друг от друга, то просто периодически показывайте, что у вас получается.
    Если нет, пользуйтесь Skype Shared Screen, Join.me и другие аналогичные продукты, чтобы вместе смотреть и обсуждать голосом. А лучше TeamViewer, чтобы можно было вместе и посмотреть, и поправить.

    Обновление сервера
    Изменения на сервер устанавливайте из того-же репозитория. Не забудьте про миграции. Озаботьтесь вопросами безопасности. Хотя бы так: скрыть файлы .git
    Ответ написан
    Комментировать
  • Как командно разрабатывать php проект?

    Pjeroo
    @Pjeroo
    Веб-разработчик
    Да пребудет с вами Git и [Jira|Redmine|etc.] Откажитесь от ftp, это прошлый век и разработка таким образом чревата потерей данных - не надо так.
    Ответ написан
    Комментировать
  • Можно ли работать программистом, но не оценивать сроки?

    @proxaoc
    веб-разработчик, специалист по 1С-Битрикс
    Никогда не понимал разработчиков, которые, хотя бы примерно, не могут обозначить сроки и оценку.

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

    Не можешь в часах оценить - оценивай в днях, не можешь в днях - оценивай в неделях.

    Причем сроки и оценка - это разные вещи, чтоб все понимали. Могу оценить задачу в 8 часов, но покажу только через неделю. Это нормально.

    Если сразу не понятно как оценить - договаривайся об оплачиваемой диагностике. В той же автомастерской или конторе по починке компов так и поступают и ничего страшного.
    Ответ написан
    Комментировать
  • Можно ли работать программистом, но не оценивать сроки?

    trevoga_su
    @trevoga_su
    1. НЕ ВЕЗДЕ сроки имеют место быть. Ищите работу где сроки не требуются. Таких мест полно. Это как правило долгоиграющие проекты принадлежащие бизнесу, а не говеные веб-студии, штампующие на заказ.

    2. Сроки можно озвучивать, если вы пишите что-то, что вам понятно, задача прозрачна или типична. Есть задачи, когда о сроках не может быть и речи - например, поддержка/разбор чужого кода кода. На таких задачах сроках быть в принципе не может.

    3. Приехал я как-то с поломкой машины к мастеру-частнику. Говорю - вот то то не работает. Сроки? А он мне отвечает - а я не могу сказать. Откуда я знаю что там сломалось?
    Это я к тому, что даже такая в такой теме, как ремонт авто, где казалось бы все четко и все делается по наработанной схеме, сроки крайне не определены.

    4. Если с вас требуют сроки, значит вы что-то делаете не так или работаете где-то не там. Про сроки можно говорит в строительстве, где укладка одной плитки СТАНДАРТНО занимает Н минут и вы должны полы покрыть 30х40 метров. Тогда сроки справедливы. В IT сроков не может быть. Т.е. не должен исполнитель думать о сроках. Это не его дело. Менеджмент должен дать время с запасом и не терзать исполнителя.
    Ответ написан
    3 комментария
  • Можно ли работать программистом, но не оценивать сроки?

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

    Тебе придётся научится с этим работать и жить. Иначе никак. Это главный навык.

    С другой стороны, оценивать время которое ты затратишь на реализацию не так уж сложно:

    1. Когда спросят "сколько понадобится времени" - всегда отвечай - дайте минут 10-20 на оценку, я не могу взвесить не подсчитав.

    2. Разбей задачу которую тебе дали на под-задачи. Обычно получается - обрабока/создание какой-либой формы, добавить небольшой подсчёт и аналогичное. То есть по сути, одна задача в своём подавляющем большинстве состоих из мелких под-задач.

    3. Приувеличь сроки на ~50% (+/- 20%). Например на создание CRUD формы уйдет не больше 30 минут, а ты называй час. И остальные подзадачи в этом духе. В итоге, даже если просчитался где-то у тебя есть страховка.
    Ответ написан
    4 комментария
  • Можно ли работать программистом, но не оценивать сроки?

    zoonman
    @zoonman
    ⋆⋆⋆⋆⋆
    Есть проект, называется Fogbugz
    www.fogcreek.com/fogbugz
    В нем можно ставить задачи и указывать время их исполнения. Он собирает информацию и потом может выдавать предсказание о времени выполнения задачи.
    По опыту могу вам посоветовать, если вам кажется, что задача займет пару часов, а заказчику скажите 4 или 6. В систему вводите свое собственное время. Через пару месяцев у вас появится некоторая картина вашей скорости.
    На мой взгляд лучше срок немного увеличить, чем сделать не вовремя. Вообще это приходит с опытом, но все равно очень сложно оценивать время выполнения. Лично я стараюсь узнать о задаче максимум до начала ее выполнения или представления оценки заказчику.
    Что еще можно сказать - не переживайте сильно по поводу оценки времени. Все ошибаются, даже специалисты с 10-20 летним стажем.
    Есть еще немного другой подход - непрерывная разработка, в которой нужно ставить оценки времени, но необязательно их соблюдать. Т.е. оценку разработчик делает сам для себя. Что-то вроде личного мотиватора, не более того.
    Ответ написан
    2 комментария
  • Работа на oDesk, paypal, налоги в России?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Напомню всем, что сейчас банки сливают всю инфу в налоговую и любой налоговик может посмотреть историю ваших транзакций за любой период.
    Ответ написан
    2 комментария
  • Есть ли фриланс ближе к 30?

    @Insayt
    Сам пришел в IT из совершенно другого мира. Последние 2 года зарабатываю этим на хлеб. Скажу вам честно - первый год, как минимум, будет очень тяжко. Особенно если нет профильного образования (работодатели очень цепляются за отсутствие "корочки"). Но если есть желание - все получится. Я в свое время осознал, что мне ближе frontend и создание крутых интерфейсных решений.
    По фронтенду путь роста сейчас весьма прозрачный:
    1) HTML5 знать на зубок (семантика - важная штука :) )
    2) CSS + любой препроцессор (сейчас без них уже никуда)
    3) JS + любой фремворк/библиотека, для структуризации кода (хотя для начала достаточно прочесть пару книг по нативному JS, и взяв jQuery - поклепать своих плагинчиков. Все таки типичные веб проекты не подразумевают под собой сложной логики на клиенте)
    4) Сборщики. Есть Gulp, Grunt, Branch и еще много всяких интересных штук. Очень хорошо помогают избавится от рутины.
    5) Любовь к тому что вы делаете :)

    Мой вам совет автор - если сейчас есть пассивный заработок, и есть возможность попробовать - я бы на вашем месте попробовал. Дело такое, что жизнь у нас одна, и что бы счастливо ее прожить - надо делать то, к чему стремится ваше сердце. И если вы будете упорным на этом пути - деньги, положение и все остальное, со временем придет.
    Желаю удачи :)
    Ответ написан
    2 комментария
  • Как пояснить клиенту что такое технический долг и рефакторинг?

    @iliyaisd
    1. Если рефакторинг объективно нужен для дальнейшей жизни проекта (т.е., дальнейшая разработка крайне затруднена без рефакторинга), то это обсуждается и закладывается во время. Аргумент: я потрачу 2 дня на рефакторинг и 3 дня на разработку, вместо того чтобы потратить 7 дней на разработку и дальше ещё хуже.
    2. Если рефакторинг так критично не нужен, но жалателен, то какие-то отдельные наиболее запущенные классы правятся по ходу дела. Время разработки сильно не возрастает.
    3. Во всех остальных случаях рефакторинг сильно и не нужен.
    4. Если код с самого начала не нравится, то лучше не начинать проект.
    Ответ написан
    Комментировать
  • Как искать заказы в интернете вне бирж фриланса и знакомых?

    sayber
    @sayber
    Да, я программирую на PHP и еще асинхронно!
    К комментарию Сергей , могу посоветовать использовать linkedin.com
    Там вы сможете найти, если не заказы то команду разработчиков или вас могут найти.
    Если попасть скажем в команду разработчиков, то будите работать удаленно над проектами.
    Скажем так, если ваш уровень удовлетворяет тимлида какой то команды, то вы всегда будите при работе.

    Моя команда работает по большей часте в зарубежном сегменте, проекты обычно занимают от 3 до 12 месяцев.
    Люди из разных стран, общаемся на англорусэспанскофин =)) Все довольны и сыты.

    Если есть навыки, силы и желание - дерзайте. Ищите себе подходящее место.
    Разместив резюме на том же hh.ru , указав тип работы - удаленный, вы вероятно получите предложение, и возможно то от которого не сможете отказаться =)

    upd.
    На самом деле есть куча возможностей, что бы найти себе заказ.
    В начале нулевых, я искал заказы в каталогах (бумажных) строительных фирм.
    Смотришь объявление, сайт не указан, звонишь и пытаешься уломать на сайт. Но это было в 2000-2002 =)
    Ответ написан
    Комментировать
  • Как искать заказы в интернете вне бирж фриланса и знакомых?

    sim3x
    @sim3x
    Сначала хотел сравнить этот процесс с портовыми девками и задиранием юбок перед матросом
    просто сейчас у тебя все матросы знакомые :) и они в курсе, что у тебя "под юбкой"

    Обманывали, распадались, не могли сработаться, просто пропадали
    тут все как у всех

    Есть ли жизнь вне фриланс бирж для фрилансера?
    есть, но до него еще нужно дорасти - Артемий Татьянович живой пример тому

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

    Войди в сообщество дизанеров и связанное с вебом и стань там популярным/известным
    Ответ написан
    Комментировать
  • Как искать заказы в интернете вне бирж фриланса и знакомых?

    begemot_sun
    @begemot_sun
    Программист в душе.
    Есть. Напишите веб-студиям, заведите постоянные контакты. Профессионалы ценятся всегда.

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

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

    @urom
    Из фреймворков я бы не советовал использовать Angularjs (здесь может быть дискуссия но лучше погуглить, все слабые места уже описаны). Советую обратить внимание в сторону react.js, muut riot.js, изучить паттерны flux, mvc, mvvm. Вышеперечисленные препроцессоры css. Уметь писать таски на gulp (grunt похуже будет), знать что такое browserify и webpack. Понимать нативный js, как устроено наследование, что такое замыкание. Последнему пункту я бы уделил как можно больше времени т.к. изучить какой-либо фреймворк не составляет труда. Ну и в общем-то уметь верстать. А вообще вот если не начали еще вникать глубоко в это все, советую вам начать изучать мобильные платформы, скорее даже Android.
    Ответ написан
    Комментировать
  • Как пояснить клиенту что такое технический долг и рефакторинг?

    kumaxim
    @kumaxim
    Web-программист
    Для начала скажите зачем Вы вообще хотите рефакторить код? Моральное удовлетворение?! Технический долг?! Вам что, приятнее трахаться с функциями в коде, чем со своей девушкой?

    Работает код - не трогайте его, пусть дальше работает.

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

    Вообще где-то я видел мнение(тут на тостере или на codenet) что клиенту вообще не надо знать, что ты занимаешься рефакторингом, с чем лично я согласен. Ты показываешь ему свои почасовые отчеты, клиент видит что ты работаешь, все. Остальное уже те мелочи, от которых ты его избавляешь как специалист.
    Ответ написан
    2 комментария
  • Как пояснить клиенту что такое технический долг и рефакторинг?

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

    А если видно, что код и структура чисты, то конечно, костыли неприемлемы.

    Мотивация здесь - исключительно оплата, как и в практически любой работе. И самое лучшее решение для того, чтобы не приходилось мучиться - просто не брать на поддержку самописные проекты, которые делались не вами.
    Ответ написан
    2 комментария
  • По какой схеме работать с зарубежными заказчиками?

    kumaxim
    @kumaxim
    Web-программист
    Ваша схема:
    • Юр.лицо(создание около 10 т.р.)
    • Валютный счет(1 т.р. открытие + столько же ведение в месяц)
    • Все входящие в РФ платежи облагаются НДС 18%
    • Платите налог на прибыль компании(15-20%)
    • Платите зарплатные налоги и/или выплачивайте себе дивиденды(только 13% НДФЛ)

    Есть, конечно, еще "интересные схемы", но все они всевдозаконные, поэтому я их рассматривать не буду.

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

    Предвидя очевидную реакцию читающих это "Ого сколько налогов..." и т.п. В Россию вводить деньги себе на еду официально не выгодно. Что-то строить или на исследования(там вычет по НДС полагается и налога на прибыль не будет) - это да, но если Вы фрилансер и зарабатывайте себе на хлеб за бугром, для Вас официально работать в РФ будет проблематично...

    Выхода из этого два: хитрый и офшорный.
    Первый(хитрый) - открывайте кредитную карту в любом банке РФ. Лично мне Тинькоф больше остальных нравится. Пользуйтесь кредитным лимитом и раз в месяц скидывайте на эту кредитку Ваш заработок. У ТКС один счет, на которые поступают все платежи к зачислению на их кредитки. Здесь расчет на две вещи: общий счет где в операциях сам финмониторинг ногу сломит и банк не будет блокировать свои бабки, ему лишний геморой с возвратом своих денег нафиг не нужен, особенно сейчас(кризис как бы на дворе).
    Второй(офшорный) - регистрация компании где-нибудь в Гон-Конге и открытие банковской карты у них же в юрисдикции. Налоги платите как иностранный гражданин в Гон-Конге, но наличку с карты снимайте тут в РФ. Главное оставьте в банке уведомление о том, что едите в РФ, иначе могут после первой же операции Вашу карту залочить и будет Вам гемороя...
    Ответ написан
    7 комментариев
  • Какие актуальные технологии фронтенда?

    kumaxim
    @kumaxim
    Web-программист
    В своем последнем проекте на фронт-энде использовал Bootstrap(на LESS) + AngularJS.
    Однако, я профессионально фронт-эндом не занимаюсь, мне бэк-еэн больше удовольствия доставляет.
    Ответ написан
    Комментировать