You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
> 또 전체적인 프로그램을 미리 신중하게 적어서 생각하는 방향이 옳은지 여부를 확인하기 전에 조각난 코드부터 대책 없이 늘어놓은 다음 그것의 모양을 조금씩 잡아 나가는 방법으로 프로그래밍을 했다.
10
+
> 소설과, 화가, 그리고 건축가의 직업이 그런 것처럼 프로그램이란 전체 모습을 미리 알 수 있는 것이 아니라 작성해 나가면서 이해하게 되는 존재다.
11
+
> 프로그래밍 언어는 당신이 이미 머릿속으로 생각한 프로그램을 표현하는 도구가 아니라, 아직 존재하지 않는 프로그램을 생각해 내기 위한 도구다.
12
+
> 해커에게 필요한 언어는 마음껏 내갈기고, 더럽히고, 사방에 떡칠할 수 있는 언어다.
13
+
> — 해커와 화가
14
+
15
+
그렇다. 코드는 더러워야 한다. 정결한 코드는 아무 의미가 없다. 코드는 더러움 속에서, 혼란 속에서 존재되어야만 한다. 코드에 아이디어를 떡칠해야 한다. 왜 코드 외적인 것에서 아이디어를 피력하고, 생산하는가? 항상 코드 자체에 아이디어를 적어 놓아야 한다. 프로그래머란, 오로지 코드에 어떤 것을 피력해야 한다. 코드 외적인 것에서 놀지 마라. 코드에서 놀아라. 코드는 깔끔해야 한다는 강박을 버려라. 코드는 더러워야 한다.
근래 단일 책임 원칙이 부서지고 있는 듯하다. AI가 각광받음에 따라, 개발자들이 모든 제품에 AI를 다 갖다 붙이는 중이다.
14
+
15
+
Apple도 Xcode 26에 AI를 붙여놓았고, T월드에도 AI 추천이 있으며, 카카오 뱅크에도 AI 챗봇이 있고, 한컴에도 AI가 있고, JetBrains IDE에도 AI가 범벅되어 있다.
16
+
17
+
나는 이렇게 생각한다. 모든 것은 '단일 책임 원칙'을 지켜야 한다. 도대체 왜 IDE에 AI 어시스트가 들어가야 하는가? 코드 작성에만 완전히 집중되어야 하는 것 아닌가? 개발 환경에만 완전히 집중되어야 하는 것 아닌가? 왜 굳이 쓸데없는, 이미 다른 환경을 통해 충분히 사용 가능한 AI를 거기에 굳이 붙여놓는 건가?
18
+
19
+
나는 이해가 되지 않는다. 프로그램은 계속해서 가벼워지고, 빨라지고, 버그가 fix 되어야 하며, 기능은 더욱더 간단해져야 한다. 근데 왜 요즘의 프로그램들은 기능은 점점 불어나며, 이로 인해 버그는 계속해서 증가하고, 앱은 느려지며, 프로그램은 기하급수적으로 큰 용량을 차지하게 되는가? 이는 결국 기능 블로트로 이어진다.
20
+
21
+
그리고 웃긴 것은, AI 랍시고 갖다 붙여 놓았으나, 막상 사용해 보면 LLM 모델에 대한 API 호출이다. 그냥 호출하고 필요에 맞게 조작해놓은 것을 AI랍시고 갖다 붙여놓은 거다. 자체 모델을 구축하려는 시도조차 하지 않는 데, 이게 뭔 AI 기능인가?
22
+
23
+
시대가 아무리 봐도 역행하는 듯하다. 단일 책임 원칙은 아마 10년 전이 더 잘 지켜진 듯하다. 하나의 것은 하나의 일만 해야 한다. 하나의 것들이 모여 새로운 일을 해야 한다.
나는해커톤을 하기 몇 주 전부터 뭐가 주제로정해질 지 많이 걱정했다.그렇지만,해커톤이시작한 후 주제를알려주는데16가지나주어 저그렇게문제가되지는않았다.그러니해커톤은 그저 개발과아이디어만 잘 짜면 된다.
7
+
## 주어질주제에 대해 지나치게신경 쓰지 마라
8
+
나는해커톤을 하기 몇 주 전부터 뭐가 주제로정해질 지 많이 걱정했다.그렇지만,해커톤이시작한 후 주제를알려주는데16가지나주어 저그렇게문제가되지는않았다.그러니해커톤은 그저 개발과아이디어만 잘 짜면 된다.
9
9
10
10
## 많이 생각하라
11
-
해커톤이시작되자 마자 여러 주제들을참여자에게전달할것이다. 나 같은 경우는6시간이제공되었는데, 나는 6시간 중에 2시간을아이디어에 쓰고 말았다
12
-
많이긴장한탓인데,그래도 꽤 좋은 아이디어를생각해 내어 값진 결과를 얻은 것 같다
13
-
그러니해커톤에서수상을원한다면 내가 개발하기 쉬운 아이디어가 아닌 사용자를 위한 아이디어를생각해야한다.
11
+
해커톤이시작되자 마자 여러 주제들을참여자에게전달할것이다. 나 같은 경우는6시간이제공되었는데, 나는 6시간 중에 2시간을아이디어에 쓰고 말았다
12
+
많이긴장한탓인데,그래도 꽤 좋은 아이디어를생각해 내어 값진 결과를 얻은 것 같다
13
+
그러니해커톤에서수상을원한다면 내가 개발하기 쉬운 아이디어가 아닌 사용자를 위한 아이디어를생각해야한다.
14
14
15
-
나는이것이개발자가지녀야할하나의습관이라고생각한다.우리가개발을할 때는 항상 쉽게 개발할 수 있는 아이디어만생각한다. 나 또한 그렇다.예시로는 굳이 슬라이드방식으로이미지는넘기는보다는버튼을 두어 개발하는 것이 편하다.그렇지만사용자는슬라이드형식으로넘기는형식이 매우 편할 것이다.이처럼개발자는사용자가 쓰기 편한 앱을 만들어야한다.
15
+
나는이것이개발자가지녀야할하나의습관이라고생각한다.우리가개발을할 때는 항상 쉽게 개발할 수 있는 아이디어만생각한다. 나 또한 그렇다.예시로는 굳이 슬라이드방식으로이미지는넘기는보다는버튼을 두어 개발하는 것이 편하다.그렇지만사용자는슬라이드형식으로넘기는형식이 매우 편할 것이다.이처럼개발자는사용자가 쓰기 편한 앱을 만들어야한다.
16
16
17
17
## 일단 구현하라
18
-
나는개발을클린코드를하면서 하는 편이다.코드를분할하고,나누고,고친다.그렇지만 내가 느낀 바로는해커톤에서는일단은 내가 제출한코드가 아주 멍청한코드여도동작되기만 하면 일단은해커톤에서는 좋은 성적을거둔다는것이다.일단은 내가 원하는 것이 구현만된다면,해커톤에서는 별 문제가 없을 것이다. 내가 해커톤에서놀랐던 점은 거의 과반수이상의 팀이 제대로 된 앱을 구현하지않았다는점이다.그저구현하지 않은 상상의 앱을 그려 발표하는 것을 보고 나는 좋은 아이디어 보다 구현이얼마나중요한지 이번 해커톤을계기로깨달았다.
19
-
그러니일단은기능을구현해야한다.그렇지만, 버그 없이 구현되어야한다.버그가있다면, 수상 하는 것은 힘들 수도 있을 것이다.
18
+
나는개발을클린코드를하면서 하는 편이다.코드를분할하고,나누고,고친다.그렇지만 내가 느낀 바로는해커톤에서는일단은 내가 제출한코드가 아주 멍청한코드여도동작되기만 하면 일단은해커톤에서는 좋은 성적을거둔다는것이다.일단은 내가 원하는 것이 구현만된다면,해커톤에서는 별 문제가 없을 것이다. 내가 해커톤에서놀랐던 점은 거의 과반수이상의 팀이 제대로 된 앱을 구현하지않았다는점이다.그저구현하지 않은 상상의 앱을 그려 발표하는 것을 보고 나는 좋은 아이디어 보다 구현이얼마나중요한지 이번 해커톤을계기로깨달았다.
19
+
그러니일단은기능을구현해야한다.그렇지만, 버그 없이 구현되어야한다.버그가있다면, 수상 하는 것은 힘들 수도 있을 것이다.
20
20
21
21
## 발표 자료는 그렇게 중요하지 않다
22
-
내가생각하기로해커톤에서 가장 까다로운 점은 개발도,아이디어도 아닌 발표 같았다.그렇지만 이번 해커톤으로 나는 깨달았다.해커톤에서발표는 그저 힌 바탕의 발표 자료로도이해만편하다면,결과물만우수하다면 아무 상관은없다는것이다.
23
-
발표자료는시간이없다면, 그냥 Keynote로만만들어서발표해도상관없다.그러니구현한결과물에만신경 쓰길바란다.
22
+
내가생각하기로해커톤에서 가장 까다로운 점은 개발도,아이디어도 아닌 발표 같았다.그렇지만 이번 해커톤으로 나는 깨달았다.해커톤에서발표는 그저 힌 바탕의 발표 자료로도이해만편하다면,결과물만우수하다면 아무 상관은없다는것이다.
23
+
발표자료는시간이없다면, 그냥 Keynote로만만들어서발표해도상관없다.그러니구현한결과물에만신경 쓰길바란다.
Copy file name to clipboardExpand all lines: content/에세이/힙하게 코딩하는 방법.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,5 @@
1
1
---
2
-
date: 2025-10-09
2
+
date: 2022-06-05
3
3
category: [에세이]
4
4
published: true
5
5
fixed: false
@@ -74,4 +74,4 @@ inputElement.addEventListener('keydown', e =>
74
74
이 처럼 코드적인 값으로 많은 기능을 추가하고 선언하다 보다면 나도 헷갈릴 수도 있고, 협업의 과정에서도 어려움이 생길 수도 있다. 그러니 웬만하면 코드적인 값은 변수에 담아서 사용하는 것이 좋다.
75
75
76
76
## 최대한 사용자의 관점에서 바라보고 개발한다
77
-
개발은 내가 구현하고 싶은 로직을 구현하고 싶어서 개발하는 것이 아니다. 또 내가 편하게 스타일 로직을 구현하고 싶어서 쉽게 마크업을 구성하는 것은 개발이 아니다. 그것은 그냥 내가 구현하고 싶은 기능과 레이아웃이며 사용자를 위한 로직과 레이아웃이 아니다. 모든 기능과 레이아웃 들은 사용자를 위해 개발되어야 한다. 만약, 사용자를 무시한 채로 개발된다면 그 프로덕트는 성공하지 못할 것이다. 만약 그 프로덕트가 성공하였다고 해도 그것과 기능적인 측면은 비슷하지만 사용자 친화적인 다른 프로덕트로 사용자들은 언젠가 넘어갈 것이다.
77
+
개발은 내가 구현하고 싶은 로직을 구현하고 싶어서 개발하는 것이 아니다. 또 내가 편하게 스타일 로직을 구현하고 싶어서 쉽게 마크업을 구성하는 것은 개발이 아니다. 그것은 그냥 내가 구현하고 싶은 기능과 레이아웃이며 사용자를 위한 로직과 레이아웃이 아니다. 모든 기능과 레이아웃 들은 사용자를 위해 개발되어야 한다. 만약, 사용자를 무시한 채로 개발된다면 그 프로덕트는 성공하지 못할 것이다. 만약 그 프로덕트가 성공하였다고 해도 그것과 기능적인 측면은 비슷하지만 사용자 친화적인 다른 프로덕트로 사용자들은 언젠가 넘어갈 것이다.
0 commit comments