자동화가 소프트웨어 개발자를 괴롭히는 6가지 방법

CChatGPT8
11 Min Read

[ad_1]

모든 소프트웨어 개발자는 꿈을 알고 있습니다. AI와 코드 없는 레이어가 엔터프라이즈 스택을 원활하게 실행하는 동안 우리는 수영장 옆 갑판 의자에 앉아 있습니다. 아마도 우리는 웹 앱의 일부 섹션을 다시 디자인하고 싶은 충동이나 충동을 느끼거나 심지어 모든 것을 완전히 리팩터링할 수도 있습니다. 고개를 들지 않고 몇 가지 명령만 말하면 자동화된 코드 생성이 모든 것을 올바르게 수행합니다. 짜잔. 우리는 분기 동안의 작업을 완료했으며 이제 정말 휴식을 취할 수 있습니다.

하. 이러한 도구 중 어느 것도 제대로 작동하지 않습니다. 아, 그들은 종종 어떤 일을 제대로 해냅니다. 그들은 때때로 코드 완성을 올바르게 하거나 새 로드를 성공적으로 처리하기 위해 매개변수를 조정합니다. 인공지능과 코딩 혁신이 우리 삶을 더 편리하게 만드는 방법은 다양합니다.

하지만 실패하기 전까지는 대개 훌륭했는데, 실패하는 경우가 너무 많습니다. 오늘 아침에 DMARC 레코드에 대한 간단한 변경 사항이 적용되지 않아 도메인 등록 기관과 한 시간 동안 전화 통화를 했습니다. 아, 웹 앱에서는 변경이 48시간 전에 성공적으로 이루어졌다고 말했지만 이것이 해당 기계가 이 새로운 DNS 값을 전 세계와 공유하고 있다는 의미는 아닙니다. 아니요. 그래서 기술 지원 직원이 무슨 일이 일어나고 있는지 파악하는 동안 저는 새로운 등록자를 찾고 있습니다.

뉴턴의 법칙과 좀 비슷하네요. 자동화가 수행하는 모든 놀라운 일에는 자동화가 어떻게 망가졌는지에 대한 동등하고 반대되는 예가 있습니다. 자동화는 일반적으로 대부분의 경우 잘 작동하기 때문에 이러한 힘이 항상 대칭적인 것은 아닙니다. 공에서 눈을 떼거나 휴가를 갈 때 그들은 완전히 엉망이 될 방법을 찾습니다.

좀 더 경계심을 갖고 덜 냉정한 항복으로 자동화에 접근하는 데 도움이 되도록 잠시 잠시 멈춰서 냉정한 재평가를 해보겠습니다. 노동력을 절약해주는 AI, 코드 없는 놀라운 기능, 기타 고급 영리함이 잘못되는 6가지 방법은 다음과 같습니다.

쓰레기 수거

이론적으로 메모리 할당은 인간 천재들이 작은 머리로 걱정해야 할 부분이 아닙니다. 현대 언어에는 메모리 덩어리를 할당한 다음 포함된 데이터가 더 이상 필요하지 않을 때 이를 정리하는 계층이 있습니다. 가비지 수집기를 사용하면 프로그래머는 스톡 옵션의 가치와 같은 더 큰 것을 생각할 수 있습니다.

그리고 가비지 수집기는 일반적으로 여백을 제외하고는 충분히 잘 작동합니다. 자동으로 작동하기 때문에 메모리 누수가 과거의 일이라고 생각할 수도 있습니다. 확실히 덜 일반적이지만 프로그래머는 가비지 수집기가 건드리지 않는 방식으로 메모리 블록을 할당할 수 있습니다. 설상가상으로 프로그래머들은 더 이상 메모리 누수에 대해 걱정할 책임이 없다고 생각하여 잘못된 할당을 찾는 대신 손을 뻗어 클라우드 서버의 RAM 양을 늘리는 경우가 많습니다. 클라우드의 RAM 중 얼마나 많은 양이 확보될 수 있는 데이터 구조로 채워져 있습니까?

자동화된 메모리 관리에는 다른 문제가 있습니다. 개체 할당은 코드의 가장 큰 시간 낭비 중 하나이며, 똑똑한 프로그래머는 프로그램 시작 시 하나의 개체를 할당한 다음 계속 재사용하면 코드가 더 빠르게 실행된다는 것을 배웠습니다. 즉, 가비지 수집기가 아무 작업도 수행하지 않도록 설정합니다.

그리고 가비지 수집이 항상 가장 불편한 시간에 발생하는 것 같은 일반적인 문제가 있습니다. 대기 시간과 지연으로 인해 경험이 망가질지 여부를 알거나 신경 쓸 방법이 전혀 없이 자동화 루틴이 바로 시작됩니다. 예를 들어 의료용 하드웨어에서 실행해야 하는 사용자 인터페이스나 코드를 만드는 개발자는 가비지 수집 문제가 언제 발생할지 걱정할 충분한 이유가 있습니다.

해석된 코드

