top of page
친구들과 함께 떠나는 여행
  • 작성자 사진ToadDe

Part 1. 개발자로 시작하는 첫 걸음

개발자로 시작한다는 것은 끊임없이 노력하고, 자기 개발을 해야 한다는 것을 의미합니다. 그렇지 않으면 개발자로 남는 것을 포기해야 할 때가 오기 때문입니다.

Story.1

프로그래머(Programmer)와 코더(Coder)

이 글을 읽는 독자분들 중에서 이미 개발자인 분들은 처음에 어떻게 시작하셨나요?

독학으로 공부를 하거나 다른 경로를 거쳐서 시작하는 경우도 있겠지만 많지는 않고, 대학교 또는 대학원에서 전공으로 졸업을 하고 시작하는 경우와 프로그래밍을 배운적이 없거나 비전공자이지만 교육기관의 커리큘럼을 이수하고 시작하는 두 가지의 경우가 일반적입니다.

필자는 대학교 비전공자였는데 졸업 후 활동하던 온라인 커뮤니티에서 학원에서 공부해보는 것이 어떻겠냐는 권유를 받고, Java 프로그래밍 커리큘럼을 수료하고 개발자로 시작하게되었습니다.

당시에 고용노동부에서 개발자를 양성을 위해서 교육비를 지원해주던 시기여서 많은 학원에서 개발자를 위한 커리큘럼을 운영하고 있었고, 그 덕분에 거의 비용을 들이지 않고 교육을 이수할 수 있어서 운이 좋았다고 생각하고 있습니다.

프로그래머와 코더에 대한 주제에서 뜬금없이 개발자로 시작하게 된 이야기를 꺼낸 이유는 프로그래머와 코더에 대해서 먼저 정의를 하고 시작하기 위해서 입니다.

보통 대학교 또는 대학원에서 전공으로 프로그래밍을 공부하는 사람과 학원에서 커리큘럼을 수강하고 있는 사람을 학생이라고 부르지 프로그래머 또는 코더라고 부르지 않습니다.

그럼 왜 프로그래머 또는 코더라고 부르지 않을까요?

그것은 그 사람이 프로그래밍을 할 수는 있지만 하는 현재하는 주된 일은 학생이기 때문입니다.

프로그램을 개발하는 프로젝트에는 아키텍트라는 분야가 있고, SA(Solution Architect), TA(Technical Architect), AA(Application Architect), DA(Data Architect), DBA(Database Architect) 등이 있습니다.

아키텍트는 프로젝트에서 필요로하는 개념이나 기술 요소들을 다루는 일을 하는데 각각의 분야를 한 명이 모두 다루기도 어렵고 한 사람이 모든 것을 잘할 수는 없기 때문에 분야가 나누어져있습니다.

프로젝트에서 아키텍트가 하는 역할은 프로젝트에서 담당하는 분야별로 필요로하는 기술 요소들(Database, UI, Framework 등)을 도출하고, 해당 프로젝트에 적절한 기술을 정하고, 적용방법이나 표준 등을 정의하는 것입니다. 하지만 상황이나 필요에 따라서 각각의 분야에서 프로그래밍 업무를 수행하기도 하지만 개발자나 프로그래머 또는 코더라고 부르지 않습니다. 위에서 학생의 정의에 대해서 이야기한 것과 비슷한 맥락에서 주된 일이 개발이 아니라 아키텍트이기 때문입니다.

저는 이런 관점에서 프로그래머(Programmer)와 코더(Coder)를 이야기하려고 합니다.

사전에 정의된 내용을 보면 Coder란 "코딩(Coding)하는 사람" 이라는 의미이고, Programmer란 "프로그램을 만드는 사람"이라고 되어 있습니다. 사전적인 의미로 보았을 때 두 단어의 차이를 명확하게 구분하기는 어렵습니다.

현업에서 개발을 하고 있는 사람들에게 두 단어에 대한 차이를 물어보더라도 선뜻 명확한 설명을 듣기 어려운데 일반인들이 두 단어의 차이를 이해하기는 더더욱 어려운 일이라고 생각합니다.

프로젝트에서 프로그램을 개발할 때 분석, 설계, 구현으로 단계를 나누어서 진행합니다.

일반적으로 코더는 투입된 프로젝트에서 업무 지시자가 제시한 내용을 소스 코드로 작성하는 사람을 의미하며, 프로그래머는 분석, 설계 단계에서 개발에 필요한 제반 업무를 수행하고, 그것을 바탕으로 구현 단계에서 프로그램을 만들 수 있는 사람을 의미합니다. 그래서 저는 프로그래머가 코더에 비해서 처리할 수 있는 업무 범위가 넓은 사람을 의미한다고 생각합니다.

위의 설명을 보면 프로그래머가 보다 많은 범위의 일을 할 수 있고, 코더는 그보다 적은 범위의 일을 하므로 프로그래머가 좋다고 판단할 수도 있겠지만 일을 하다보면 질적인 면에서 코더가 훨씬 나은 결과물을 만들 수도 있으므로 어느 쪽이 더 낫다라고 할 수는 없습니다.

하지만 필자는 두 단어의 의미를 다른 기준으로 정의하고 이야기하려고 합니다.

최근에는 언급되는 경우가 많지 않지만 오랫동안 일을 해온 개발자라면 "OOO는 개발자(프로그래머)가 아니라 코더야" 라는 이야기를 들어본 적이 경험이 있을 것입니다. 직접 들어본 적이 없고, 단어가 가지는 의미를 정확히 모르더라도 문맥상 코더라는 단어가 부정적인 의미를 담고 있다는 것은 감이 올 것입니다.

