Эффективный способ постановки цели

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

Но сама постановка цели иногда едва ли не сложнее, чем даже ее достижение. Для выполнения этого важного этапа можно использовать эти правила:

1. Только определенность. Никаких общих формулировок

Избегайте формулировок «буду посещать спортзал» или «есть больше овощей». Используйте измеримые понятия — в какой день запишитесь и сколько раз будете заниматься, какую именно дневную норму съеденных овощей вы себе устанавливаете. И не употребляйте слов «никогда» и «всегда». Они чаще всего и заставляют бросить начатое.

2. Составляйте план. Не ждите  до «когда-нибудь»

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

3. Запишите и установите срок

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

4. Начните с малого

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

5. Ожидайте неудач

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

6. Фиксируйте ваше продвижение

Отслеживание прогресса позволяет определить темп выполнения плана, баланс достигнутых и не достигнутых результатов. Не держите все в памяти — записи не дадут ничего забыть и позволят систематизировать информацию.

7. Вознаграждайте себя за успех, не казните за ошибки

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

8. Ищите поддержки. Не действуйте в одиночку

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

Оригинал статьи

Фото: nicky.reynolds

50 привычек сильных людей

1. Они ищут и находят возможности там, где другие опускают руки.

2. Они выносят урок из того, что другие считают неудачей.

3. Они принимают обдуманные решения.

4. Они постоянно и сознательно возводят дорогу к своему успеху, в то время как другие ждут, когда успех найдет их сам.

5. Они боятся так же, как и все остальные, но не позволяют своему страху  управлять ими. Страх — это всего лишь опасения.

6. Они задают правильные вопросы — те, которые исчерпывают ответ.

7. Они не жалуются  — это лишняя трата сил. Все их жалобы лежат в суде.

8. Они не перекладывают вину. Они берут полную ответственность за свои действия и результаты на себя.

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

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

11. Они собирают вокруг себя единомышленников — ничто так не помогает в достижении цели, как сплоченная команда.

12. Они честолюбивы; они задают себе вопрос — а почему бы не я. Это позволяет управлять своей судьбой, а не плыть по течению.

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

14. Они не подражают, а ищут новые пути.

15. Они не откладывают, а значит — не проводят жизнь в ожидании «чего-то».

16. Они учатся всю жизнь. Любой жизненный опыт — это урок.

17. Они оптимистичны, а потому во всем видят пользу.

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

19. Они идут на риск — финансовый, эмоциональный, профессиональный, психологический.

20. Они не уходят от проблем, а поворачиваются к ним лицом.

21. Они не загадывают желания и не ждут счастливого шанса. Они строят свою судьбу.

22. Они стараются  предупредить события. Они принимают меры прежде, чем что-то успеет случиться.

23. Они умеют управлять эмоциями. Они чувствуют то же самое, что и все, но они — не рабы своих эмоций.

24. Они владеют искусством коммуникации, и постоянно его совершенствуют.

25. Они имеют определенный план жизни, и они придерживаются его. Их жизнь — не череда беспорядочных событий.

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

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

28. Они осознали свои ценности, которые дают им полноценную жизнь.

29. Они гармоничны. Они не путают понятия — успех и деньги, счастье и достижения. Многие проблемы от того, что люди не всегда понимают:  деньги — это просто инструмент, средство, но они не дают тебе счастья.

30. Они понимают важность дисциплины и самообладания.

31. Они уверены в себе.

32. Они щедры и добры. Они получают удовольствие, когда помогают другим.

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

34. Они умеют приспосабливаться, они не рабы своих привычек.

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

36. Они очень деятельны. Они всегда упорно трудятся.

37. Они эластичны. Где другой бы взорвался, он только нагреется.

38. Они открыты для людей.

39. Они не якшаются с неприятными и нечистоплотными людьми.

40. Они не тратят время и силы на вещи, которые им не нужны.

41. Они рады плыть против течения, делать что-то из ряда вон. Они не нуждаются в постоянном одобрении.