다양한 스크립팅 언어를 사용하면 코드 몇 줄만 작성하는 것이 훨씬 간단해졌습니다. 상대적인 단순성과 친근함은 전업 프로그래머뿐만 아니라 데이터 과학과 같은 관련 분야에서도 많은 팬을 확보했습니다. Python이 현재 가장 일반적으로 가르치는 프로그래밍 언어 중 하나인 이유가 있습니다.

그러나 이러한 해석된 언어를 더 쉽게 사용할 수 있도록 자동화를 추가하면 비효율성과 보안 문제가 발생할 수도 있습니다. 통역 언어는 일반적으로 속도가 느리며 때로는 매우 느립니다. 자동화된 메모리 관리, 최적화를 위한 짧은 시간, 일반적인 런타임 해석 작업의 조합으로 인해 코드 속도가 실제로 느려질 수 있습니다.

프로그래머가 대체 런타임 구현 또는 우수한 JIT(Just-In-Time) 컴파일러의 기능을 활용하는 방법을 알아내면서 속도가 향상되었습니다. Python 개발자는 더 빠른 실행을 위해 Cython, Jython, Numba, PyPy, Pyston 및 현재 Pyjion과 같은 제품을 선택했습니다. 하지만 통역사가 할 수 있는 일에는 여전히 한계가 있습니다.

어떤 사람들은 해석된 코드가 덜 안전하다고 말합니다. 그런 다음 컴파일러는 코드를 면밀히 조사하는 데 추가 시간을 소비할 수 있으며, 반면 통역사는 반대 방향으로 이동하여 결과를 “적시에” 유지하려고 노력합니다. 또한 해석된 언어에서 널리 사용되는 동적 타이핑을 사용하면 주입 공격이나 기타 체계를 더 쉽게 실행할 수 있습니다. 물론 컴파일된 코드도 마찬가지로 취약할 수 있습니다. 모든 프로그래머는 어떤 언어를 사용하든 경계해야 합니다.

인공지능

인공 지능은 자동화보다 훨씬 더 큰 주제이며, 다른 곳에서 AI의 다양한 어두운 비밀과 한계에 대해 논의한 적이 있습니다. 문제는 이해하기 쉽습니다. AI는 누구도 예상했던 것보다 나은 현대의 기적일 수 있지만, 정신이나 개성이 완전히 결여된 단조롭고 역류적인 결과물을 생산하는 경우가 많습니다. LLM(대형 언어 모델)은 본질적으로 훈련 세트의 대규모 평균이기 때문에 이는 의미가 있습니다.

때로는 AI가 갑자기 발생하는 무작위 오류를 던져 상황을 더욱 악화시키는 경우도 있습니다. 시스템은 문법적으로 완벽한 문장과 잘 구조화된 문단을 자동으로 처리하여 갑자기 꾸며낸 사실을 환각하게 만듭니다. 설상가상으로 AI는 살아 숨 쉬는 사람, 잠재적으로 소송을 제기할 수 있는 실제 사람에 대한 비방, 명예훼손, 중상모략을 퍼붓기도 합니다. 앗.

AI를 가장 잘 활용하는 방법은 자동화된 천재를 꽉 묶을 수 있는 더 똑똑하고 민첩한 인간을 위한 그다지 똑똑하지 않은 조수로 사용되는 것 같습니다.

데이터베이스 쿼리

이론적으로 데이터베이스는 모든 정보를 훌륭하고 구조화된 테이블에 보관하고 원할 때 언제든지 질문에 답할 수 있는 독창적인 자동화 도구입니다. 오라클은 모든 것이 얼마나 자동화되었는지 강조하기 위해 데이터베이스에 “자율”이라는 라벨을 붙이기도 했습니다. 현대 기업은 대규모 데이터베이스의 마법 없이는 운영될 수 없습니다. 우리는 그들의 순수한 힘이 필요합니다. 단지 개발팀이 자신의 한계를 빨리 깨닫는 것뿐입니다.

프로그래머가 완료하는 데 시간이 오래 걸리는 쿼리를 만드는 경우와 같이 멋진 쿼리 엔진이 자체 이익에 비해 너무 강력한 경우가 있습니다. 간단한 SQL 쿼리를 작성하는 것은 특별히 어렵지 않지만 효율적인 복잡한 쿼리를 작성하는 것은 매우 어려울 수 있습니다. 저장 및 검색에 사용된 모든 자동화는 개발자에게 코드를 매듭짓기에 충분한 로프를 제공합니다.

일부 팀에서는 비트 흐름을 원활하게 유지하기 위해 전문적인 데이터베이스 관리자를 고용할 여력이 있습니다. 이러한 전문가들은 매개변수를 조정하고 스래싱 없이 인덱스를 처리할 수 있는 충분한 RAM이 있는지 확인합니다. 두 개 이상의 절이 포함된 SQL 쿼리를 생성해야 할 때 지능적으로 수행하는 방법을 알고 있으므로 시스템이 멈추지 않습니다.

로우코드 및 노코드 플랫폼

