나빌레라의 프로그래밍하기 #1

나빌레라의 이미지

1. 원칙
군대를 전역하고 복학하기 전까지 아무런 할 일 없이 놀고 있을 때가 있었다. 그 때, 나는 내 삶의 큰 원칙을 하나 세우게 된다.

[돈을 벌기 위한 프로그래밍 외에, 언제나 항상 내 개인 프로젝트를 하자.]

처음에는 삼 일짜리. 일 주일짜리로 자잘하게 하다가 어느 날 크게 마음 먹고 일년짜리를 했었다. 그 일년 동안 물론 나는 학교도 다니고 알바도 하면서 돈을 벌기위한 프로그래밍을 동시에 했다. 그리고 그때까지 개인 프로젝트는 항상 프로그래밍이었는데, 그 이후로 개인 프로젝트의 범위를 넓혀서 글을 쓰기 시작했다. 그 성과물로 나온 것이 내 첫 저작물(http://insightbook.springnote.com/pages/2780056)이다.

그리고 개인 프로젝트를 할 때는 항상 내가 할 줄 모르는 분야나 내가 할 줄 아는 분야라 하더라도 내가 해보지 못했던 기술적 요소를 꼭 집어넣어서 목표를 세웠다.

예를들어, 나는 그 전에도 8비트 마이컴으로 임베디드 프로그래밍으로 돈을 버는 프로그래밍을 해 보긴 했지만 32비트 ARM으로 프로젝트를 해 본적은 없었다. 그리고 리눅스 디바이스 드라이버로 돈을 버는 프로그래밍을 해보긴 했지만 더 깊숙한 커널을 만져본적은 없었다.

이 두 가지 경험을 융합하고 내 두 번째 원칙을 적용해서 목표를 세웠다. 32비트 ARM 프로세서를 사용하는 임베디드 프로그래밍을 하되 운영체제의 커널을 이해할 수 있는 프로젝트를 하자는 것이었다.

더불어 꼭 프로그래밍이 아니어도 좋다고 원칙을 수정한 이후로 글을 쓰기 시작하면서 한글 맞춤법 및 문장법에 대한 공부도 할 수 있게 되었다. 나는 여느 엔지니어들 보다 내가 강점으로 가지는 것으로 기술적 능력이나 영어가 아니라 글쓰기라고 감히 말하곤 한다.

세 번째 원칙은 이론적 공부를 필요로하는 목표를 세웠다. 두 번째 원칙이 기술적 성취에 비중을 두고 있다면, 세 번째 원칙은 이론적 성취에 비중을 두고 있다. 목표로하는 이론은 대단한 것이 아니어도 상관없다. 학교 다닐 때 수업 용으로 샀던 교재를 다시 한 번 펼쳐 볼 수 있는 수준의 이론이면 된다. 우리가 학교 교재를 다시 펴 볼일이 그렇게 자주 있는 일은 아니지 않은가.

임베디드 운영체제를 만드는 일은 잘 연구된 운영체제의 개념을 아주 작고 간단하게 개념만 구현해야 하는 것이 중요했다. 그래서 나는 그 때 프로젝트를 진행하면서 아주 오래간만에 운영체제 수업시간에 샀던 교재를 제대로 완독하는 기회를 가질 수 있었다.

네 번째 원칙은 다른 사람에게 도움이 될 수 있을 만한 프로젝트를 하자는 것이다. 어차피 돈을 벌기 위한 목적이 아닌 이상 스스로의 만족을 가장 중요하게 여겨야 하는데, 그 중 한가지는 "나눔"이다. 선천적으로 돈에 대한 욕심이 많아서 기부를 하거나 뭘 기증하진 못하지만 돈 안드는 지식을 나누는 것으로 나눔에 대한 부채의식을 스스로 해소하며, 나눔으로 얻는 만족을 어느정도 느낄 수 있다고 자기 최면을 걸곤 한다.

나는 네 개의 원칙을 가지고 있다.

1. 돈을 벌기 위한 프로그래밍 말고, 돈을 벌지 못하더라도 꾸준히 자기를 위한 프로젝트를 한다. 그 프로젝트라는 것은 꼭 프로그래밍이 아니어도 좋다.
2. 해 보지 못한 기술적 성취를 할 수 있도록 프로젝트의 목표를 세운다.
3. 학교 다닐 때 재미 없다고만 느꼈던 이론 공부를 한 번 더 할 수 있도록 프로젝트 목표를 세운다.
4. 다른 사람에게 도움이 될 수 있을 만한 프로젝트를 한다.

이제 어떤 프로그램을 만들게 될지 목표와 컨셉을 잡아야 하는데, 이렇게 원칙을 세워 놓고 목표를 세우면 머릿속이 훨씬 명확해 진다. 이 글을 읽고 있는 여러분들도 각자 자신만의 원칙을 세워보기 바란다. 원칙은 굳이 여러 개일 필요 없다. 단 한개라도 좋다.

PS. 각자 세운 원칙을 댓글로 달아서 나눠 보는 것도 좋겠네요. ^^

====
이 글은 CC이지만 다른곳에 불펌은 하지 말아 주세요. KLDP와 raonlife에(http://raonlife.com/navilera/blog/view/51/)만 연재합니다. 다른 곳에 연재되어 있는 것은 불펌이오니 저에게 알려주세요.

댓글

k333ps의 이미지

배울만 한 점이라고 생각합니다.

런맨의 이미지

블로그 잘 보고 있습니다. 좋은 원칙이네요.

저도 한번 생각해봐야겠습니다.....이런글 보면 전 인생을 헛살은거 같습니다 ㅜㅜ

인생은 도박이다.

Fe.head의 이미지

저두 그런것 같아서.. 글달기가 두렵습니다.. OTL

고작 블로킹 하나, 고작 25점 중에 1점, 고작 부활동
"만약 그 순간이 온다면 그때가 네가 배구에 빠지는 순간이야"

gloomyr의 이미지

늘 머리속에만 있던 생각이네요 ㅡ.ㅜ
어떻게 행동으로 옴기셨는지 존경합니다.

mikelim의 이미지

저도 저를 다시 한번 돌이켜 봐야겠습니다..

jeongheumjo의 이미지

위인전에서 읽어볼 만한 구절들 같아요.
존경스럽습니다.
올리시는 글들 많이 못봤었는데 찾아서 잘 읽어보겠습니다.
저는 별다른 원칙같은거 없었습니다.
그 눈코뜰새 없이 바쁜 회사에서 일하시면서 이런 일들을 하시는게 신기하고 부러울 따름입니다...
아마 내공이 많으시니 회사일도 쉽게쉽게 하시겠지요..

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.