42. Они везде как в своей тарелке.

43. Они устанавливают для себя действительно высокую планку — выше, чем для всех остальных.

44. Они не тратят время на оправдание своих неудач. Они их перешагивают и идут дальше.

45. Они умеют отвлечься.

46. Их карьера  — не их личность, а  их работа. Они  — не то, что они делают.

47. Они больше интересуются эффективными путями, чем  легкими.

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

49. Они — многосторонние сложные личности.  Они понимают, что человек — это не только  физические и психологические потребности, но и эмоциональные и духовные тоже. И много работают над тем, чтобы развивать все уровни личности.

50. Они практикуют то, что они проповедуют. Они не говорят о теории, они живут в действительности.

Источник: Fifty Habits of Highly Successful People

6 советов для тех, кто решил добираться до работы на велосипеде

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

Прекратите всем нравиться и начните быть собой

«Вы мне не нравитесь».

Эти четыре слова — не самое приятное, что мы можем услышать от другого человека. Мы хотим всем нравиться — это не новость. Единственное «но» — иногда мы стараемся делать это в ущерб своим собственным потребностям, ценностям, желаниям. Ища одобрения со стороны других людей, очень скоро можно забыться.

В этом забытьи мы отчаянно стремимся быть такими как все, и совершенно забываем, кто же мы на самом деле.

Памятка 1: Не всем вы нравитесь.

Памятка 2: Это не плохо.

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

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

Подчас идти наперекор — это не плохо. Только в споре рождается истина; противостояние закаляет характер, а следовательно — формирует личность.  Живите только вашими ценностями и умейте их отстаивать.

Памятка 3: Не соглашаться с людьми можно. Даже если это любимые и уважаемые люди.

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

Памятка 5: Для огромного количества людей стремление всем нравиться  — главный барьер на пути их развития и карьерного роста.

Если вы опасаетесь, что желание всем нравится — и ваша проблема тоже, задайте себе эти вопросы:

  1. Я говорю правду, даже если это идет вразрез с чьим-то мнением?
  2. Я следую своим собственным ценностям?
  3. Я честен?
  4. Верна ли моя мотивация?
  5. Моя цель положительно влияет на жизни других?
  6. Могу ли я не согласиться с людьми, которых люблю?
  7. Я — это действительно я?

Большинство положительных ответов говорит о том, что вам не о чем беспокоиться. Перевес же в сторону отрицательных  — что вам стоит перестать стараться всем нравиться и начать быть собой.

Оригинал статьи

Фото: Saturnita

Deployment и Git

Сперва — что такое deployment?

Буквальный перевод — развертывание. Речь идет о том, чтобы заставить код, написанный разработчиком в своей песочнице, заставить работать в реальных условиях на «боевых серверах». И вот во что это выливается даже в случае с одним разработчиком:

Мой нынешний проект я разрабатываю/тестирую на своем домашнем сервере (dev-сервер, это называется). А недавно выложил на хостинг — это, так сказать, production-сервер (ну, на самом деле, это пока что разновидность тестирования). И тут появляются некоторые ньюансы: Читать

Системы контроля версий. Git.

Решил всё-таки написать некое введение в тему, чтобы бы было куда давать ссылки 😉 Примечание: информация расчитана на не очень опытных разработчиков. Профессионалам, думаю, все освещенные здесь вопросы покажутся тривиальными. Товарищам, знакомым с контролем версий, но не знакомым с Git, предлагаю первые разделы пропустить.

Что такое управление версиями и зачем оно?

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

Создаем директорию MyApplication, в ней — собственно файлы программы (скажем, *.c). Далее начинается итерационный процесс: написали некоторое количество кода → скомпилировали → запустили → обнаружили ошибки или недоработки → отредактировали исходники → … Всё просто, в целом. Но через некоторое время начинаются нетривиальные вещи. Например:

  • Последнее изменение сделало программу хуже, чем она была до того. Хочется вернуть всё «как было». Хорошо, если не успели закрыть редактор — делаем Undo. А если закрыли?

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

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