일부 엔터프라이즈 도구, 포털 및 웹 애플리케이션은 이제 새로운 프로그래밍이 거의 또는 전혀 없이 즉석에서 변경될 수 있을 만큼 정교해졌습니다. 영업팀은 이 기능을 “로우 코드” 또는 “코드 없음”이라고 부르기를 좋아합니다. 자동화 수준이 꽤 매끄러우므로 정확하지 않습니다. 그러나 패키지에는 여전히 몇 가지 골치 아픈 문제가 포함되어 있습니다.

가장 큰 문제는 의류 산업이 직면한 문제와 동일합니다. 고객은 “하나의 사이즈가 모든 것에 적합하다”는 것은 실제로 “하나의 사이즈는 아무 것도 적합하지 않다”는 것을 의미한다는 것을 알고 있습니다. 기업마다 조금씩 다르므로 데이터 웨어하우스, 처리 파이프라인, 인터페이스도 각각 달라야 합니다. 그러나 로우 코드 및 노코드 옵션은 하나의 일반화된 시스템을 제공합니다. 모든 사용자 정의는 피부에 깊은 경향이 있습니다.

이 일반화된 코드는 잠재적인 사용자가 던질 수 있는 모든 것에 대비해야 하기 때문에 속도가 훨씬 느린 경우가 많습니다. 데이터를 포맷하고 다시 포맷하기 전에 지속적으로 데이터를 확인합니다. 프론트엔드와 백엔드를 연결하는 모든 글루 코드는 종종 새로운 데이터가 도착할 때마다 실행되어야 합니다. 이로 인해 하드웨어 비용이 증가하고 때로는 모든 작업 속도가 느려집니다.

느린 자동화라도 많은 개발 시간과 비용을 절약할 수 있으므로 올바른 방식으로 스택을 구축하기 위해 프로젝트에 인력을 배치하는 대신 많은 팀이 그렇게 할 것입니다. 그러나 그렇게 한다는 것은 실제로 적합하지 않고 종종 약간 더 까다롭고 실행 비용이 더 많이 드는 것과 함께 생활하는 것을 의미합니다.

워크플로 자동화(RPA)

로우코드 및 노코드 개발의 사촌격은 RPA(로봇 프로세스 자동화)입니다. 영화급 로봇은 보이지 않는다는 점을 명심하세요. 이러한 도구는 문서 저글링과 같은 일반적인 사무 작업에 AI를 적용하는 데 능숙하기 때문에 사무실에 적합합니다. 불행하게도 RPA에는 AI와 로우 코드의 모든 잠재적인 문제가 있습니다.

RPA의 가장 큰 판매 포인트는 레거시 스택에 최신 인터페이스를 배치하는 동시에 약간의 통합을 추가할 수 있다는 것입니다. 이는 이전 코드를 변경하지 않고도 예쁜 얼굴을 만드는 빠른 방법이 될 수 있습니다. 물론 이는 오래된 코드가 현대 표준에 맞게 업데이트되거나 다시 작성되지 않는다는 의미이기도 합니다. 따라서 내부에는 펀치 카드 및 진공관 시대의 데이터 구조와 알고리즘이 채워져 있습니다. RPA는 거의 실행되지 않는 코드에 기술 덕트 테이프를 두드리는 것과 같습니다.

진짜 위험은 소프트웨어가 인간을 잠들게 할 만큼 잘 작동할 때 발생합니다. 자동화는 인간 프로세서가 송장이나 주문에 문제가 있는지 확인할 수 있는 시간을 제공할 수 있는 수동 단계를 처리합니다. 이제 일부 관리자는 로그인하여 “모두 승인” 버튼을 클릭합니다. 전통적인 사무 절차의 견제와 균형이 무너지면서 사기와 실수가 점차 늘어나기 시작합니다. 물론 파트타임으로 남은 한 사람에게는 너무 늦기 전에 무슨 일이 일어나고 있는지 이해할 수 있는 도구와 통찰력이 부족합니다.

자동화 제로

더 많은 자동화를 추가하는 것보다 더 나쁜 유일한 것은 아무것도 추가하지 않는 것입니다. 기술적 부채는 절대로 해결되지 않습니다. 소프트웨어 스택이 너무 오래되어 더 이상 업그레이드할 가치가 없습니다. 스택이 천천히 골화됨에 따라 사무실에 있는 모든 사람도 마찬가지입니다. 기업은 항상 해왔던 방식대로 일을 하고 있습니다. 소프트웨어 스택이 작업 흐름을 지배합니다.

소프트웨어 자동화가 어떻게 실패하는지 불평하고 기록하는 것은 좋지만 때로는 가장 좋은 방법은 함정을 받아들이고 그에 대해 알고 있는 정보를 활용하여 전략적으로 계획을 세우는 것입니다. 즉, 단점을 피하거나 더 나은 솔루션을 찾으려고 노력하면서 단점을 고려하십시오. 진보에 대한 맹목적인 믿음보다 더 나쁜 유일한 것은 전혀 진보가 없다는 것입니다.

저작권 © 2023 IDG Communications, Inc.

Share this Article
Leave a comment

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다