Какво е устойчиво разработване на софтуер?

Устойчивото развитие

Устойчивото развитие се превърна в много важна дискусионна тема в ИТ индустрията поради нарастващия въглероден отпечатък на софтуерната индустрия и необходимостта от засилване на екологичната й отговорност. Много бизнес и социални функции стават все по-зависими от софтуера, което повишава цялостната етична отговорност на индустрията.

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

Устойчивото разработване на софтуер е начинът на работа на Geocon и това е основната философия на основателите на нашата компания от самото начало. Ето защо искаме да подчертаем осезаемото значение на устойчивото разработване на софтуер в нашата компания, разглеждайки го от различни гледни точки.

  • Екологична устойчивост (въздействието на цифровизацията върху климата е огромно)
  • Финансова устойчивост (какви решения са финансово устойчиви и рентабилни за клиентите)
  • Социална устойчивост (какво въздействие оказват софтуерните решенията върху обществото)
  • Човешка устойчивост (продължаващо развитие през целия живот и благополучие на индивида)
  • Техническа устойчивост (дългосрочна употреба на системите и способност за тяхното развитие в съответствие с променящите се обстоятелства и изисквания)

Разработването на софтуер е устойчиво, когато отрицателните преки и косвени ефекти от разработването и използването на софтуер върху икономиката, хората, обществото и околната среда са минимални и когато е възможно дългосрочно използване и развитие на софтуер в съответствие с променящите се обстоятелства и изисквания.

Неустойчивият въглероден отпечатък на ИТ индустрията

Софтуерната индустрия трябва да е наясно с въздействието си върху околната среда. Изследования показват, че секторът на ИТ и комуникациите създава 3,5% от глобалните климатични емисии, а до 2040 г. този процент ще се увеличи до 14%.

Цифровизацията непрекъснато увеличава обема на пренасяните и съхраняваните данни. Поради тази причина са необходими и повече хипермащабни центрове за данни, които ще консумират електроенергия колкото цяла държава. Стремежът на тези компании е да използват изцяло възобновяема енергия. Такива решения са все по-необходими, предивд новите технологии (машинно и задълбочено обучение, IoT, роботизирана автоматизация на процеси) стават все по-често срещани, което едва наскоро стана възможно благодарение на 5G мрежата, която има десет пъти по-голям капацитет за трафик на данни в сравнение с 4G мрежата.

Големи глобални доставчици на облачни услуги работят активно за намаляване на въглеродния си отпечатък. В екологичния си доклад за 2018 г. Google обяви, че ще покрие 100% от потреблението на електроенергия с възобновяема енергия, закупена на пазара. Amazon, от друга страна, казва, че AWS е захранила повече от 50% от услугите си миналата година с възобновяема енергия, но компанията се е ангажирала с цел от 100%. В много ситуации най-щадящият околната среда избор не винаги е най-рентабилният, при който финансовите решения взимат надмощие, особено когато става въпрос за работа с клиенти. Когато става въпрос за устойчивост обаче, организациите могат първо да предприемат малки поетапни вътрешни стъпки и тяхната демонстрация пред клиента.

Финансите на клиента не са за тестване

Финансовата устойчивост се отнася до решения, които са икономически ефективни за клиентите. Не трябва да се експериментира с бюджета на клиента. Вместо това трябва да бъдат избрани инструментите и решенията, които наистина отговарят най-добре на работната среда на клиента. Устойчивото разработване на функции включва напредък в малки секции (в духа на минималния жизнеспособен продукт) и разпределяне на умерени ресурси за близкото бъдеще, вместо ангажиране с големи проекти и инвестиции, продължаващи с години.

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

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

Голямата социална отговорност на софтуерната индустрия

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

От гледна точка на използваните алгоритми, защитата на данните и потреблението на енергия, софтуерната индустрия има нарастваща етична отговорност. Някои компании вече използват доклади за корпоративна социална отговорност, но как би могла софтуерната индустрия да разгледа по-добре тази нарастваща отговорност?

Ние сме убедени, че в нашите софтуерни проекти трябва да се вземат предвид следните въпроси на Корпоративната и социална отговорност:

  • Решението подобрява ли качеството на живот на хората?
  • Може ли решението да бъде злоупотребено за нещо неетично?
  • Кои потребителски групи са изключени?
  • Етично ли е това, което правим?
  • Законно ли е това, което правим?

Техническата устойчивост се изгражда чрез хора и култура

Човешката устойчивост означава поддържане на човешкия капитал – здраве, образование, умения, знания и лидерство. Инвестициите в обучението, здравето и храненето на хората са интегрирани в икономическото  ни развитие и неговата устойчивост. При разработването на софтуер това може да се отнася например до сътрудничеството между екипите за разработка и благосъстоянието на работното място, т.е. как ние като работодатели се отнасяме към своите служители или как служителите ни се грижат за себе си.

Софтуерът трябва да бъде писан и поддържан по такъв начин, че разработчиците и екипите за разработване на продукти да могат да бъдат доволни от работата и работната си среда в дългосрочен план. Работната култура трябва да се основава на сътрудничество между експерти и клиенти, така че всички страни да получат подкрепата на общност от професионалисти. Една от най-добрите практики на такъв метод е разработката на моделиран софтуер DevOps и работната култура, която създава.

Често срещан човешки проблем с устойчивостта може да бъде нереалистичното управление на времето на разработчиците. Това може да се случи, когато графиците, създадени за спешна разработка, са твърде кратки и в резултат на това качеството страда. Натискът за пускане на продукт може да отнеме фокуса от внимателния преглед на кода и тестването, тъй като бизнесът се обслужва чрез стартиране на нови функционалности с бързи темпове.

Въпреки че предизвикателствата в управлението на времето и бизнес изискванията отнемат време от техническата устойчивост, в повечето компании проблемът се крие в културата. Винаги трябва да се полагат усилия за създаване на вътрешна култура, която се фокусира върху подобряването на качеството. Това включва непрекъснато подобряване на екипа, който прави софтуера и неговата компетентност, мотивация и инструменти. Усилията за поддържане на висококачествена работа и благополучие на екипите изискват устойчива организационна култура, която насърчава непрекъснатото подобрение и осигурява достатъчно ресурси и подкрепа за развитие.

Без култура, ръководена от хората, няма и предпоставки за техническа устойчивост. Трябва да се вземат предвид следните области:

  • Методи и процеси за разработка
  • Политики и процеси за поддръжка и тестване (процес на поддръжка)
  • Системно производство
  • Използване на системата

Постоянното подобряване на кода е от съществено значение за развитието: архитектурата и прозрачността на кода трябва непрекъснато да се развиват, за да се адаптират към променящите се нужди и характеристики.

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