Первое, что приходит в голову для решения всех этих проблем — резервные копии. Скажем, каждую работающую версию программы упаковывать в MyApplication_v0.001.tar.gz, в случае чего — откатываться. Для подготовки к релизу — сделать копию директории MyApplication, в которой только фиксить баги, а в основной — добавлять функционал. При этом подходе через некоторое время разработки у вас появится куча *.tar.gz и не меньше копий рабочей директории. Очень быстро вы начнете путаться, где что.

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

  • Вы добавили в программу (в свою копию) возможность A, а ваш товарищ (в свою) — возможность B. Хотелось бы, чтобы у обоих была версия с обоими возможностями.

  • Вы добавили в программу некоторую функцию, ваш товарищ добавил ее же, но реализовал по-другому. Какую версию выпускать и поддерживать дальше?

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

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

Все эти проблемы призваны решить специальные программы — системы контроля версий (version control systems, vcs).

Общие свойства VCS

Если вы работаете с vcs, то у вас есть место, где хранится вся история изменений в программе — это место называется репозиторий (repository). Для внесения изменений в программу вам нужно получить копию текущей разрабатываемой версии — она называется вашей рабочей копией (working copy). Процесс получения рабочей копии традиционно называется словом «чекаут» (checkout). В случае коллективной разработки, вам придется поддерживать актуальность вашей рабочей копии (проверять, что там остальные наработали) — это обычно называется «апдейт» (update). Чтобы ваши изменения попали в репозиторий, вам нужно сделать коммит (commit) (еще это называется словом checkin). Ча
сто словом commit называют собственно сам набор изменений, зафиксированный этой операцией (более точный термин — changeset). Каждое зафиксированное изменение называют ревизией. Вы можете в любой момент откатить свою рабочую копию к любой предыдущей ревизии — это называется revert.

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

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

Автоматизация всех перечисленных операций — дело VCS.

Централизованные vs распределенные VCS

Всё множество VCS можно разделить на два класса — централизованные и распределенные.

В случае с централизованной VCS репозиторий хранится на одном сервере, и все разработчики работают с ним. Очевидное преимущество: простое управление выпуском релизов и вообще ходом развития программы, раз весь код в одном месте. Очевидный недостаток: если с сервером что-то случится, работа всех разработчиков пропадет (даже в случае регулярных бэкапов — пропадет работа всех разработчиков, скажем, за последнюю неделю). Известные примеры централизованных vcs — CVS, Subversion, Perforce.

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

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

  • Часто выполняемые операции — прежде всего, commit — происходят почти мгновенно, т.к. не требуют соединения по сети.

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

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

  • Каждый разработчик может взять («утянуть») у другого один или несколько коммитов, применив их к своему коду.

Git

Git — это одна из распределенных VCS (distributed version control system, dvcs). Другими примерами dvcs являются Mercurial, Bazaar, Monotone.

Git выделяется на их фоне главным образом из-за того, что он применяется для разработки ядра Linux (http://www.kernel.org). Собственно, именно для этого Git и разрабатывался. Ядро Linux — весьма немаленький проект, как по объему исходного кода, так и по числу участников, поэтому при его разработке большое внимание было уделено производительности и легкости слияния веток.

Далее я привожу часто используемые команды git. Я опускаю кучу тонкостей и многие возможности Git. Всё это можно посмотреть в документации (git help имя-команды, например git help commit). Здесь — скорее отправная точка, свод основных возможностей Git.

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

$ cd project
$ git init

— создаем пустой репозиторий.

$ git clone git://remote.server/repo.git

— клонируем существующий репозиторий. Кроме собственного протокола, git поддерживает http://, ssh:// и пр.

При создании репозитория в его корневой директории появляется скрытая директория .git — она содержит собственно репозиторий, т.е. историю версий итп. Все остальное содерж