개발자로 일을 하는데 있어서 어떤 업무를 하는 것이 좋고, 나쁘다를 언급하거나 정의하는 것은 옳지 않다고 봅니다. 다만, 개발자로서 일을 함에 있어서 지양해야 할 부분과 지향해야 할 부분은 분명히 있고, 지양해야 할 성향을 가지고 있는 사람과 지향해야할 성향을 가지고 있는 사람을 구분해기 쉽게하기 위해서 두 단어를 사용할 것입니다.

그동안 프로젝트를 수행하면서 다양한 사람들과 일을 해왔습니다. 겪어본 바로는 프로그램을 만들 때 사람들은 크게 두 가지 패턴으로 나누어졌습니다. 이런 두 가지 패턴의 사람 중 하나는 프로그래머로 다른 하나는 코더로 정의하려고 합니다.

기존에 구성되어 있는 프로그램을 유지보수하거나 기능개선을 하는 경우를 예로 들어보면 새로운 기능을 추가하는 경우나 변경하는 경우 또는 두 가지 모두 필요한 경우, 프로그램은 이미 완성이 되어있으므로 앞의 세 가지 경우에 필요한 로직이나 함수가 존재하고 있는 경우가 대부분입니다. 그래서 개발자는 기존의 적용된 것을 보고 그대로 가져다가 사용하기만 해도 프로그램을 만들 수 있는 경우가 많습니다. 물론, 기존에 작성된 로직이나 함수가 잘 만들어진 경우도 있겠지만 그렇지 못한 경우도 있습니다.

프로그래머 성향의 사람은 기존의 로직이나 함수가 잘 만들어진 것인지를 확인하고 수정해서 사용하거나 하거나 또는 기존에 있는 기능보다 좋게 재구성하여 만들지만 코더 성향의 사람은 그냥 가져다 사용하는 일명 Copy & Paste만으로 끝냅니다. 장기, 바둑, 체스에서 보면 실제 게임에 참석한 사람보다 옆에서 보는 사람이 게임을 잘 파악하는 경우가 많은 것처럼 프로그램도 만들었을 때에는 잘 만들었다고 보여도 다른 사람이 보았을 때 그렇지 못하다고 판단하는 경우가 많은데 하물며 그냥 가져다 쓰는 사람이 만든 프로그램은 오죽하겠습니까. 프로그래머 성향을 가진 개발자가 되려면 부단히 노력을 해서 자기 계발을 해야만 합니다.

어떤 일이라고 하더라도 계획을 아무리 잘 세웠다고 하더라도 처음에 계획된 대로 진행되기는 어렵습니다. 하지만

프로젝트를 경험하면서 느낀 것은 국내에서 진행되는 프로젝트의 특수한 환경 때문에 처음에 계획된 대로 진행되는 경우는 거의 없었습니다. 만들어야하는 프로그램이 기술적인 문제와 같은 어쩔 수 없는 이유로 계획했던 내용을 변경하는 경우라면 어쩔 수 없는 것이겠지만 프로젝트를 발주하는 일명 '갑'이의 요구사항 수정으로 인하여 변경되는 경우가 대부분이었습니다.

갑자기 이런 이야기를 하는 이유는 국내의 개발환경이 개발자를 프로그래머가 아닌 코더로 만드는데 큰 공헌(?)을 한다고 이야기하고 싶어서입니다. 발주처가 프로젝트를 발주할 때 필요한 프로그램이 무엇인지, 어떤 기능들로 구성이 되어야하는지 등에 대한 것을 확실하게 인지하고 진행하는 것이 아니라 대충 "이런이런 기능들로 구성된 프로그램이면 될 것 같아, 필요하면 그때가서 바꾸면 되지" 라는 식으로 시작하다보니 생기는 필연적인 결과로 보입니다.

하지만 환경이 그렇다고 코더 성향을 가진 개발자가 된다면 오래가지 않아 도태될 것입니다.

하루가 멀다하고 바뀌는 프로그램 개발 환경에서 과거에 머물러서 한발도 나가지 않고 자기 계발을 게을리하면 결국은 주변에서의 평판이 나빠질 수 밖에 없고, 국내는 시장 규모가 작은 편이다보니 몇 사람만 거치면 상대방에 대한 이런 평판을 쉽게 알 수 있기 때문에 타의에 의해서든 자의에 의해서든 도태되는 길로 가게될 것입니다.

개발자라면 처음 자신의 손으로 프로그램을 만들었을 때 뭔지 모르게 뿌듯한 감정을 느껴본 적이 있을 것입니다.

이런 감정을 계속 느끼려면 본인이 발전을 해야 가능한 일입니다. 앞으로도 발전하고 싶고, 자신의 역량을 키우려는 노력을 기울인다면 실력뿐만 아니라 금전적인 수입도 좋아질 수 있을 것입니다.

조회수 28회댓글 2개

2 Comments


수정크리
수정크리
Oct 20, 2022

저도 개발자가 되보고 싶은데 어떻게 시작 해야 될지 좀 막막하네요

이제 고작 HTML이랑 CSS 자바 기초정도 배웠는데 어느정도하고 뛰어들어야될지 막막하네여

Like
ToadDe
ToadDe
Oct 21, 2022
Replying to

노동부에서 지원하는 교육과정이 있으니 그쪽에서 공부를 시작해보시는 건 어떨까요..?

Like

IT, TRAVEL, FOOD, 
 DEVELOPMENT  
    AND LIFE

bottom of page