brunch

기획을 위한 최소한의 개발 지식 (2)

프로그래밍 언어

by Innobanker

목차


✅ 컴퓨터의 구성 요소와 운영체제

✅ 프로그래밍 언어 ⬅︎

✅ 네트워크, 클라이언트, 서버

✅ 스크래핑, API, JSON

✅ App 과 Web

✅ 네이티브, 리액티브, 웹앱, 하이브리드

✅ 데이터베이스

✅ 프레임워크, 라이브러리

✅ 개발팀 협업 방법

✅ 클라우드


기획자가 프로그래밍 언어를 왜 알아야 할까?


앞서 정리했던 컴퓨터의 구성 요소와 운영체제에 대한 지식은 앱 출시를 기획 및 배포하고, 버그를 수정하는 등 여러 실질적인 방면에서 아예 모르면 대화 자체가 불가능할 정도의 필수적인 지식이다. 그런데 프로그래밍 언어는 몰라도 기획하고 프로젝트 리딩을 할 수 있다. 다만 기획의 많은 요소 중에 '완성도'를 높이고 개발에게 '덜 까이는' 기획을 할 수 있게 도움을 준다. 개발자의 사고 방식을 엿볼 수 있기 때문이다.


일을 하면서 가장 뼈저리게 느꼈던 건 개발자의 작업 방식을 이해하고 합리적인 기획을 하는 것도 중요하고, 기획자가 개발에 대해 좀 안다고 해서 개발자의 영역을 침범해서도 안 된다는 것이었다. 기획이 너무 세세한 부분까지 제어하려고 하면 개발의 자유도를 떨어뜨릴 수 있다. 개발자분들이 얼마나 똑똑한가. 기획자가 생각지도 못한 해결 방안을 들고 와서 놀래키는 경우가 다반사다.


실질적으로 실무에서 'PHP 로 되어 있어서 점점 더 버그가 많아져요' 라고 한 마디 했을 때 기획자는 이걸 이해하기 위해 무엇부터 해야 하는지 막막할 수 있다. 스타트업 등에서 초반에 시스템을 구축할 때 PHP를 이용해서가볍고 쉽게 만들 수 있지만 서비스가 커질 수록 버그도 많아지고 안전성도 떨어지기 때문에 결국에는 교체하게 되는 경우도 있다.


기획자가 PHP 의 특성을 이해한다면 (1) 최근에 생기는 버그가 일 주일 정도면 바꿀 수 있는 간단한 문제인지 가늠할 수 있고 (2) 현 시스템 하에서 어떤 방식으로 기획해야 버그가 덜 생기는지 알 수 있고 (3) 혹시 회사에서 레거시 프로젝트를 하면서 리팩토링 즉 아키텍처를 바꿔야 할 경우에 어떤 변화가 어떤 방식으로 이루어지는지 구체적으로 알 수 있기 때문에 미리 어떤 데이터를 어떻게 백업하도록 사업부서와 협의하는 등의 차이가 생긴다.


☑️ 운영체제 - 프로그래밍 언어 - 프로그램


컴퓨터를 동작시키는 운영체제는 제조사 별로 MS의 windows, Apple의 Mac OS 와 iOS, Google 의 Android 가 있다. 이 위에서 돌아가는 PowerPoint 같은 '프로그램'을 제작하기 위해서는 사람의 말을 컴퓨터의 언어인 '소스코드'로 바꿔 주는 '프로그래밍 언어'가 필요하다. 운영체제 별로 사용할 수 있는 프로그래밍 언어가 다르다.


Windows : C#, Visual Basic, C++, JavaScript

Mac OS & iOS : Objective-C, Swift

Android : JAVA, Kotlin


창업자, PM, 서비스기획자 등 기획자의 롤은 어떤 운영체제에서 동작하는 프로그램을 만드는 것이 비즈니스 목적 달성에 가장 적절한지 CTO 와 상의해서 정하는 것 까지이고, 어떤 언어로 제작할지는 CTO 의 몫이다.


☑️ 고수준 - 저수준 언어 : 고수준 언어일 수록 사람의 언어인 영어와 비슷하고, 저수준 언어일 수록 컴퓨터의 언어인 이진법과 비슷하다. C와 JAVA 는 대표적인 고수준 언어이다.


☑️ 컴파일러 언어와 인터프리터 언어 : 컴퓨터의 언어를 실행 방식의 측면에서 구분한 것이다. C와 JAVA 등의 컴파일러 언어는 기계의 언어인 소스코드로 일괄 변환 후 실행이 되기 때문에 속도는 빠르지만 메모리를 많이 사용하고 플랫폼이 바뀔 때마다 코딩을 해야 한다. Basic과 Python 등 인터프리터 언어는 실행할 때마다 변환하기 때문에 반대로 속도가 느리지만 메모리를 적게 차지하고 플랫폼에 덜 의존적이다.


☑️ JVM (Java Virtual Machine) 과 Python : 어떤 운영체제에 설치해도 프로그래밍이 가능하다. 다만 범용프로그램 위에서 프로그램을 돌리는 거라 속도 면에서 떨어진다. 모바일은 aOS 와 iOS 로 시장이 양분되어 두 가지 버전으로만 개발하면 되고 속도가 중요하기 때문에 JVM을 PC 에 비해 덜 활용한다. Python은 인간 친화적인 언어로 익히기 쉽고 다른 언어와 혼합하여 사용할 수 있다.


☑️ C, C#, C++ : C는 워드프로세서 처럼 범용 프로그램이나 시스템 구축 시에 많이 쓰이고, C#와 C++는 객체지향 프로그래밍으로 빠른 처리나 네트워크를 통한 자료 교환이 필요할 때 사용한다. 객체지향 이란 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 객체지향을 활용하면 코드 재사용이 용이하고, 유지보수가 쉬우며, 대형 프로젝트에 적합하다.


사실 이 지식만으론 부족하다. 객체지향 프로그램을 활용하여 프로젝트를 진행한다면 실무에서 개발자분이 "클래스가 어쩌구.. 인스턴스가 어쩌구.." 할 테니까. 그 때 이렇게 공부한 게 빛을 발하게 된다. 객체지향에 대한 이해가 있다면 클래스와 인스턴스에 대한 지식만 얹어서 비교적 빠르게 이해할 수 있다.


참고 자료


<비전공자를 위한 이해할 수 있는 IT 지식>, 최원영, 2021.02.01., T.W.I.G.

<php 언어에 대해 간단히 정리>, dhhyy, 2022.1.19., https://velog.io/@dhhyy/php-%EC%96%B8%EC%96%B4%EC%97%90-%EB%8C%80%ED%95%B4-%EA%B0%84%EB%8B%A8%ED%9E%88-%EC%A0%95%EB%A6%AC

<[edu]IT 기본지식(스타트업, 기획자, 디자이너)>, burningrizen, 2018.08.30. https://burningrizen.tistory.com/38

<[NDC2014] 기획자와 프로그래머, 서로를 이해하는 첫 번째 키워드는 '시간'>, 이종훈 기자, 2014.05.29., https://www.inven.co.kr/webzine/news/?news=110945

<프로그래밍 언어별 특성>, Escape1004, 2021.8.4., https://escape-story.tistory.com/25

<객체 지향 프로그래밍이 뭔가요? (꼬리에 꼬리를 무는 질문 1순위, 그놈의 OOP)>, JEONG_AMATEUR, 2017.11.15., https://jeong-pro.tistory.com/95


keyword
작가의 이전글하고 싶은 대로 되지 않더라도