четверг, 20 января 2011 г.

Хороший программист

Не раз читал статьи в стиле "n способов стать хорошим программистом", например:

10 способов стать хорошим программистом (с) habrahabr.ru

или, знаменитые 12 шагов к лучшему коду? Joel'a

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

Вы пишите код, разрабатываете системы, которые используют другие люди? Вы хорошо зарабатываете и считаете себя хорошим специалистом? Тогда мы идем к вам :) Ниже представлен список из 10 вещей , которые хорошо было бы изучить . NET разработчику , чтобы его считали профессионалом. Оригинал статьи находится здесь

1. Модульное тестирование (Unit testing)

Весь ваш код, в идеале, дослжен быть покрыт модульными тестами, каждая сборка должна проверяться на наборе тестов, перед тем, как она попадет в руки заказчиков или клиентов. Для модульного тестирования можно использовать встроенные в Visual Studio средства, NUnit, Pex, Mole и другие инструменты. также вы должны быть знакомы с понятием TDD и как можно чаще применять этот подход на практике.

(UPD: Пример подхода TDD показан тут)

2. Системы управления версиями
Хороший специалист должен уметь работать с различными системами управления версиями: Team Foundation Server, Git, SVN, Mercurial и т.д. Это позволит следить за кодом и версиями сборок.

3. IoC (Inversion of control) контейнеры
Инверсия управлений - важный принцип объектно-ориентированного программирования, используемый для уменьшения связанности в компьютерных программах и входящий в пятерку важнейших принципов SOLID (вот еще одна ссылка, про описание SOLID принципов)
Сейчас активно развиваются ряд инcтрументов:

(UPD: Вообще, помоему здесь нет ничего сложного, чтобы понять принцип инверсии управления - достаточно посмотреть видео Управление зависимостями в коде)

4. Участие в open source проектах
Здесь, думаю, все понятно.

5. Continuous Integration
Continuous Integration - это практика разработки программного обеспечения, которая заключается в выполнении частых автоматизированных сборок проекта для скорейшего выявления и решения интеграционных проблем. В обычном проекте, где над разными частями системы разработчики трудятся независимо, стадия интеграции является заключительной. Она может непредсказуемо задержать окончание работ. Переход к непрерывной интеграции позволяет снизить трудоёмкость интеграции и сделать её более предсказуемой за счет наиболее раннего обнаружения и устранения ошибок и противоречий.

Можно использовать такие инструменты:
TeamCity,
Hudson,
CruiseControl.NET,
msbuild.

Можно почитать книгу "Continuous Integration in .NET" издательства Manning по этому вопросу.

6. Базы данных, работа з данными
В этом пункте нужно упомянуть NHibernate Object Relational Mapper, а также NoSQL базы данных - CouchDB, MongoDB или RavenDB.

7. Облачные технологии
Все будем в шоКоЛАУДе :) Изучите принципы облачных технологий, попробуйте в действии Windows Azure Platform.

8. Mono на Linux
Попробуйте запустить ваши приложения с помощью Mono на Linux, Mac OS X и других альтернативных платформах. Обратите внимание на MonoTouch, SharpDevelop.

9. Messaging architecture
Ознакомтесь с такими инструментами как NServiceBus, MassTransit или RhinoQueues, а затем AMQP и RabbitMQ

10 . Domain-Driven Design
Почитайте о Domain-Driven Design и начните использовать в своих приложениях.

11. Архитектура CQRS (кто-нибудь, объясните мне, что это такое ? :) )
Ознакомтесь с подходом к разработке корпоративных бизнес приложений - CQRS


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

Комментариев нет:

Отправить комментарий