
어느덧 개발 4년 차를 맞이하여, 개발 과정에서의 습관에 대한 저의 생각을 가볍게 정리해 보았습니다. 개인적인 경험과 생각이 반영되어 있어 다른 관점을 가진 분들께는 온전히 맞지 않을 수도 있습니다. 다만, 그동안 현장에서 만난 뛰어난 개발자분들과 각 분야의 우수한 실무자분들에게서 얻은 인사이트를 녹여낸 만큼, 시작하는 단계에 계신 분들께는 자그마한 도움이 되기를 바랍니다.
일상의 생각과 교육 과정에서 배운 내용을 기록합니다.

어느덧 개발 4년 차를 맞이하여, 개발 과정에서의 습관에 대한 저의 생각을 가볍게 정리해 보았습니다. 개인적인 경험과 생각이 반영되어 있어 다른 관점을 가진 분들께는 온전히 맞지 않을 수도 있습니다. 다만, 그동안 현장에서 만난 뛰어난 개발자분들과 각 분야의 우수한 실무자분들에게서 얻은 인사이트를 녹여낸 만큼, 시작하는 단계에 계신 분들께는 자그마한 도움이 되기를 바랍니다.

AI 에이전트는 시작(세팅)과 단순 검증엔 확실히 강합니다. 하지만 여러 갈래를 동시에 끌고 가는 것과 흩어진 산출물을 하나로 수렴시키는 것은 여전히 사람 몫이었습니다. 로컬 wiki는 그 두 약점을 메우는 장치였습니다. 규칙을 파일로 고정해 "매번 설명"을 없애고, 핸드오프로 "매번 복구"를 없애니, 에이전트가 잘하는 부분(빠른 실행)에 시간을 몰아줄 수 있었습니다. 개인화는 결국 "내 프로젝트들이 어떻게 연결되는지를, 나와 에이전트 둘 다 빠르게 찾아볼 수 있게 정리하는 작업"인 것 같습니다.

Python 역시 Java와 마찬가지로 객체지향 프로그래밍(Object-Oriented Programming, OOP)을 지원하는 언어입니다. 클래스(Class)를 기반으로 객체를 생성하고, 객체가 가지는 데이터와 기능을 하나의 단위로 구성하여 프로그램을 설계할 수 있습니다. Python에서는 class를 이용하여 클래스를 정의하고, __init__()을 통해 객체가 생성될 때 필요한 초기화 작업을 수행할 수 있습니다. 또한 상속(Inheritance), 다형성(Polymorphism), 캡슐화(Encapsulation) 등 객체지향 프로그래밍의 주요 개념을 지원합니다. 다만 Java와 비교하면 접근 제어자나 인터페이스 등의 표현 방법에서 차이가 있기 때문에 Python의 문법과 특성에 맞게 객체지향 구조를 이해할 필요가 있습니다. 프로그램을 안정적으로 구성하기 위해서는 객체지향 설계뿐만 아니라 예외처리(Exception Handling) 역시 중요합니다. 프로그램 실행 중에는 잘못된 입력이나 파일 및 네트워크 문제처럼 예상하지 못한 상황이 발생할 수 있으며, 이러한 문제를 적절하게 처리하지 않으면 프로그램이 비정상적으로 종료될 수 있습니다. Python에서는 try, except, else, finally를 이용하여 예외를 처리할 수 있으며, raise를 통해 필요한 상황에서 직접 예외를 발생시키는 것도 가능합니다. 또한 사용자 정의 예외를 만들어 애플리케이션의 상황에 맞는 예외 처리 구조를 구성할 수도 있습니다.

휴식기간과 취업준비로 그동안 쌓아둔 지식을 뽐내고 싶은 마음에 성급하게 ai와 함께 많은 프로젝트를 생성했습니다. 그러나, 진행하다보니 프로젝트 별로 신경써야할 부분이 많이 발생하게 되고 궁극적으로는 어떤 작업을 진행 했던 건지 까먹고 유기하는 일이 반복되고 있었습니다. 그런 일련의 과정을 작성해봤습니다.

Python의 기본 문법과 연산 방법을 이해했다면, 다음으로 살펴볼 부분은 함수(Function)와 자료구조(Data Structure)입니다. 함수와 자료구조는 프로그램의 로직을 구성하고 데이터를 효율적으로 관리하기 위한 가장 기본적인 요소입니다. Python에서는 def를 이용하여 함수를 정의하며, 매개변수와 반환값을 통해 필요한 기능을 하나의 단위로 구성할 수 있습니다. 특히 기본값을 가지는 매개변수, 키워드 인자, 가변 인자(*args, **kwargs), 람다(lambda) 표현식 등 함수를 유연하게 사용할 수 있는 다양한 문법을 제공합니다. 자료구조 역시 Python을 이해하는 데 중요한 부분입니다. 대표적으로 List, Tuple, Set, Dictionary가 있으며 각각 데이터의 순서, 중복 허용 여부, 데이터 변경 가능 여부, Key-Value 구조 등의 차이를 가지고 있습니다. 따라서 단순히 데이터를 저장하는 것을 넘어 데이터의 특성과 사용 목적에 맞는 자료구조를 선택하는 것이 중요합니다. 특히 Java와 비교하면 Python은 자료구조를 선언하고 데이터를 처리하는 문법이 비교적 간결하며, 슬라이싱(Slicing), 컴프리헨션(Comprehension), in 연산자와 같은 기능을 통해 데이터를 직관적으로 다룰 수 있다는 특징이 있습니다.

Python은 간결한 문법과 높은 생산성을 가진 범용 프로그래밍 언어로, 다양한 분야에서 활용되고 있습니다. 특히 NumPy, pandas를 비롯한 데이터 처리 라이브러리와 다양한 머신러닝·딥러닝 프레임워크를 쉽게 활용할 수 있어 데이터 분석, 빅데이터, 머신러닝 등의 분야에서 널리 사용되고 있습니다. Python은 비교적 직관적인 문법을 가지고 있어 입문하기 쉬운 언어이지만, Java와 같은 언어에 익숙한 개발자라면 몇 가지 문법적인 차이를 먼저 이해할 필요가 있습니다. 대표적으로 Java에서는 { }를 이용하여 코드 블록을 구분하는 반면, Python에서는 들여쓰기(Indentation)를 문법의 일부로 사용하여 코드 블록을 구분합니다. 이처럼 익숙한 언어와 비슷해 보이면서도 코드를 구성하고 표현하는 방식에는 차이가 있습니다. 반면 산술, 비교, 논리 연산과 같이 프로그래밍에서 기본적으로 사용되는 연산 방식은 다른 언어와 유사한 부분도 많습니다. 다만 Python만의 표현 방식과 연산자가 존재하기 때문에 이러한 차이점을 함께 알아둘 필요가 있습니다.