본문 바로가기
번역

프로그래머가 아닌, 소프트웨어 엔지니어가 되어라

by 개발고구마 2025. 1. 19.

이 글은 번역본 입니다.
(영어 공부 겸 외국 개발 커뮤니티를 번역해 보고 있습니다.)
괄호 표시(*)는 이해해 조금 더 도움이 되기 위한 제 첨언입니다.

 

원문
https://dev.to/holasoymalva/dont-be-a-programmer-be-a-software-engineer-4366

 

프로그래머가 아닌, 소프트웨어 엔지니어가 되라

한 가지 확실하게 말해두자면, 코드를 짤 줄 아는 것이 소프르웨어 엔지니어가 아닙니다.
이 것은 지난 몇 년 동안, 기술 업계의 해고, 경제적 변화, 기대치의 증가로 생긴 가혹한 진실입니다

프로그래머가 되는 것은 “단순히 코드를 작성하는 사람”입니다.
소프트웨어 엔지니어가 되는 것은 “문제를 해결하는 사람”입니다.
여러분이 단순히 코드를 짜내고 있다면, 언제든지 대체될 수 있습니다.
하지만, 시스템을 디자인하고, 절충안을 내고, 큰 그림을 그릴줄 알거나,

설계가 가능한 사람이라면 쉽게 자동화되거나 외주를 맡겨지는 일은 없을겁니다.

그러므로 뭐가 다른지, 왜 이런 것들을 신경 써야 하는지 살펴보자

프로그래밍 vs 소프트웨어 엔지니어링

프로그래밍은 무언가 동작하는 것을 만들기 위해 코드를 짜는 것 입니다.
소프트웨어 엔지니어링은 문제를 효과적으로 해결하고 그것이 지속가능하게 시스템을 디자인 하는 것 입니다.
이건 레고타워를 짓는 것과 고층 빌딩을 짓는 수준의 차이입니다.
하나는 단순히 재밌고 빠르게 할 수 있는 것이지만, 다른 하나는 계획, 협업, 복잡한 설계의 이해가 필요합니다.

최근 몇년간, 필자는 프로그래머에만 집중하는 회사들이 어떤일이 일어나는지를 보았습니다.
IT 황금기가 지나가고 그 성장세가 더뎌지고 느려질 때, 솔루션을 제시하고 설계하는 사람보다,

단순히 지시를 따르고 코드를 빠르게 찍어낸 사람들이 해고되었습니다.
IT 업계에서 원하는 것은 단순 코드를 쓰는 사람이 아닌, 복잡한 문제를 해결하는 사람입니다.
당신이 살아남고 싶다면, 단순한 코딩문법만 생각하는 것을 넘어 시스템에 대해서 생각해야합니다.

당신이 한 단계 더 나아가야하는 이융

기술 업계는 변화하고 있습니다. 왜 “프로그래머”에 멈추지 않고 더 나아가야 하는게 중요한지 알려드리겠습니다.

1. 구직자가 포화 상태입니다.

단순히 자바스크립트나 파이썬을(*한국에서는 자바) 안다고 해서 취업되던 시대는 끝났습니다.
여러 부트캠프에서 기본적인 CRUD를 만들 수 있는 주니어 개발자들을 너무나도 많이 만들어 냈습니다.
당신이 이정도 기술 수준이라면, 지옥같은 경쟁속에서 싸우게 될 것입니다.

회사들은 아키텍처를 이해, 확장할 수 있고 시간, 돈, 복잡성을 조절할 수 있는 엔지니어들을 찾고있습니다.
그런 능력들은 단순히 기초에서 오는게 아닌 “엔지니어적인 사고”에서 올 수 있습니다.

2. 자동화가 스며들고 있습니다.

깃허브 코파일럿이나 챗GPT가 어떤 걸 할 수 있는지 아시나요?
보일러 플레이트 코드(*Java Getter나 Setter같은 코드)를 짜거나 버그를 고쳐주고, 심지어 간단한 앱까지 만들 수 있습니다.
프로그래머의 일들, 즉 간단한 코딩을 하는건 AI로 대체될 것입니다.

하지만 AI가 할수 없는것들, 이전에 말한 복잡한 시스템 설계, 판단, 사용자들의 요구 같은 것들은 대체될 수 없습니다.
이 점에서 엔지니어가 빛을 발할 수 있습니다.

3. 회사들의 비용 절감

예산이 절감되면 기업은 효율성을 추구합니다.
기업은 단순 코딩을 하는 사람을 원하지 않습니다.
기업은 비즈니스 문제를 이해하고 솔루션을 설계하는 사람,

그리고 고용주와 커뮤니케이션이 잘되고 결과물을 확실해게 보여줄 수 있는 사람을 원할 것 입니다.
엔지니어는 이런 통합적인 것들을 가져다 줄 것입니다.

“프로그래머”에서 “소프트웨어 엔지니어”가 되는 방법

단순히 코드를 작성하지말고 사고의 전환이 필요합니다.
여기 바꿀 수 있는 방법을 알려드리겠습니다.

