Archive for August, 2008

Профессиональный рост

Posted in Self Development on August 24th, 2008 by Yaroslav Vorozhko – 4 Comments

Привет!

Я задался следующим вопросом, что изучать и что читать веб-разработчику с 3-4 летним стажем программирования (PHP)?

Хочу спросить Гуру, что думаете об этом списке. Правильно ли продолжать изучать скритовые языки или возможно лучше выучить Java, с C/C++ знаком хорошо.

Более конкретно.

Новый язык:

  • Python
  • ROR

Дальше, вот что я нашел в Google по книгам:)

Книги по архитектуре и проектированию:

  • Архитектура программного обеспечения на практике – Л. Басс, П. Клементс, Р. Кацман
  • Объектно-ориентированные методы. Принципы и практика, 3-е издание Иан Грэхем
  • Возможно – Объектно-ориентированный анализ и проектирование с примерами приложений, 3-е издание Гради Буч, Роберт А. Максимчук, Майкл У. Энгл, Бобби Дж. Янг, Джим Коналлен, Келли А. Хьюстон
  • Применение UML 2.0 и шаблонов проектирования, 3-е издание Крэг Ларман
  • UML. Основы Кендалл Скотт, Мартин Фаулер
  • Джон Влиссидес: Применение шаблонов проектирования.Дополнительные штрихи
  • Еще есть хороший список книг от Стива Макконнелла в Code Complete (которую я уже изучил), но он очень большой и с чего начать это еще вопрос

Книги по методикам проектирования:

  • Введение в Rational Unified Process. 2-е издание Филипп Крачтен
  • Фредерик Брукс: Мифический человеко-месяц
  • Кент Бек: Экстремальное программирование: разработка через тестирование

Взаимодействие внутри команд разработчиков:

  • Время-деньги. Создание команды разработчиков программного обеспечения Салливан
  • Панкаж Джалота – Управление программным проектом на практике
  • David Allen: Getting Things Done

Кроме developers.org.ua, phpclub.ru, php.com.ua и rsdn.ru может есть еще хорошие ресурсы, которые вы просматриваете регулярно для повышения квалификации, ну и для общения ;-) ?

Как выработать хорошую практику кодирования?

Posted in Clear Code on August 6th, 2008 by Yaroslav Vorozhko – 1 Comment

Как содействовать выработке хорошей практики кодирования?

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

Способы достижения хорошего кодирования

  • Назначить двух человек на каждую часть проекта. У вас как минимум будет гарантия, что хотя бы два человека думают, что код работает.
  • Рецензируйте каждую строку кода. В рецензировании кода участвует программист и как минимум еще два человека. Рецензирование кода улучшает его качество, так как программист знает, что как минимум 2 человека будут читать его код, а также это является страховкой на тот случай если человек покинет проект.
  • Введите процедуру подписания кода. Подписанный код показывает, что программист соотвествует уровню квалификации и только подписанный код считается завершенным.
  • Распространяйте для ознакомления хорошие примеры кода. Это предоставит ясный пример, того качества, которого вы хотите добиться. Никакое описание не передаст более точно, то что можно показать в примере кода.
  • Подчеркивайте, что код – это общее имущество. Иногда программисты считают, что код который они написали – “их” личная собственность. Хотя это результат их работы, но он является частью свего проекта и должен быть доступен любому участнику проекта.
  • Награждайте за хороший код. 1. Награда должна представлять интерес для программиста. 2. Код поощряемый таким образом должен быть исключительно хорошим.
  • Один простой стандарт. Если вы управляете программным проектом и в прошлом были программистом, то простым и эффективным способом добиться хорошего результат будет фраза: “Я должен быть в состоянии прочесть и понять любой код написанный в проекте”.

Стив Макконнелл. Совершенный код.


_gat is not defined

Posted in Tips And Tricks on August 4th, 2008 by Yaroslav Vorozhko – 3 Comments

Новая версия кода google analytics иногда вызывает такую ошибку JavaScript “_gat is not defined“, подобная ошибка была и в старой версии google analytics.

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

  • у вас не установлен старый urchin tracker код
  • у вас не включен Ad Block или похожая программа блокировки нежелательного содержания
  • у вас не установлены adware, spyware программы, которые фильтруют траффик и могут вырезать нежелательное содержимое

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

<script type="text/javascript">
if (typeof(_gat) == 'object')
{
var pageTracker (YOUR TRACKING CODE)
...
}
</script>

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

14 приемов как стать креативным разработчиком

Posted in Development, Tips And Tricks on August 1st, 2008 by Yaroslav Vorozhko – 3 Comments

Перевод статьи: “14 Ways to Learn From Creative Programmers
- LifeDev.net

Рабочий стол креативного разработчика
Фото от morganglines

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

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

И вот почему:

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

Программисты должны найти креативное решение задачи, иначе они ее не решат.

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

1. Выучите новый язык

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

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

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

3. Спрашивайте про все

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

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

4. Делайте это ради развлечения

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

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

5. Постоянно проверяйте новые идеи

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

Идеи должны быть хорошо протестированы и проверены, только последовательные проверки и тесты сделают идею по настоящему ценной. Постоянное оценивание и тестирование – это наилучший способ “проверить” свою идею.

6. Найдите страсть

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

А у вас есть страсть к вашим идеям и проектам?

7. Мастер своего дела

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

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

8. Начните думать абстрактными ассоциациями

  1. Что если использовать компьютер как телефон?
  2. Что будет, если использовать веб-сайт как Word процессор?
  3. Что если люди будут озабочены тем, что делают сейчас другие люди?

Люди стоящие за Skype, Google и Twitter схожи в одном: Они все использовали абстрактные ассоциации. Предполагая, “что-если”, и тестируя это – лучший способ начать думать по-другому, в более креативном свете.

9. Думайте о границах как о помошнике, а не как о ограничениях

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

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

10. Не начинайте руководить чем либо, пока сами это не попробуете

Ваш учитель был прав: Нет ничего хуже чем глупый вопрос. Если вы будете придерживаться #3 и даже проверите все предположения, то вы все равно не сможете быть уверенными будет это работать или нет, пока сами не попробуете. Как вы узнаете, что это не работает, пока не попробуете? Вы удивитесь! Но, даже если предложенное решение не работает, то это все равно может помочь вам найти правильное решение.

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

11. Всегда, всегда ищите более простое и более элегантное решение

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

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

12. Не бойтесь использовать чужой код

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

Воплощая новую идею в жизнь, не означает, что вы должны начинать с чистого листа. Используйте существующие идеи и создавайте на их основе что то лучшее. Иногда хорошая идея, это изменение существующей, которая уже была сделана. Gmail хороший тому пример. Они “переизобрели” email добавив удобные возможности к традиционному email.

13. Не бойтесь сотрудничать

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

14. Двигайтесь малыми шагами к большой цели

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