Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Регистрируясь, я даю согласие на обработку данных и условия почтовых рассылок.
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр Играйте в Длинные и Короткие нарды онлайн! Наслаждайтесь классической настольной игрой с простыми правилами и захватывающей стратегией. Бросайте кубики, перемещайте шашки и обыгрывайте своего соперника. Играйте прямо сейчас бесплатно!

Нарды Длинные и Короткие онлайн

Настольные, Для двоих, Пошаговая

Играть

Топ прошлой недели

  • Oskanov Oskanov 9 постов
  • Animalrescueed Animalrescueed 46 постов
  • AlexKud AlexKud 33 поста
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

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

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Маркет Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
0 просмотренных постов скрыто
19
Jelizaveta
2 месяца назад
Программирование на python

Освоение форматирования ячеек Excel с помощью Python: Полное руководство⁠⁠

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

  • Введение в бесплатную библиотеку Spire.XLS

  • Как форматировать ячейки в Excel с помощью Python

  • Продвинутые техники форматирования ячеек

  • Пример комплексной реализации

  • Заключение

Введение в бесплатную библиотеку Spire.XLS

Бесплатная библиотека Spire.XLS для Python — это легковесная, но мощная библиотека, которая позволяет создавать, редактировать и форматировать файлы Excel без необходимости установки Microsoft Excel.

Чтобы начать, установите библиотеку через pip:

pip install spire.xls.free

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

from spire.xls import *

workbook = Workbook()

workbook.CreateEmptySheet()

sheet = workbook.Worksheets[0]

sheet.Range["A1"].Text = "Привет, мир!"

workbook.SaveToFile("output.xlsx")

Этот код создает новый файл Excel с именем "output.xlsx" и текстом "Привет, мир!" в ячейке A1.

Как форматировать ячейки в Excel с помощью Python

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

Установка свойств шрифта

Вы можете настроить стиль шрифта, размер и цвет ячейки. Например:

font = sheet.Range["A1"].Style.Font

font.Name = "Arial"

font.Size = 12

font.IsBold = True

font.Color = Color.FromArgb(40, 255, 0, 0)

Установка выравнивания

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

cell = sheet.Range["A1"]

cell.Style.HorizontalAlignment = HorizontalAlignType.Left

cell.Style.VerticalAlignment = VerticalAlignType.Bottom

range = sheet.Range["B1:D1"]

range.Style.HorizontalAlignment = HorizontalAlignType.Center

range.Style.VerticalAlignment = VerticalAlignType.Center

Добавление границ

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

cell = sheet.Range["A1"]

border = cell.Style.Borders[BordersLineType.EdgeTop]

border.LineStyle = LineStyleType.Thick

border.Color = Color.get_Green()

border = cell.Style.Borders[BordersLineType.EdgeBottom]

border.LineStyle = LineStyleType.Double

border.Color = Color.get_Blue()

Установка цвета заливки или узора ячейки

Для улучшения визуальной ясности вы можете применить сплошные цветовые заливки или узорные фоны к ячейкам:

cell = sheet.Range["A1"]

cell.Style.Color = Color.get_LightBlue()

cell = sheet.Range["A2"]

cell.Style.FillPattern = ExcelPatternType.Percent125Gray

Объединение или разъединение ячеек

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

sheet.Range["A1:C1"].Merge()

sheet.Range["B1:C1"].UnMerge()

Применение форматов чисел

Excel предлагает различные форматы чисел, такие как валюта, дата и процент. Вот как применить форматы чисел:

sheet.Range["A1"].NumberValue = 1234.567

sheet.Range["A1"].NumberFormat = "0.00"

sheet.Range["A2"].NumberValue = 0.25

sheet.Range["A2"].NumberFormat = "0%"

sheet.Range["A3"].NumberValue = 43831

sheet.Range["A3"].NumberFormat = "yyyy-mm-dd"

sheet.Range["A4"].NumberValue = 1234.567

sheet.Range["A4"].NumberFormat = "$#,##0.00"