1. 소프트웨어 설계의 기초를 배워야 합니다.

SOLID , DRY, YAGNI 같은 원칙들을 배워야합니다.
문제를 모듈화하고 유지 가능한 솔루션으로 분해하는 방법을 배워야합니다.
책들을 꼭 읽어야합니다.
대표적으로 로버트.C.마틴의 클린코드, 마틴 클레프만의 데이터 중심 애플리케이션 설계 같은 책 입니다.
(*둘 다 번역본으로 있습니다)

2. 시스템 설계를 마스터 해야합니다.

소프트웨어 엔지니어가 되고 싶다면, 설계하는 방법을 알아야합니다.
단순 설계가 아닌 확장 가능하고, 장애 대응에 유연한 아키텍처를 만들어야 합니다.

관련해서 아래와 같은 것들을 배우길 권장합니다.

  • 로드밸런싱과 캐싱
  • 데이터베이스 디자인과 인덱싱(*테이블 모델링, 효율적인 인덱스 설정을 말하는 것 같다)
  • 시스템 분산 과 마이크로서비스(*MSA구조를 설명하는 것 같음)

시스템 설계는 어렵다고 많이 들어봤을 것입니다.

하지만 이를 준비하는 과정에서 배우는 기술은 취업을 넘어 훨씬 더 많은 가치를 제공할 것입니다.

3. 비즈니스 도메인을 이해하세요

지루한 소리로 들릴 수 있겠지만 최고의 엔지니어는 어떻게 만드는지를 아는게 아닌, 왜 이렇게 만들어야하는지를 알고 있습니다.
유저들이 원하는 것, 프로젝트 예산, 일정 등에 대해 생각하는 것을 배우세요

이런 질문들을 가질 수 있을 겁니다.

  • 이 기능은 사용자들에게 어떤 영향을 끼치나요?
  • 이 문제를 해결할 때 더 쉬운 방법은 없을까?
  • 속도와 질의 균형을 어떻게 맞출 수 있을까?

비즈니스 도메인을 이해하면, 엔지니어가 되는 것을 뛰어넘어 믿음직한 조언자가 될 수 있습니다.

4. 협업에 익숙해지세요

엔지니어링은 협업입니다. 당신은 PM, 디자이너, 다른 개발자들과 일해야 합니다.
어떻게하면 깔끔하게 의사소통하고 피드백을 주고받고 업무 문서로 작성할 수 있는지 배워야합니다.

단지 좋은 코드를 작성하는 것만이 아닌, 팀이 이해하고 유지보수에 용이하고, 확장 가능할 수 있는 코드를 만들어야 합니다.

5. 항상 호기심이 넘쳐야합니다.

최고의 엔지니어는 배움을 멈추지 않습니다. 새로운 도구, 프레임워크, 패러다임을 발견해야 합니다.
러스트, 쿠버네티스, GraphQL 같은 것들을 경험해봐야합니다.
기술은 빠르게 변화하고 있습니다. 호기심을 유지하면 이런 변화에 적응력이 생길겁니다.

여전히 코딩을 배워야 할까요?

당연합니다! 코딩은 우리가 하는 모든일의 기초입니다.
하지만 커리어를 오래 가져가고 싶다면 코딩에서 멈추면 안됩니다.
비판적인 사고, 문제 해결력, 시스템 설계에 대해 배워야합니다.

소프트웨어 엔지니어가 된다는 것은 기술 능력, 창의성, 협업, 전략적 사고를 모두 결합하는 것을 의미합니다.
가장 쉬운 길은 아니지만, 끊임없이 변화하는 산업에서 당신을 중요한 존재로 만들어 줄 것입니다.

마무리

다른 프로그래머들과 똑같이 되지 마세요. 목표를 높게 가지세요.
단순 코딩이 아닌, 엔지니어적 사고, 디자인설계하는 법에 대해 배우세요.
IT 업계는 변화하고 있습니다. 이건 나쁜게 아니라 성장할 수 있는 기회입니다

당신은 어떻게 생각하나요?
프로그래밍을 넘어서는 목표를 가지고 있나요?
댓글로 같이 이야기 해봐요

 

번역 후 느낀점

더보기

영어 - 첫 번역인데 확실히 생각보다 모르는 단어들이 많아 시간이 꽤 걸렸다…
개발 - 항상 내가 생각하고 있는 것들을 한 번 더 되짚어본 느낌이다. 다행인지는 모르겠지만 내가 요즘 생각하고 있는 것들을 다시 보게 되어 큰 공감을 많이 얻었다. 항상 배우는 자세를 가져야겠다. 특히 우리 회사의 주니어들에게 항상 말하고 싶었던 내용들의 꽤 있었다. 나중에 기회가 되면 모두가 읽을 수 있도록 노력해봐야겠다

 

'번역' 카테고리의 다른 글

주니어를 위한 아키텍처 패턴 - MVC, MVP, MVVM  (0) 2025.03.02