Я заметил, что в компании, которую я консультирую, постоянно делают в коде комментарии о том, какой баг они закрывают. Я уже несколько раз их пинал - удаляйте это дерьмо из кода, не пишите комментарии типа:
#тикет 5677 пофиксил херню
Это же выглядит ужасно, противно и уже через год на большом проекте весь код превратится в сплошные комментарии. И это дерьмо я увидел в очень крупной компании. Очень, очень крупной.
Блин, ну у вас же есть TFS и в нем можно посмотреть изменения. Неужели там нельзя узнать, кто изменил строку и для какого комита? Если этого нельзя сделать, то зачем вы вообще используете TFS?
Получил недавно письмо с вопросом, использую ли я в своих проектах Dependency Injection. Обратного адреса не было, но и не нужно, ответ на такой вопрос желательно наверно дать на блоге, думаю, что это будет интересно многим.
Да, конечно же я использую Dependency Injection. Без этого писать юнит тесты проблематично, особенно, если приходится работать с Web сервисами. Как раз из-за них я впервые много лет назад я познакомился с этим патерном. Так что достаточно много приходится использовать интерфейсы и инъекцию.
Использую ли я какие-то библиотеки? Нет. Для инициализации и инъекции пишу свой код. Во-первых, это не так уж и сложно, во-вторых я люблю все же все контролировать. На мой взгляд, автоматические библиотеки не так уж и много дают преимуществ и не так уж и сильно упрощают жизнь.
Сейчас работаю на крупную американскую компанию, и во время приема на работу меня спросили, а как вы тестировали код на предыдущей работе. Я говорю, что писали unit тесты для особо важных частей сайта (хотелось бы больше писать, но не всегда времени хватало) и были тестеры, которые делали ручные тесты. В ответ на другой стороне телефонной линии я услышал смех, когда они услышали про ручные тесты.
Сейчас я уже работаю на эту компанию три месяца и у нас вообще нет тестера, который бы тестировал код и мы не сделали ни единого unit теста. Жаль, что те менеджеры, которые меня интервьюировали, уже не работают со мной и уже куда-то перешли на другой проект. Хотелось бы мне сейчас посмеяться им в ухо через трубку телефона по поводу тестирования.
Как у тебя относятся к тестам? Забивают или делают юнит тестирование / ручное тестирование?
Есть такие установщики для WAMP (Windows Apache MySQL PHP) или MAMP (Mac Apache MySQL PHP), которые запустил, и они ставят что-то на локальную систему, что упрощает конфигурирование локального Web сервера, базы данных и PHP. Создание нового сайта для локальной разработки потом сводится к простому вводу домена для сайта, выбору директории и клику мышкой. Все остальное пакет берет на себя.
Я когда-то пользовался такими вещами, сам использовал программу MAMP локально. Ну действительно, на много проще.
Только вот рабочие сервера не будут работать на подобной программе, там уже точно будут ставить LAMP с репозитория и каждый по отдельности. Если программисты могут писать локально сайт на Маке, то на реальном сервере он скорей всего будет крутится на Linux виртуалке, так уж исторически повелось. Запускать PHP сайты на Windows сервера немного расточительно. Не вижу смысла тратить так деньги.
Давно уже хотел купить себе git хранилище, и даже завёл себе аккаунт на Bitbucket, но почему-то я им так и не пользовался. Я залил туда один репозиторий с CyD Network Utilities, но так и не использовал его. Сегодня я решил этот репозиторий удалить.
Судя по ценам, Bitbucket вполне приемлем. На нем бесплатно можно получить репозиторий, которым смогут пользоваться до 5 человек. Приятно. А ведь 5-ю аккаунтами может реально пользоваться 100 человек, так что ограничений почти нет :).
На github цены на много выше, тут бесплатно можно получить только открытый репозиторий. За личные репозитории придётся хорошо платить, за пять личных хранилищ кода придётся отдавать 7 американских долларов в месяц. Дороговато.
Давно хотел попробовать парное программирование и сейчас у меня почти получилось. Я занимаюсь не парным, а удаленным программированием.
Сейчас я по контракту иногда консультирую одну компанию, и там специалистам не разрешают дать мне удалённый доступ. Вместо этого со мной делятся их рабочим столом через специальную программу (похожа на WebEx от Cisco, но это кажется от IBM), и я могу только говорить по телефону что делать.
И вот под мою диктовку программисты этой компании пишут сейчас код, выполняют команды в командной строке и кликают мышкой. Возможно при личной работе парное программирование и удобно, возможно оно и будет эффективным, когда оба программиста говорят на одном языке, но в моем случае - это неудобно.
Больше всего меня бесят различные теги или операторы в языках программирования и фреймворках, которые автоматически генерируют HTML для форм и их параметров. Я пытался использовать подобные вещи в Microsoft MVC, но не понял выводы.
Какой преимущество у Html.BeginForm по сравнению с простым классическим тегом <form>. У второго точно одно преимущество есть - нужно меньше нажатий клавиш, чтобы напечатать тэг.
Я слышал разные попытки объяснить чем генераторы лучше, но если честно, так и не увидел ничего, чтобы я сказал: "Да, это круть, это стоит гемора с необходимостью печатать больше символов".
Прочитал сегодня заметку о том, что программирование скоро исчезнет (https://medium.com/@dtauerbach/software-engineers-will-be-obsolete-by-2060-2a214fdf9737), и даже названа примерная дата – 2060-й год. Ну да, к этому году я скорей всего уже не доживу, чтобы подтвердить эту теорию, но все же, попробую ее опровергнуть уже сейчас. Рассмотрим несколько основополагающих принципов заметки.
To be sure, software is becoming more efficient, in that sophisticated frameworks have been developed so that fewer lines of source code have to be written, and advanced programming languages, compilers and interpreters have made the life of the programmer much easier than it had been in the 1980s or 1990s.
Краткий перевод: Программирование становится более эффективным и разрабатываются супер фреймворки, которые позволяют писать меньше кода, а продвинутые языки программирования, компиляторы и интерпретаторы созданы для того, чтобы сделать жизнь программистов проще, чем это было в 80-е и 90-е.
Ну да, языки программирования становятся все более мощными, код писать легче и все это зашибись, но и системы становятся более сложными. Если 30 лет назад задачи были простыми и код можно было написать на ассемблере, то сейчас это просто невозможно. Даже не смотря на то, что все упростилось, потребность в программистах только увеличилась в разы и продолжает расти.
Я использую урезанный IIS, только когда запускаю небольшие проекты или тесты. На работе чаще приходится работать с большим сайтами, которые я больше предпочитаю запускать из под полноценного IIS. Один раз сконфигурирован и можно использовать даже без запущенной Visual Studio.
Я вообще не фанат запускать Web проекты из VS. Можно сконфигурировать его так, чтобы он использовал полноценный IIS при запуске, но опять же, я не люблю запускать.
Как же тогда я отлаживаю проекты? Да очень просто, подключаюсь к процессу. В меню Debug выбираю Attach to Process, в появившемся окне процессов выбираю внизу галочку Показать процессы всех пользователей, и сортирую процессы в обратном порядке. Теперь наверху должны быть мена на w3… я точно даже не помню имя процесса, кажется w3wp. Выбираю его и все, Visual Studio уже готов к отладке.
Компания Apple пускает свой новый язык программирования Swift в мир сокрытых технологий - Open Source. И чем это теперь грозит нам, простым пользователям?
Ну на платформах Apple особо сильных изменений я не ожидаю. Да, компания сказала, что ждет с распростертыми объятиями код народа и готова принимать его, но не думаю, что будет много вклада. Тут мне кажется яблочники просто хотят повторить то, что сделала Microsoft со своим .NET.
Но вот что я жду с нетерпением, так это возможность работы со Swift в Linux и возможно даже хорошую IDE. Я в основном работаю с сервисами Linux систем, но уже давно вынашиваю планы все же приобрести дешевенький ноутбук и использовать его чисто под Linux. Раньше для этих целей я использовал RoverBook еще на процессоре Pentium M, но уже года 4 дистрибутивы не ставятся на него из-за проблем не совместимости железа. Пересобирать дистрибутивы под этот ноут что-то мне не улыбает.