Продвинутые техники форматирования ячеек

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

Условное форматирование

Условное форматирование — это мощный инструмент, который выделяет тенденции или аномалии в ваших данных. Вот пример:

range = sheet.Range["A1:A10"]

format = range.ConditionalFormats.AddCondition()

format.FormatType = ConditionalFormatType.CellValue

format.Operator = ComparisonOperatorType.Greater

format.FirstFormula = "100"

format.BackColor = Color.get_Green()

format.IsBold = True

Форматирование ячеек с помощью пользовательского стиля

Создание и применение пользовательских стилей ячеек может помочь поддерживать согласованность на протяжении всего вашего рабочего файла. Вот как определить пользовательский стиль:

style = workbook.Styles.Add("customStyle")

style.Font.IsBold = True

style.Font.Size = 12

style.Font.Color = Color.FromArgb(20, 0, 0, 255)

style.BackgroundColor = Color.FromArgb(20, 255, 255, 0)

style.Borders.All = LineStyleType.Dashed

style.Borders.Color = Color.get_Purple()

sheet.Range["A2:F2"].Style = style

Копирование формата ячейки

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

style = sheet.Range["A1"].Style

sheet.Range["A2:F5"].Style = style

Пример комплексной реализации

Теперь давайте объединим все в комплексном примере, который обобщает все обсуждаемые техники:

from spire.xls import *

from spire.xls.common import *

workbook = Workbook()

worksheet = workbook.Worksheets[0]

worksheet.Name = "Пример комплексного стиля"

# Создание строки заголовка

title = worksheet.Range["A1:E1"]

title.Merge()

title.Text = "Информация о сотрудниках"

title.Style.Font.FontName = "Arial"

title.Style.Font.Size = 16

title.Style.Font.Color = Color.get_White()

title.Style.Color = Color.get_DarkBlue()

title.Style.HorizontalAlignment = HorizontalAlignType.Center

title.Style.VerticalAlignment = VerticalAlignType.Center

title.RowHeight = 30

# Установка заголовков

headers = ["ID", "Имя", "Отдел", "Дата приема", "Зарплата"]

for i, header in enumerate(headers):

cell = worksheet.Range[2, i + 1]

cell.Text = header

cell.Style.Font.IsBold = True

cell.Style.Color = Color.get_LightGray()

cell.Style.Borders[BordersLineType.EdgeBottom].LineStyle = LineStyleType.Medium

cell.Style.Borders[BordersLineType.EdgeBottom].Color = Color.get_DarkBlue()

# Заполнение данных

data = [

[1, "Чжан Сан", "Технический отдел", "2020-05-15", 15000],

[2, "Ли Си", "Маркетинговый отдел", "2019-08-22", 12000],

[3, "Ван У", "Отдел кадров", "2021-03-10", 13500],

[4, "Жао Лю", "Финансовый отдел", "2018-11-05", 16000]

]

for r, row in enumerate(data):

for c, value in enumerate(row):

cell = worksheet.Range[r + 3, c + 1]

if c == 3:  # Дата

cell.DateTimeValue = DateTime.Parse(value)

cell.NumberFormat = "yyyy-mm-dd"

elif c == 4:  # Зарплата

cell.NumberValue = value

cell.NumberFormat = "$#,##0.00"

else:

cell.Text = str(value)


# Установка чередующихся цветов строк

if r % 2 == 0:

cell.Style.Color = Color.get_LightYellow()

else:

cell.Style.Color = Color.get_LightCyan()

# Установка границ

worksheet.Range["A2:E6"].BorderAround(LineStyleType.Medium, Color.get_Black())

worksheet.Range["A2:E6"].BorderInside(LineStyleType.Thin, Color.get_Gray())

# Авто подгонка ширины столбцов

for i in range(1, 6):

worksheet.AutoFitColumn(i)

# Добавление условного форматирования - выделение ячеек с зарплатой больше 14000

format = worksheet.Range["E3:E6"].ConditionalFormats.AddCondition()

