프로젝트를 완성하는 힘

in #programming4 years ago

20201220

어제는 프로그램을 짜는데 해야 할 일 목록을 작성하고는 옆길로 샛다.

흔들리지 않고 즐거운 마음으로 처음부터 끝까지 몰입해서 프로그램을 완성시키는 방법은?

  • 자고 일어났을 때처럼 깨끗해진 마음

  • 최근에 입력된 자극, 단어 중 지금 목표와 관련이 적고 예전 관심사와 관련된 것,

  • 당장 실행해야 하는 것은 아니지만 목표와 관련 있다고 유혹하는 것들을 처리하는 법,

  • 우선 순위 정하고 미루는 법

  • 코끼리를 생각하지 말아야 할 때 외우는 주문, 걱정거리나 잡념을 지우는 주문, 지금 실천하고 목표하는 것 되뇌기

  • 프레임 좋은 습관 태도

  • 지루한 그림과 글을 완성하는 힘, 태도, 마음가짐

  • 목표와 그에 따른 하위 목표들 세우기

  • 우선순위 정리, 정돈, 청소

  • 코멘트, 주석과 실행 코드 번갈아 작성

  • 주기적인 휴식, 충전, 동기부여, 자극, 명상


image.png


글을 완성하는 방법


https://m.hibrain.net/braincafe/cafes/1001/posts/321/articles/49701

대개 글쓰기를 싫어하는 미숙한 필자들은 일단 글쓰기를 시작해야 하는 단계가 되면 첫 문장을 시작하는 데에 상당한 어려움을 겪는다.

시행착오 전략에 따라 첫 문장을 쓰는 데에 많은 시간을 소비하는가 하면, 대번에 완벽한 초고를 써야 한다는 강박증으로 어려움을 겪기도 한다.

또 자료 수집이나 수집된 자료를 바탕으로 한 메모 없이 글을 써야 하기 때문에 순간순간 떠오르는 생각에만 의존해서 글을 쓸 수밖에 없다.

미숙한 필자들은 대개 글쓰기를 일련의 과정과 절차에 따라 수행하기보다는 글을 쓰는 데에 거의 시간을 들이지 않으면서 앉은 그 자리에서 떠오르는 생각을 중심으로 글을 완성해 버린다.

항상 시간에 쫓겨서 글쓰기를 시작하기 때문에 글을 꼼꼼히 고쳐 쓰는 경우가 거의 없으며 대개 초고가 그대로 제출본이 된다.

능숙한 필자의 쓰기 과정

  • 글쓰기 과정 자체를 일련의 목표 지향적 활동으로 파악한다.

  • 작업 구상 단계부터 자기 나름대로 목표 의식을 가지고 글의 핵심적 주제를 설정하고 이를 중심으로 사고의 흐름을 전개해 나간다.

  • 일단 글쓰기의 주제와 방향이 잡히면 충분한 시간을 두고 일찌감치 글쓰기 과정에 착수하여 계획하기 단계에 많은 시간과 공을 들인다.

  • 주제와 관련된 충분한 자료를 전략적으로 찾아서 읽고 이를 바탕으로 틈틈이 메모를 하고 개요를 작성한다.

  • 머릿속에 있는 막연한 사고를 자료를 찾아서 읽어 나가는 과정을 통해서 더욱 구체화하는 것이다.

  • 전략적인 사고를 하고 이를 바탕으로 글의 가닥을 잡아 나간다.

  • 첫 문장을 어떻게 써야 할까를 고심하기보다는 고쳐 쓰기 단계를 염두에 두고 글에서 해야 할 이야기들의 내용을 중심으로 일단 초고 형태로 글을 쓴다.

  • 글의 개요와 메모에 의지해서 글을 쓰기 때문에 글이 좀처럼 원래 목표했던 중심 생각에서 벗어나 엉뚱한 방향으로 나아가지 않는다.

  • 능숙한 필자들은 계획하기 단계 못지않게 고쳐 쓰기 단계에 많은 시간을 들인다.

  • 의미 구성 행위를 본질로 하는 글쓰기 능력은 단순히 의미를 문자 언어로 표현하고 전달하는 차원을 넘어서서 쏟아져 나오는 정보를 처리하고 이를 바탕으로 유용한 지식을 새롭게 창출해 내는 지식 생산 능력의 의미까지도 포함

  • 표현 능력의 하나인 글쓰기 능력은 자신의 생각을 논리적인 언어로 정확하고 설득력 있게 전달할 수 있는 의사소통 능력일 뿐만 아니라 사고를 언어로 옮겨서 표현해 내는 고등 정신 기능을 바탕으로 하는 고차원적인 문제 해결 능력이라 할 수 있다.

----​

리펙토링(일단 쓰고, 고쳐 쓰기)

프로그램 구조

  • 입력. 변수 세팅

  • 처리. 자동선택

  • 출력. 다듬기

