'소프트웨어 개발자' 질을 높이는 10가지 IT지식

'소프트웨어 개발자' 질을 높이는 10가지 IT기본 지식

by JoVinCi
소프트웨어 개발자_10개 지식.jpg


위의 그림은 필자 IT 분야에 공부 및 실무를 하면서 필자 나름대로 정리한

'IT(Information Technology) 지식 계층 MAP'이다.

1) 저 수준 계층: 컴퓨터 구조, 운영체제, 네트워크

2) 고 수준 계층: 데이터베이스, 프로그래밍 언어론, 자료구조와 알고리즘

3) 개발 생산성 관리 계층: 소프트웨어 공학

4) 응용 계층: 디지털 보안, 디지털 융합(BigData, Cloud, AI, IoT, ICT), 경영 솔루션

IT(Information Technology) 지식은 이렇게 4가지 계층으로 나누어진다.

노란색으로 표시한 것은 기본지식에 해당하고 연 파란색으로 표시한 것은 응용분야 에 해당한다.


이 지식들을 모두 공부해야 소프트웨어 개발을 할 수 있는 것은 아니다.

소프트웨어 개발은 누구나 할 수 있다.

실제 컴퓨터에 대한 이해가 전혀 없이 정부 과정 6개월 정도 학습을 거치면

소프트웨어 개발할 정도의 능력을 쌓을 수 있다.


하지만 여기서 모든 것이 해결되는 것이 아니다. 1 ~ 2년 이상 지나면 내공의 부족함을 깨닫게 된다.

소프트웨어 개발에 따른 다양한 이슈를 소화하고, 실제 기술의 장단점을 논하기 위해서는 조금 다른 지식이 필요하다.

예를 들면 개발된 소프트웨어의 실행을 효율을 향상시키기 위한 성능 튜닝, 이식, 소프트웨어 설치와 배포 등 소프트웨어 개발 만으로는 해결되지 않는 상황이 많다는 사실을 깨닫게 된다.

이때 IT기본 지식의 중요성을 실감하게 된다.



■소프트웨어 개발자에 필요한 10가지 IT기본 지식

1)컴퓨터 구조(Computer Architecture)

컴퓨터의 기본적인 하드웨어의 동작 원리와 구성에 대한 내용을 다루는 지식이다.

CPU, 메모리, 입출력의 구성이나 주변 장치와 통신 방법과 부울 대수(Boolean Algebra) 와 논리 표현을

배우고, 이를 하드웨어로 어떻게 구현하는지 배우고 집적회로(IC)의 동작원리를 배운다.

- 대표적인 교재: 컴퓨터시스템구조론 - 윌리엄 스탈링스 (지은이),

컴퓨터구조론 (김종현) - 김종현(지은이)


2)운영체제(Operating System)

컴퓨터와 운영체제의 구조, 가상기억 장치, 멀티태스킹, 프로세스 스케줄링, 스레드 등의 기본 개념 및 이들과 관련된 이슈를 다루는 지식이다.

대표적인 운영체제는 윈도우, 유닉스, 리눅스, Android, iOS 등이 있다.

- 대표적인 교재: Operating System Concepts -

Abraham Silberschatz,Greg Gagne,Peter B. Galvin (지은이),

“공룡책” 이라고 하면 아는 사람은 다 안다.


3)네트워크(Network)

네크워크의 기본 이론이 되는 OSI(Open System Interconnection) 7 Layer 내용과 프로토콜에 관련된 다루는 지식이다.

- 대표적인 교재: 쉽게 배우는 데이터 통신과 컴퓨터 네트워크 - 박기현 (지은이)


4)데이터베이스(Database System)

관계형 데이터베이스 구조와 동작에 관련 것을 공부하며, 정규화 방법, 데이터 설계(ERD 작성 등), 튜닝

등에 필요한 여러 가지 이론을 다루는 지식이다.

- 대표적인 교재: Database System Concepts-Henry F. Korth, Abraham

Silberschatz (지은이), 데이타베이스론 - 이석호 (지은이)


5)프로그래밍 언어론(Programming Languages)

각종 언어의 특성을 서로 비교하며 프로그래밍 언어의 문법 및 데이터 타입 등을 다루는 지식이다.

- 대표적인 교재: Concepts of Programming Languages – Robert W. Sebesta (지은이)

프로그래밍 언어 개념 - 원유헌 (지은이)


6)자료구조와 알고리즘(Data Structure and Algorithm)

자료구조는 데이터들을 저장하는 방법을 다루는 지식이다.

알고리즘은 자료구조를 기반으로 데이터들의 검색, 정렬을 통해서 복잡도를 분석하는 지식이다.

일반적으로 소프트웨어를 개발할 때 자료구조를 직접 설계하거나 구현할 필요성은 줄어들고 있다.

자료구조의 많은 내용이 클래스 라이브러리로 구축되어 있어 활용하는 하고 있기 때문이다.