format.FormatType = ConditionalFormatType.CellValue

format.Operator = ComparisonOperatorType.Greater

format.FirstFormula = "14000"

format.FontColor = Color.get_Red()

format.IsBold = True

# Получение выделенного диапазона

locatedRange = worksheet.AllocatedRange

# Проход по строкам

for rowNum in range(1, locatedRange.RowCount):

# Выравнивание текста по центру

locatedRange.Rows[rowNum].HorizontalAlignment = HorizontalAlignType.Center

locatedRange.Rows[rowNum].VerticalAlignment = VerticalAlignType.Center

# Установка высоты строки

locatedRange.Rows[rowNum].RowHeight = 20

# Проход по столбцам

for columnNum in range(0, locatedRange.ColumnCount):

# Установка ширины столбца

if(columnNum == 2):

locatedRange.Columns[columnNum].ColumnWidth = 19

else:

locatedRange.Columns[columnNum].ColumnWidth = 14

# Сохранение книги

workbook.SaveToFile("ComprehensiveStyleExample.xlsx", FileFormat.Version2016)

workbook.Dispose()

Освоение форматирования ячеек Excel с помощью Python: Полное руководство

Заключение

В этом руководстве вы узнали, как форматировать ячейки в Excel с помощью Python и библиотеки Free Spire.XLS. От базовых техник форматирования до продвинутых функций, таких как условное форматирование, теперь вы можете программно создавать визуально привлекательные файлы Excel.

Показать полностью 1
Python Microsoft Excel Длиннопост
8
0
VelStyling
VelStyling
2 месяца назад
Серия SQL: знакомство

AND и OR в SQL: как правильно соединять условия⁠⁠

Когда мы работаем с базой данных, почти всегда хотим не просто что-то выбрать, а применить несколько условий сразу. Например: выбрать всех клиентов старше 18 лет и с активной подпиской.

И здесь на помощь приходят два основных логических оператора: AND и OR.

AND и OR в SQL: как правильно соединять условия

Что делают AND и OR

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

SELECT *

FROM fridge

WHERE product = 'milk' AND product = 'eggs';

(Да, в реальности одной строки с молоком и яйцом не будет, но идея ясна: оба условия должны выполняться вместе.)

OR — «или». Достаточно, чтобы выполнено было хотя бы одно условие.
Пример: выбрать продукты, которые нужно купить или молоко, или яйца:

SELECT *

FROM shopping_list

WHERE product = 'milk' OR product = 'eggs';

Где могут использоваться

Эти операторы обычно используют в блоке WHERE, чтобы фильтровать данные.
Также можно применять их в:

  • HAVING — фильтрация агрегатов после GROUP BY

  • JOIN ON — комбинирование условий соединения таблиц

Пример с HAVING:

SELECT category, COUNT(*)

FROM fridge

GROUP BY category

HAVING COUNT(*) > 5 AND AVG(expiry_date) < '2025-08-01';

Особенности и нюансы:

  • Порядок выполнения важен

    AND имеет более высокий приоритет, чем OR.

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

    SELECT *

    FROM fridge

    WHERE (product = 'milk' OR product = 'eggs') AND expiry_date < '2025-08-01';

  • AND «сжимает» результат, OR «расширяет» результат

    AND оставляет меньше строк, OR — больше

Частые ошибки

  • Забыли скобки и получили слишком большой или слишком маленький результат

  • Использовали AND там, где нужен OR (или наоборот)

  • Смешали NULL значения: NULL AND TRUE и NULL OR TRUE могут вести себя неожиданно

Представим, что мама проверяет холодильник:

  • У неё есть список продуктов, которые могут испортиться: молоко, яйца, йогурт

  • Она хочет приготовить что-то, если и молоко, и яйца в наличии → AND

  • Она хочет перекусить, если есть молоко или йогурт → OR

В SQL это выглядит так:

-- Для приготовления омлета

SELECT *

FROM fridge

WHERE product = 'milk' AND product = 'eggs';