프로그램 작성 규칙

  • 타인과 미래에 재활용하고 유지 보수할 자신을 위해

문법, 형식에 맞게 이쁘게 잘 짜자

  • 꼼꼼하게 코멘트, 주석 달기

  • 중간중간 오류 체크 추가

  • 일단 즐겁게 프로그래밍하기, 과정과 일을 즐기기

  • 넘어지는 것에 대한 두려움 없이 자신감 있게 시작하기

  • 마주하는 수많은 오류와 난관은 당연한 것이므로 스트레스받지 말고 극복하기

  • 원하는 것을 찾는 끈질긴 질문과 아이디어로 목표하는 기능 구현 달성하기

  • 기능에 맞고 누가 봐도 보기 좋고 이쁜 디자인 찾기

  1. 질문하고, 찾고, 선택하기 반복

  2. 목표에 따른 하위 목표와 중간 결과물을 완성하는 성취감 반복

  3. 모으고, 정리, 정돈, 청소, 비우고 버리기 반복

https://hoonihoon.tistory.com/entry/1-%EB%A6%AC%ED%8E%99%ED%86%A0%EB%A7%81%EC%9D%B4%EB%9E%80

1.리펙토링이란?

  • 소프트웨어를 보다 쉽게 이해할 수 있어야 하고, 동작 변화 없이 내부 구조를 변경하는 것.

2.리펙토링의 목적?

  • 프로그램을 빨리 작성할 수 있도록 도와준다.

  • 코드 디자인을 개선해준다.

  • Bad code -> Good code

3.Bad code 란?

같은 작업을 위해 더 많은 코드 사용, 중복이 많고 이해하기 어렵다.

유지 보수하기에도 어려운 코드.

4.리펙토링은 언제 하는가?

틈틈이 계속, 기능 추가할 때, 버그 수정할 때, 코드 검토 시에.

5.리펙토링을 할 수 없을 때는?

  1. 디자인 실수가 있어 마음대로 리펙토링을 할 수 없을 때

  2. 현재 설계된 구조가 보안 문제, 퍼포먼스 문제 등 중요사항으로 리펙토링을 기대할 수 없을 때.

  3. 코드가 처음부터 작성하는 게 나을 정도로 엉망인 경우

  4. 현재 코드가 작동하지 않을 경우

  5. 마감일이 가까울 경우.

6.리펙토링 할 나쁜 코드는 왜 발생하는가?

  • Copy & paste에 의해 중복 코드 발생.

  • 잘못된 변수명, 함수에서 발생. (일관성이 중요 add, register, put, create )

  • 특정 클래스 내의 메서드가 동작을 하기 위해 다른 클래스에 있는 정보를 많이 필요로 한경우 ( 메서드를 이동한다.)

  • 나쁜 주석

  • 너무 긴 메서드, 파라미터

7.어떤 식으로 리펙토링을 시작해야 되는가?

  • 찾기 쉬운 것부터 한다.

  • 측정할 수 있는 것 (주석, 긴 메서드, 거대한 클래스, 긴 매개변수)

  • 메서드가 하는 일 설명, 블록이 하는일 설명


python 리펙토링

https://python-guide-kr.readthedocs.io/ko/latest/writing/style.html

코드 스타일 — The Hitchhiker's Guide to Python

명쾌한 코드 파이썬으로 어둠의 마법을 부릴 수 있다면, 가장 명쾌하고 간단한 방법을 추천합니다. 나쁜 예 def make_complex ( * args ): x , y = args return dict ( ** locals ()) 좋은 예 def make_complex ( x , y ): return { 'x' : x , 'y' : y } 위의 좋은 코드 예시에서 x와 y는 호출자로부터 직접 값을 받아와 곧바로 딕셔너리로 반환합니다. 이 함수를 쓰는 개발자들은 첫 줄과 마지막 줄을 읽는 것만으로 무엇을 하는 함수인지 정확히 알 수...

python-guide-kr.readthedocs.io

http://pythonstudy.xyz/python/article/511-%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%BD%94%EB%94%A9-%EC%8A%A4%ED%83%80%EC%9D%BC

예제로 배우는 파이썬 프로그래밍 - 파이썬 코딩 스타일

파이썬 코딩 스타일 PEP 8 파이썬 코딩 스타일 Python Enhancement Proposal 8 (PEP 8)은 파이썬 코딩 스타일에 대한 가이드를 제시하고 있다. PEP 8은 2001년 귀도 반 로썸에 의해 처음 제안되었으며, python.org 의 PEP 링크에 자세히 소개되어 있다. 파이썬 프로그래머들은 일반적으로 이러한 PEP 8 코딩 스타일에 따라 프로그래밍을 하고 있는데, 이러한 일관된 코딩 스타일을 적용하는 것은 자신의 코드를 명료하게 할 뿐만 아니라 특히 다른 개발자 혹은 커뮤니...

pythonstudy.xyz