예를 들면

C++에서는 CArray, CList, CMap 등이 있고

JAVA에서는 Collection에서 Vector, Hashtable 등이 있고

C#에서는 Collection에서 ArrayList, Hashtable, Dictionary 등이 있다.


하지만 자료구조는 적어도 양방향 리스트를 자신이 사용하는 언어로 직접 개발하는 수준까지 해봐야 한다.

그 이유는 대부분의 소프트웨어 개발자가 메모리 기반의 정렬과 탐색 알고리즘은 기본적으로 공부하지만,

실제로나 실무적으로나 파일 기반의 정렬과 탐색이 더 중요하기 때문이다.

따라서 정렬은 파일 기반의 병합 정렬 정도까지 마스터하는 것이 좋다.

- 대표적인 교재: 이쪽은 워낙 관련 책들이 많이 있기 때문에 자신의 수준에 맞는 책들 찾아서 보면 된다.

쉽게 공부 하려면 "그림으로 공부하는 알고리즘" 괜찮다.


7)소프트웨어 공학(Software Engineering)

소프트웨어 개발 생명 주기를 기반으로 요구분석, 소프트웨어 설계, 소프트웨어 구현, 소프트웨어 시험 등

여러 과정과 각 과정에서 발생하는 이슈를 다루는 지식이다.

- 대표적인 교재: 소프트웨어 공학 - 최은만(지은이)


8)디지털 보안(Digital Security)

4가지로 나누어질 수가 있다.

관리적 보안, 물리적 보안, 기술적 보안, 소프트웨어적 보안이다.

관리적 보안은 예를 들면 "패스워드 몇 자리 이상, 대문자, 특수문자" 관리적 차원에서 그렇게 룰을

정하기 때문에 관리적 보안 역할을 한다.

물리적 보안은 예를 들면 "컴퓨터에 자물쇠 채우기" 가 관리적 보안 역할을 한다.

기술적 보안은 예를 들면 "윈도우 방화벽, 하드웨어적 방화벽" 이 기술적 역할을 한다.

소프트웨어적 보안 예를 들면 "V3, 알약" 같은 소프트웨어가 보안적인 역할을 한다.


9)경영 솔루션(Enterprise Solutions)

경영 솔루션은 소프트웨어적으로 경영에 관여하는 소프트웨어 솔루션을 말한다.

예를 들면 대표적인 경영 솔루션은 ERP(Enterprise Resource Planning)가 있다.

그리고 우리가 일반적으로 사용하는 V3, 알집 등은 보안 솔루션으로 설명할 수가 있다.

엑셀, 파워포인트 등은 워드프로세서 솔루션이라고 할 수가 있다.

이 모든 것들이 다 경영 솔루션에 포함이 된다.


10)디지털 융합(Digital Convergence)

디지털 융합은 하드웨어, 소프트웨어, 통신 등의 여러 가지를 융합하여 서비스를 만드는 것이다.

대표적인 디지털 융합으로 응용되는 분야인

BigData, Cloud, AI(Artificial Intelligence), IoT(Internet of Things),

ICT(Information and Communication Technology),

블록체인(Block Chain), NFT(Non-Fungible Token)

등이 있다.



■'소프트웨어'도 하나의 상품이다.

자료구조와 알고리즘(Data Structure and Algorithm)은 응용 수준까지 알아야 한다.

소프트웨어 공학(Software Engineering)도 개발자를 넘어서 설계 수준까지 알아야 한다.

데이터베이스(Database System)도 설계 수준까지 알아야 한다.


나머지

컴퓨터 구조(Computer Architecture),

운영체제(Operating System),

네트워크(Network),

프로그래밍 언어론(Programming Languages)

지식은

시험공부하는 것처럼 공부할 필요 없이 개념을 이해하면 된다.

그러면 실무에서 일을 하다 보면 이론+실무가 되면서 알고 있는 지식들의 응용이 가능할 것이다.


경영 솔루션(Enterprise Solutions),

디지털 융합(Digital Convergence),

디지털 보안(Digital Security),

지식은 항상 변하게 되는 것들이다.

실무 소프트웨어 개발하는 범위도 3가지 범주 내에서 소프트웨어 개발을 하게 된다.


7가지 기본 지식이 있어야 응용이 가능하며 빠르고 유연하게 대처할 수가 있다.

즉, 변하는 것과 변하지는 않는 것을 구분해야 문제에 대해 빠르게 대응할 수가 있다는 것이다.


결국 '소프트웨어 개발'도 최종 목적은 '경영 솔루션(Enterprise Solutions)'이다.

즉, 하나의 상품을 만드는 것이다.

그래서 상품의 질을 높이려면 위에서는

언급한 10가지 IT기본 지식을 제대로 알고 있어야 품질이 높은 소프트웨어가 나올수 있다.


keyword
작가의 이전글내가 좋아 하는 일 '소프트웨어 개발'