-- Для перекуса

SELECT *

FROM fridge

WHERE product = 'milk' OR product = 'yogurt';

AND и OR — это простые, но мощные инструменты фильтрации. Правильное использование скобок и понимание приоритета операторов помогает избежать ошибок и выбирать точно те данные, которые нужны.

А в своем канале На связи: SQL я публикую информацию с особенностями и нюансами в языке SQL, разбираю аналитические запросы и подходы работы с данными. Канал создала недавно с нулем подписчиков, но там уже есть интересная информация для работы аналитиков. Подписывайся!

Показать полностью
[моё] Аналитика Эмоциональное выгорание Аналитик Системный аналитик SQL Microsoft Excel Таблица Данные База данных IT
1
6
VelStyling
VelStyling
2 месяца назад
Серия SQL: знакомство

WHERE в SQL: как домохозяйка наводит порядок в холодильнике⁠⁠

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

WHERE в SQL: как домохозяйка наводит порядок в холодильнике

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

А в своем канале На связи: SQL я публикую информацию с особенностями и нюансами в языке SQL, разбираю аналитические запросы и подходы работы с данными. Канал создала недавно с нулем подписчиков, но там уже есть интересная информация для работы аналитиков. Подписывайся!

Нам нужно выкинуть все продукты, у которых истек срок годности:

SELECT *
FROM fridge
WHERE expiry_date < CURRENT_DATE;

fridge — наша таблица с продуктами
expiry_date < CURRENT_DATE — условие: выбираем просроченные продукты
CURRENT_DATE - текущая дата

Что можно писать в WHERE

  • Сравнения: =, >, <, >=, <=

  • Логические связки: AND, OR, NOT

  • Проверки на вхождение: IN, BETWEEN, LIKE

  • Подзапросы: «проверить список покупок перед выбором»

Или, мы хотим приготовить что-то на десерт:

SELECT *
FROM fridge
WHERE category = 'dessert' AND expiry_date > CURRENT_DATE;

Условие AND expiry_date > CURRENT_DATE добавляем на случай, если мы не выкинули всю просрочку до этого.

Подзапросы

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

SELECT *
FROM cooking_recipe
WHERE product NOT IN (SELECT product FROM fridge);

WHERE проверяет какие продукты отсутствуют в холодильнике.

Аналогично можно использовать EXISTS или NOT EXISTS
SELECT *
FROM fridge f
WHERE EXISTS (SELECT 1 FROM cooking_recipe s WHERE s.product = f.product);

EXISTS = есть продукт в списке
NOT EXISTS = нет продукта в списке

ANY \ ALL

Эти конструкции позволяют сравнивать с набором значений.

SELECT *
FROM fridge
WHERE expiry_date <= ALL (SELECT expiry_date FROM fridge WHERE category = 'milk');

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

  • Подзапрос (SELECT expiry_date FROM fridge WHERE category = 'milk') возвращает даты всех банок молока.

  • Условие expiry_date <= ALL (...) означает: выбрать только те банки, у которых дата годности меньше или равна каждой другой банке молока.

  • Практически это банка (или несколько, если даты совпадают), которая старше всех остальных.

То есть, результат будет одна или несколько банок с самой ранней датой годности.

SELECT *
FROM fridge
WHERE expiry_date <= ANY (SELECT expiry_date FROM fridge WHERE category = 'milk');

  • Условие expiry_date <= ANY (...) означает: выбрать все банки молока, у которых дата годности меньше или равна хотя бы одной другой банке молока.

  • Тут почти все банки проходят условие, кроме самой свежей (если она самая большая по сроку).

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

CASE в WHERE

Можно использовать CASE для сложной логики

SELECT *
FROM fridge
WHERE
CASE
WHEN product = 'milk' THEN shelf = 'top'
ELSE shelf = 'middle'
END;

Если я ищу молочные продукты в холодильнике, то должна их искать на самой верхней полке, иначе - на средней.


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

