• Как пояснить клиенту что такое технический долг и рефакторинг?

    Fesor
    @Fesor
    Full-stack developer (Symfony, Angular)
    Клиент понимает только цифры, ему плевать на качество кода ровно до той поры, пока поддержка кода не станет ему в копеечку лишнюю. Приведите ему реальные доводы ЗА рефакторинг выражающиеся профитом в денежном эквиваленте и вуаля. Ну а если этих доводов нет - только личное мироощущение, то нужен ли рефакторинг?

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

    engine9
    @engine9
    Разрабатываю интерфейсы и трехмерные презентации.
    ✲ Нарисовать mind-map с деревом каталогов и пересортировать файлы на компе в соответствии с ней. Пожалуй лучшее что я придумал для организации файлов.

    ✲ Создать для самого себя сценарии ведения проектов и записать их куда-то. Например, при создании нового проекта все данные от заказчика складываем в каталог "задание", а все рабочие файлы держим в "SRC". И тому подобное. Главное — выработать привычку.

    ✲ Делать регулярно бэкапы, автоматизировать этот процесс.

    ✲ Автоматизировать любую рутинную деятельность, и придумывать "pipeline" для однотипной работы, говоря по-другому сделать конвейер для рутинных операций. Способ экономящий больше всего времени.
    Ответ написан
    1 комментарий
  • Какие привычки могут сэкономить время?

    Symphony
    @Symphony
    • еще можно не одеваться
    • не здороваться и не прощаться
    • Не переносить код на новую строчку, если не требуется
    • Отключить интернет
    • Не брать отпуск
    • если хочется по большому, не ходить в туалет, а в пакетик и потом выкинуть
    Ответ написан
    Комментировать
  • Какие привычки могут сэкономить время?

    GavriKos
    @GavriKos
    - не ставить знаки препинания в сообщениях (sms, соцсети, мессенджеры);
    - сокращать некоторые слова и выражения;

    Это не лайфхаки. Это неуважение к собеседнику. А экономия - копеечная в данном случае.
    Ответ написан
    Комментировать
  • Какие знания нужны для Python Junior-а?

    alxpy
    @alxpy
    Мне когда-то на подобный вопрос дали развернутый ответ (еще раз спасибо этому человеку). Я не смог найти ссылку на тот форум, но сам ответ у меня был сохранен:
    Вот список знаний, которыми должен обладать потенциальный Junior Python developer:

    Уметь самообучаться, находить нужную информацию.

    Иметь общие представления о том, что такое ОС и зачем она появилась.
    Понимать что такое процесс и как он “живёт” в ОС.
    Понимать что такое поток.
    Понимать что такое сокеты и зачем они нужны.
    Иметь представление о том, как устроен стек протоколов TCP/IP.

    Понимать что такое Linux.
    Уметь работать в sh.
    Понимать что такое виртуализация и знать какие бывают типы.
    Уметь настраивать виртуальные машины через vagrant или подобные инструменты.
    Уметь работать с GIT(создавать ветки, разрешать конфликты, etc)

    Понимать что такое ООП, на чём он основан и почему им удобно пользоваться.
    Понимать что такое императивный и декларативный стиль.
    Понимать что такое MVC
    Понимать что такое декоратор(стандартный вопрос на собеседовании) и зачем он нужен.
    Понимать что такое замыкание.
    Понимать что такое интроскпекция.
    Понимать асинхронную концепцию программирования.

    Уметь работать с БД(хотя бы CRUD, join)
    Уметь работать с nginx(хотя бы проксирование настроить)

    (можно просто написать - “прочитать Лутца”, но выделю пару вопросов)
    Знать чем отличаются new style классы от old style.
    Знать чем отличаются Python2 от Python3
    Знать чем отличается str от unicode и почему в программе нужно работать с unicode.
    Понимать алгоритм импорта модулей в Python.
    Понимать что такое генераторы и итераторы.
    Понимать что такое дескрипторы.
    Понимать что такое GIL и зачем он нужен.
    Понимать что такое WSGI и зачем он появился.

    + Уметь писать тесты, понимать зачем это нужно.
    + Практические и теоритические основы по framework.

    + выполнить норматив по ГТО
    + не пить и не курить.

    Так же можешь потренироваться по заданиям Юры Юревича.

    Заданиям Юры Юревича - тыц.
    Ответ написан
    4 комментария
  • Как не утонуть в океане информации?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    0. На хабре мир не замкнулся так же, как и на вконтакте)
    1. Когда "наткнулись" при "рабочем" поиске (когда делаете работу по текущему проекту) на интересную информацию - кладите статью (+линк) в папку рядом с проектом, применительно к которому Вы на нее набрели или отталкиваясь от темы статьи (рядом с другим проектом).
    2. По тематически-узконаправленному ("лучевому") поиску - вы найдете не более 5 статей. Это первоисточники и образовательные (примеры, производительность и т.д.) Все другие - "адский trash" и плагиат.
    3. Не ищите "от нечего делать": время потратите - толку 0.
    4. Используйте всю мощь поисковой строки гугла (символы управления приоритетами и т.д.) для отсеивания "мусорных" ссылок.
    5. На любую тему обсуждений - есть только 1 ресурс-лидер, который цитируют во всем интернете. Интересна тема - станьте участником такого сообщества и получайте уведомления по почте.
    6. Сначала планируете цель, затем идёте "в лес по грибы" за информацией. Если наоборот - всё...: Вас "засосёт" чёрная дыра технологий и читать Вы будете ВЕЧНО!!!
    7. Главное правило: статья должна прочитываться сразу или "привязываться" к вашей цели и отправляться в папку (см. п.1)
    И помните:
    тостер - для отдыха
    гугл - для работы

    UPD: Как правильно искать информацию
    Ответ написан
    14 комментариев
  • Какие знания нужны для Python Junior-а?

    dizballanze
    @dizballanze
    Software developer at Yandex
    Если хотите заниматься web-разработкой (и не только) на Python:
    • Реляционные БД (PostreSQL и/или MySQL)
    • Linux (работа в консоли, основы администрирования, nginx) - т.к. каждый разработчик должен уметь настроить рабочее окружение
    • IDE или редактор кода (Sublime Text 2, VIM, EMACS)
    • Git
    • Основы JavaScript / HTML / CSS - будет очень полезно знать
    • Django, так как один из самых популярных web-фреймворков на Python


    Прямо это все досконально не нужно знать, но будет плюсом при поиске работы. А вообще можно поискать где-то вакансии стажера, там вам помогут в обучении и при этом может даже платить будут что-то :)
    Ответ написан
    2 комментария
  • Каким образом лучше организовать API-библиотеку?

    Tiendil
    @Tiendil
    Разработчик ПО.
    KISS

    1. Если библиотека работает с телнетом, логично использовать специализированную либу.
    2. Если метод инкапсулирует все низкоуровневые операции по обработке соединения и передачи данных, то ОК.
    3. Если Вы портируете библиотеку, то правильным будет сохранить аналогичные интерфейсы. Как конкретно они будут реализованы — не важно. Для пользователей библиотеки её реализация — это чёрный ящик. Поэтому разбивайте по файлам как удобно в данной конкретной реализации. При необходимости пробросите нужные импорты куда надо (например, в __init__.py).
    4. см. пункт 3. Делайте как в аналогах, если понадобится, потом добавите обёртку с высокоуровневым интерфейсом.
    Ответ написан
    1 комментарий
  • Каким образом лучше организовать API-библиотеку?

    qmax
    @qmax
    программер
    Ну вообще всё завист от целей создания API и способов его использования.
    1. Если целевой сервис доступен по telnet, то вполне логично использовать telnetlib.
    У http куча накладных расходов и куча лишнего в запросах и ответах,
    кроме того, он всётаки больше подходит для REST-приложеинй (управление ресурсами), а у вас, судя по всему RPC-style (вызов функций).

    2. Если в куче методов необходимо выполнять одни и теже манипуляции, то вполне очевидно объединить эти манипуляции в общий метод.
    Но если ваша обёртка не обладает состоянием и не инкапсулирует никакие данные (например, параметры авторизации или доступа к сервису) - то это модуль, а не класс.
    И уж темболее не стоит использовать классы из питона 2.0

    3. зависит от того, образует ли множество методов имеющие смысл независимые подмножества. (например метод, использующие только Аккаунт)

    4. необходимость в классах Аккаунт, Сервер, Кластер, Правило зависит от того, являются ли они классами в смысле ООП: инкапсулируют ли какието данные (или просто содержат примитивы), содержат ли какие-то методы манипуляции с ними.
    Вариантов глобально два:
    1. возвращать инстансы этих классов и принимать их параметрами из методов вашей обёртки api
    т.е. сделать классы просто типизированными контейнерами данных
    2. перенести вызовы api в методы этих классов, ну и засунуть в них ссылку на порождающий их экземпляр api.
    Зависит от того, существуют ли вообще такие методы api, которые однозначно идентифицируются как методы какого-либо класса.
    Ответ написан
    4 комментария
  • Какой язык программирования/направление выбрать? Смена профессии

    bogolt
    @bogolt
    > Стоит ли изучать php/js/ruby/python или лучше java/c?
    Определитесь со сферой ваших интересов, и под нее уже выбирайте языки. Работу можно найти имхо под любой язык/технологию, поэтому в ваших интересах чтобы этот язык/технология наилучшим образом удовлетворяла вашим личным предпочтениям. Это в первую очередь скажется на эффективности вашей работы, да и больше положительных ощущений никому не мешали.
    Ответ написан
    5 комментариев