Показать полностью
[моё] Аналитика Эмоциональное выгорание Услуги SQL Microsoft Excel Аналитик Данные База данных Запросы IT Смена профессии Длиннопост
5
1471
Skyscrew
Skyscrew
2 месяца назад
Специфический юмор

Начиная с 1985-го года⁠⁠

Начиная с 1985-го года
Картинка с текстом Мемы Microsoft Excel Финансовая система
108
156
rzhser666
2 месяца назад
Юмор для всех и каждого

Ответ на пост «На опыте, сразу видно»⁠⁠1

Ответ на пост «На опыте, сразу видно»
Юмор Приём на работу Microsoft Excel Ответ на пост Скриншот
9
1864
autopicabu
autopicabu
2 месяца назад
Юмор для всех и каждого

На опыте, сразу видно⁠⁠1

На АлиЭкспресс

Юмор Приём на работу Microsoft Excel Видео Вертикальное видео Короткие видео Реклама Реферальная ссылка Мат
499
30
rick1177
rick1177
2 месяца назад
MS, Libreoffice & Google docs

Быстрое выравнивание аномалий в ряду данных средствами Excel (линейная регрессия)⁠⁠

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

Рассмотрим пример данных за 2019–2025 годы:

Пример сведений с аномальными данными

Пример сведений с аномальными данными

Визуализация аномальных сведений

Визуализация аномальных сведений

Очевидно, что в 2022–2024 гг. значения выглядят аномальными (в приложенном к посту файле Excel выглядит ещё более наглядно).

🔧 Что делаем

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

В Excel для этого используется функция ПРЕДСКАЗ.ЛИНЕЙН().

Так как «правильные» точки ряда не идут подряд (нам нужны 2019, 2020, 2021 и 2025), применяем ВЫБОР:

=ОКРУГЛ(ПРЕДСКАЗ.ЛИНЕЙН(2022;
ВЫБОР({1;2;3;4};B13;B14;B15;B19);
ВЫБОР({1;2;3;4};A13;A14;A15;A19));
2)

👉 Формулу вставляем для каждого нужного года (2022–2024).

📈 Результат

После корректировки ряд стал выглядеть так:

Расчёт регрессии и применение к ряду данных

Расчёт регрессии и применение к ряду данных

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

💡 Такой приём полезен, когда нужно убрать «шум» и быстро выровнять ряд. Но важно помнить: иногда выбросы содержат ключевую информацию и требуют отдельного анализа.

P.S. Я стараюсь публиковать интересные примеры из практической деятельности аналитика. Если вам интересно, приглашаю к ознакомлению на канале.

Файл примера

Показать полностью 2
[моё] Аналитика Microsoft Excel Регрессия Практика
22
ideavi
ideavi
2 месяца назад
Серия Конструктор Интеграм: когда Excel не справляется

Убийца Excel: как no-code адепту подступиться к заказчику⁠⁠

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

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

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

На нашем конструкторе построен продукт, о котором мы рассказываем клиенту. Конструктор призван заменить таблицу Excel и Google sheets для малого и среднего бизнеса, добавив к нему средства построения интерфейса и автоматизацию. Такой подход поддерживают различные сервисы, вот некоторые из них:

airtable.com – замена Excel и Google-таблиц: этакий Excel на стероидах

creatium.io – конструктор сайтов, претендующий на «всё-в-одном»

bpium.ru – российский аналог Airtable с элементами автоматизации

directual.com – конструктор баз данных, процессов и форм

integram.io – конструктор баз данных и веб-приложений

Подобные сервисы предназначены для создания прототипов и MVP, но часто позиционируют себя как инструмент для полноценной разработки. И, надо заметить, на некоторых из них можно сделать серьезный проект, дотянув до продвинутой ERP-системы, и писать код при этом действительно придется мало.

Что умеют конструкторы no-code

Перечисленные сервисы обычно заявляют о таких ценностях:

1. Всё просто и интуитивно понятно даже для новичка

2. Можно быстро и самостоятельно собрать продукт «без кода»

3. Большое количество проектов и довольных клиентов

4. Если чего не хватает, то можно легко интегрироваться с другими сервисами

5. Хорошие отзывы реальных пользователей

6. Большое сообщество специалистов, готовых помочь

7. Доступно множество шаблонов и наработок, бесплатных и платных

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

Локальная лицензия на установку конструктора на серверах заказчика, включающая сопровождение – устранение дефектов и установка обновлений.

Договор на консультирование заказчика и/или организацию заказной разработки внешней командой, которую подбирает исполнитель.

Сопровождение – почасовая оплата пакетами по 10-20-50 часов. Это консультации и доработки по проекту, но чаще это просто нахождение в дежурном режиме в готовности быстро помочь в случае необходимости.

Целевая аудитория таких проектов – бизнес от 50 до 700 человек, у кого есть свой отдел IT и/или бюджет для найма разработчиков со стороны. Чаще все таки разработкой занимаются свои сотрудники – 2-3 человека из тех, кто что-то программирует в компании, например, ERP и разную локальную автоматизацию. У них достаточно компетенций чтобы сопровождать IT-продукты или быстро написать что-то несложное.

Глоссарий

ЛПР – лицо, принимающее решение о покупке

Босс, ЛДПР – лицо, действительно принимающее решение (окончательное)

Действующие лица:

ЛПР – IT-директор или вроде того, человек, от которого все хотят что-то: директор хочет повышения показателей удовлетворенности пользователей IT-инфраструктурой и программами. Снизу и с боков его теребят те же пользователи со своими потребностями автоматизации. Польза от IT-директора – уменьшение беспорядка, сокращение издержек на IT, снижение рисков потери и кражи данных.

Босс – директор или владелец, он несет ответственность за компанию и управляет всеми её ресурсами. Его задачи: жизнеспособность бизнеса, чтобы отделы не конфликтовали, задачи выполнялись и был контроль.

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

Энтузиасты – единичные сотрудники, ждущие перемен и помогающие проекту из совершенно разной мотивации

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

Драйвер проекта – Босс велит IT-отделу стать более гибким, взять под контроль больше задач, прямо сейчас выполнить самую важную из них, при этом иметь:

  • Чёткие временные и финансовые рамки проекта

  • Уверенность в успехе проекта

  • Значительное улучшение возможностей IT

Так возникает идея проекта, который состоит в замене главной IT-системы компании или создании новой большой системы для управления чем-либо ключевым (логистикой, заказами, договорами, объектами, проверками, аттестациями и т.д.). Например, давайте сделаем ERP или продвинутую CRM:

  • Соберем всю управленческую отчетность в одном месте

  • Наведем порядок с логистикой, учтем всё, что мечтали контролировать

  • Выкинем кучу CRM и экселей и внедрим нормальный инструмент

  • Перепишем нашу легаси систему

  • Заменим эксели в планово-экономическом и смежных отделах на программу

  • Задокументируем и запрограммируем весь наш крутой процесс (строительные фирмы и подрядчики)

  • Научимся прогнозировать расходы и доходы от проектов, в т.ч. расчет НДС, например, который раз в квартал приносит сюрприз своим размером

Проект возникает не от хорошей жизни. Часто у участников присутствует заметный скепсис, а в четверти случаев на стороне заказчика можно даже наблюдать некоторое отчаяние. В любом случае, у инициаторов нет уверенности в успехе – по статистике 84% IT-проектов завершаются не в срок, вне бюджета или с худшей отдачей, чем ожидалось.

В половине случаев (50%) у ЛПР есть некое подобие ТЗ, иногда (25%) проработанное до степени готовности к точной оценке. В 75% случаев есть эксели и подобные таблицы/материалы/системы, которые используются как суррогат задуманного проекта, и по которым можно в принципе понять что происходит и создать нормальное IT-решение.

ЛПР ищет решения на рынке, потому что и сам стремится улучшить своё положение, получить бонус, пополнить резюме.

Как правило, выбор ЛПР таков, если смотреть по убыванию его риска:

А. Развивать самописные системы, которые есть в компании вместе с кучей экселей

Б. Закупить или доработать продукт из линейки 1С

В. Ничего не делать

Г. Найти готовый продукт

Д. Найти новый, более мощный, инструмент разработки или технологию

Е. Заказная разработка под ключ на стороне

В последних трёх случаях риск провала достаточно высок, и надо убедить ЛПР, что он всё предусмотрел и всё очень четко понимает. В этих случаях также наиболее высок риск саботажа со стороны сотрудников клиента.

Недостатки вариантов

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

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

В. Ничего не делать – нет бонусов и удовлетворения амбиций, недовольство начальства

Г. Готовый продукт – сотни тысяч за коробку, которую придется долго дорабатывать, настроить под себя – нереально, есть ограничения, из которых не все известны сразу

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

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

Где здесь ноукод?

Ноукод решение – это вариант Д, но с привлечением консультантов и, возможно, покупкой лицензии.

Схема сходу непривычна для ЛПР, поэтому даже сам формат решения ещё нужно донести. Обычно это требует около двух часов разговора с прогретым клиентом. То есть, с тем, кто уже что-то слышал, знает, где-то читал или просто сам является энтузиастом и изучает новое (таких не более 20%).

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

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

Ещё небольшая часть уже находится в отчаянии, потому что уперлись в фатальные ограничения, например:

  • Зарубежный продукт перестал быть доступен

  • Excel не поддерживает больше миллиона строк

  • Больше нет возможности копировать эксели из месяца в месяц

  • Невозможно масштабировать бизнес на текущем IT-решении

  • IT-решение работает медленно и нет возможности это исправить

  • Нужно веб-приложение или сервис вместо локальной десктопной программы

  • Нужно интегрироваться с сайтом, чего не позволяет существующая архитектура

Знакомство с продуктом

Итак, ЛПР в надежде попадает в мир ноукода и начинает знакомство:

  • Понимает, что это за продукт и из чего он состоит, условия работы

  • Листает примеры решений и узнает среди них свой будущий проект

  • Убеждается, что компания работает давно и имеет достаточно клиентов

  • Тарифные планы продуманы и покрывают все случаи

  • Видит преимущества продукта в разных аспектах

  • Возможно, регистрируется в 1 клик, чтобы пощупать сервис

  • Может выбрать подходящий вариант начала работы

  • Решается заказать консультацию

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

Сайт и звонок создают у клиента понимание, что, вероятно, он сможет успешно выполнить проект:

  • 100% под себя, в отличие от коробки, при примерно той же стоимости

  • С небольшим бюджетом, на порядок ниже, чем с 1С или заказной разработкой

  • Дальнейшее обслуживание будет недорогим и понятным

Что можно считать преимуществами варианта с конструктором

Основное – стоимость (скорость) разработки и доработок.

Второе – минимум ограничений, свойственных конструкторам.

Третье – высокая скорость работы и низкие требования к ресурсам.

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

Обычно на первой встрече (очно или в зум/мит/мост) мы показываем многие вещи на лету: загружаем данные, настраиваем структуру данных, раздаем права, делаем отчеты и формы, выводим данные в виде графиков, объясняем работу шаблонизатора и SPA (режим Single page application).

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

Например, мы загружаем в базу данных пару десятков тысяч записей за полминуты, а потом показываем какова была нагрузка (порядка 20% ЦПУ и 80МБ памяти) на этот сервер, в котором 1 ядро и 1ГБ памяти, и на котором сейчас работают и другие пользователи.

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

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

  • Зарегистрироваться в 1 клики и протестировать сервис

  • Связаться с нами (телефон, мессенджер, заказ звонка, письмо)

  • Купить пакет аналитики 5-10 часов, чтобы получить оценку и затем ТЗ

  • Посмотреть дополнительные материалы (видео, примеры, статьи и т.д.)

Онбординг

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

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

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

  • Позвонить по телефону на сайте

  • Обратиться в телеграм с сайта

  • Заказать звонок

  • Написать письмо

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

После контакта идет заказ демонстрации или счета на оплату первой фазы – прототип, проработка ТЗ, иная аналитика. Обычно первая фаза – это 30-50 тысяч предоплаты, чтобы проверить на что способен подрядчик.

Что интересует ЛПР

В хорошем случае клиент достает ТЗ или его аналог и начинает спрашивать по списку – можно это, а это, а это, а с этим как? Иногда у него есть эксели, которыми он может поделиться. Бывает поток мыслей в Miro, MindMap или чём-то подобном. В худшем случае – это скрины экранов.

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

Список вопросов примерно такой:

  • Базовые возможности. Что, у вас можно хранить таблички? А можно поля к ним добавлять? А связывать? А есть ли целостность данных? А как это выглядит – симпатично или нет? А справочники можно?

  • А сколько данных может хранить система? А как сильно она замедляется с ростом объемов? Долго ли вычислять что-то в миллионах записей?

  • Как делается импорт данных? А можно автоматически? А в каких объемах можно? А экспорт есть? А в 1С выгрузить/загрузить как?

  • Как организовано программирование бизнес-процессов? Как защитить их от дурака? Как вообще программируется изменение данных и всякие расчеты внутри?

  • Что с безопасностью? Ролевая модель есть? А можно дать доступ к отдельным полям? А можно назначить клиента менеджерам? А чтобы менеджер видел только своих клиентов? А чтобы босс видел всех?

  • Как сделать красивые рабочие места? Как сделать автоматизацию – взаимозависимые поля, расчеты и всё такое? Как перенести сюда формулы Excel?

  • Сколько это стоит – лицензия? А какие ограничения – по количеству пользователей, транзакций, установок и т.д.? Можно ли править код? Тестовые и прочие стенды сколько стоят?

  • Какой квалификации нужно быть нашему программисту, чтобы по вашим подсказкам сделать такой проект? А мелкие доработки пользователь сможет – отчет сделать или формулу поменять? А тут как с защитой от дурака?

  • Как будет организовано сопровождение? Какое время ответа в случае проблем? Как оформляется? Какая ваша ответственность?

  • Кому будет принадлежать интеллектуальная собственность на результат проекта? А мы сможем её продавать?

  • А что будет если вы завтра закроетесь, а мы подсели на вашу иглу? А как нам это тогда сопровождать? Где нам взять специалистов по этому конструктору?

  • А не изменятся ли ваши тарифы? Какие мы можем получить гарантии цен?

После ответов на все эти вопросы (те самые 2 часа) у ЛПР не остается сомнений в пригодности продукта и он занят мыслями, как будет продавать это Боссу.

Оформление и стоимость

Далее ЛПР идет к Боссу и продает ему этот выбор. Босс не колеблется с решением, если ЛПР сам уверен и может убедительно ответить всего на 2-3 вопроса. В рамках компании это незначительные затраты и всех больше волнуют риски, негатив и принципиальная реализуемость проекта. Торга обычно нет, он не имеет смысла, Босс и ЛПР воспринимают подрядчика как своего рода спасителя и не хотят его пока прессовать.

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

Ориентировочная стоимость проекта при выполнении его силами заказчика с помощью консультантов-аналитиков будет от 400 до 600 тысяч рублей, реже – в пределах миллиона рублей.

Для сравнения, подобный проект при заказной разработке будет стоить от 1.5 до 3 млн рублей при тех же существенных рисках.

Сопротивление программистов

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

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

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

Выводы

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

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

Заказчикам мы предлагаем взглянуть смелее на подобные предложения и не пожалеть немного времени на тестирование гипотезы с конструкторами. А разработчикам мы советуем изучить направление no-code и low-code разработки – там уже есть работающие инструменты и методики.

Спасибо!

Показать полностью 5
[моё] Автоматизация Microsoft Excel Длиннопост
4
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Маркет Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии