Coder Social home page Coder Social logo

til's Introduction

TIL

How to be a good Software Engineer?

You try to understand things - how it works, and try really really hard to understand how to make things work. These are the key traits of a software engineer

Always ask the question. WHY? W.H.Y.

Action plans

공부하면서 얻은 인사이트를 토대로 올해 어떤 일을 할 때 실행할 액션 플랜 목록

개발 시작 전에, 무엇을 어떻게 개발할 것인지 계획을 명확하고 자세하게 세우자

액션: 개발을 시작하기 전에 주어진 목표를 달성하기 위해서 필요한 데이터와 프로세스가 무엇인지 명확하게 파악하고 도식화 하는 작업을 먼저 수행한다.

기대효과

  • 일정 시간을 계획에 투입함으로써 시간 내에 작업이 완성도 있게 마무리 될 기반을 구축한다.
  • 더 조심해서 처리해야되는 로직과, 덜 조심해서 처리해도 되는 로직을 구분하고 더 중요한 로직을 구현하는데 자원을 더 배분할 수 있다.
  • 개발을 하는 과정에서 지금 내가 어떤 작업을 하고 있고, 전체 계획 안에서 어느 정도 작업이 진척되었는지 알 수 있다.

노션에 업무 프로세스별로 수행해야되는 체크리스트를 만들어서 매 프로젝트마다 수행하자.

개발 시작 전에, 무엇을 어떻게 개발할 것인지 계획을 명확하고 자세하게 세우자라는 액션플랜과 비슷한 맥락이다.

업무 프로세스 전반에 걸쳐서 내가 그동안 업무를 하면서 겪은 시행착오를 기준으로 매 프로세스 별로 무조건 충족되어야 하는 체크리스트를 만들어서 업무를 해보자.

이 체크리스트는 지속적으로 업데이트가 되어야 한다.

문제를 푸는 과정

일단 느낌대로 손 가는대로 풀지 말고 구조적으로 풀어보자.

  • 문제를 명확하게 정의한다.
  • 정의한 문제를 중요한 부분에 집중해서 풀어낸다.
  • 혼자서 풀어내기 어려운 문제가 있다면 동료와 명확하게 소통한다.
  • 코드를 다 작성했고 일견 기능이 잘 동작하는 것처럼 보인다고 해서 작업을 완료하는 것이 아니라, 컨텍스트를 고려해서 코드가 필요한 안정성과 성능 수준으로 동작하는지 테스트한다.
  • 병목현상이 존재한다면 정확히 어디서, 왜 발생하는지 파악한다.

2024년 공부 목표

목표가 없이 공부하니까, 중구난방으로 공부를 하게 되는 경향이 있다. 목표를 정하고 쪼개서 개별 목표를 성취하는 형태로 변경해야 할 듯. 올해는 수동적인 공부(ex) 해야될거 같아서, 어디서 많이 들은 키워드라서 등등 이유도 정확하게 모르고 애매하게 하는 공부) 말고 능동적인 공부를 하자. 원하는 목표가 무엇인지 인지하고, 그 목표를 이루기 위해서 필요하다고 생각되는 공부를 하자. 원인을 찾아보고 이해하는 공부를 하자!

대목표: 상용 React Native 앱을 운영하는 회사에서 RN개발자에게 요구되는 다양한 업무를 빠르고 안정감있게 수행할 수 있는 개발자가 되자.

무엇보다 지금 회사에서 주어진 일을 잘 해결하고, 더 나아가서 프로젝트를 개선하기 위해서 기술적으로 기여할 수 있는 부분들을 추가로 해결해보고싶다.

이 프로젝트의 성공여부가 적어도 프로덕트의 기술적인 완성도 부족은 아니도록 최선을 다해서 기여하고싶다.

  • 3월 7일의일의 생각
    • 최근 또 이런 저런 생각들을 해보고, 다양한 사람들의 의견을 보면서 다양한 개발 분야를 경험하는 것도 함께 병행되어야 하는 일이라는 생각이 든다. 그리고 다양한 개발 분야를 경험하면서도 본질을 파악하고 학습하는 것이 중요하다고 느낀다. 그런 경험들을 통해서 새로운 기술, 새로운 분야에서 일을 하게 되더라도 본질을 이해하고 빠르게 결과를 내고 문제를 해결할 능력을 갖출 줄 아는 개발자가 되는 것이 장기적인 목표가 되어야 하지 않을까. 장기 목표에 대해서 윤곽이 잡힌 하나의 부분이다.

세부 목표

1.React & React Native framework가 동작하는 방식 및 제공되는 API 이해

  • 왜? 프로덕트를 개발하는데 있어 적절한 API를 활용하여 크고 작은 문제를 해결하고 결과를 일정 내에 산출하기 위해서.
  • 얻고자 하는 결과: React 및 React Native의 구조 및 다양한 API의 동작원리를 이해하고, 적재적소에 활용해서 주어진 기능을 빠르고 안정적으로 개발할 줄 아는 능력.
  1. React Native에서의 Animation
  • 왜? 올해는 프로덕트를 더 인터랙티브하게 만들어보고 싶음. 프로덕트가 제공하는 기능적인 측면에서 효용이 큰 것과 별개로, 프로덕트가 주는 느낌? 사용성이 나이스한 것도 사람들에게 가치를 제공한다고 생각 (대표적인 예시가 애플 아닐까?)
  • 얻고자 하는 결과: 모바일 앱 환경에서 다양한 인터랙션이 주는 효과에 대한 이해, React Native에서 애니메이션이 동작하는 방식 및 한계에 대한 이해, Android/iOS 플랫폼별 애니메이션의 느낌 특징 및 기기가 가지는 한계에 대한 이해
  1. JavaScript & TypeScript
  • 왜? 자연스럽게 JavaScript의 여러 good practice를 코드 작성에 녹여내고 싶음. 그리고 async 관련 로직에 대해서 솔직히 말하면 아직도 잘 모르겠음. 그리고 ES6에 대해서도 조금 더 원론적인 이해가 필요하다고 느낌. ES6에 어떤 특징적인 기능들이 존재하는지, 왜 이런 기능들이 추가되었는지를 이해해야 더 적절히 사용할 수 있지 않을까? TypeScript는 정적 타이핑이 프로그래밍 시 제공해주는 장점을 이해하고, 개인적으로 만드는 프로젝트의 안정성을 키우기 위해서 공부.
  • 얻고자 하는 결과: JavaScript의 여러 기능의 동작 원리를 이해하면서 코드를 작성하고 TypeScript를 활용해서 Type Safety가 보장되고 로직에 대한 이해를 증가시키는 코드를 작성할 줄 아는 프로그래머가 되는 것.
  1. FP, OOP 등 좋은 코드와 구조
  • 왜? 언어를 잘 이해하고, React를 잘 사용하는 것과는 별개로 코드를 잘 짜기위해서, 어떤 코드가 좋은 코드인지 이해하고 내 코드에 자연스럽게 녹여내고, 현재 프로덕트의 코드를 더 확장하기 편리하고 읽기 쉬운 코드로 조금씩 개선하기 위해서
  • 얻고자 하는 결과: 가독성이 좋고, 코드 그 자체로 목적이 명확하게 드러나며 다양한 변경사항에 최소한으로 필요한만큼은 열려있는 코드를 설계하고 작성하는 능력. 휴먼에러를 최소화하고 구조적으로 안정적일 수 있는 코드를 작성하는 능력.
  1. 문제를 해결하는 방법
  • 왜? 문제를 해결하는 다양한 방법 및 접근법들에 대한 이해가 필요하다고 느낌. 지금은 문제를 그냥 일단 해결하는 형태로 접근하는데, 보다 더 구조적이고 효율적으로 문제를 해결하는 습관이 필요
  • 얻고자 하는 결과: 문제를 마주했을 때, 문제를 명확하게 정의하고 문제의 성격에 맞다고 판단되는 접근법을 활용해서 문제를 구조적으로 해결하는 습관 장착.
  1. 일을 잘하는 방법에 대한 고민
  • 왜? 개발을 잘하는 것과 별개로, 어떤 사람이 일을 하는 사람인지에 대한 고민이 최근에 많이 됨. 혼자 고민하는 것도 좋지만 책도 읽어보고 다양한 사람들의 이야기를 읽고 들어보자.
  • 얻고자 하는 결과: 2024년 12월 31일에는 2023년 12월 31일과 비교해서 더 일을 잘하는 노하우를 가지고 더 넒게 볼 줄 아는 사람이 되는 것. 소통이라는 것을 더 이해하고 잘 해내는 Co-Worker가 되는 것.

공부가 필요한 키워드들

공부 기록

React Native

  • 0125: 공식문서 Architecture Overview - 1
  • 0126: 공식문서 Architecture Overview - 2
  • 0202: react-native-reanimated basics
  • 0206: 공식문서 Performance Overview
  • 0208: 원티드 React Native강의 - 퍼포먼스 최적화를 위해 사용할 수 있는 도구들
  • 0212: flipper - React DevTools
  • 0322: reanimated 공부
  • 0402: React Native 앱에서 글로벌하게 모달 구현하는 방법(ing)
  • 0409: React Native New Architecture - 개념, 구 아키텍처의 문제점, Codegen
    • 0502: JSI
  • 0501: RN앱에서 왜 boot splash screen 관련 라이브러리를 사용하는지.
  • 0517: RN앱에서 FlatList를 활용한 pagination구현 시 발생한 문제점 해결 및 추가 의문들

React

  • 0127: useMemo
  • 0128: useCallback
  • 0129: useRef
  • 0414: useReducer의 사용에 대한 공부
  • 0507: useContext 공부(문서 더 읽어야 함)

JavaScript & TypeScript

  • 0207: type alias vs interface 공식문서
  • 0221, 0222: Promise
  • 0223: isNaN..typeof x === number... 공부하려다가 먼저 NaN 공부
  • 0225: async function
  • 0228: Error handling in JavaScript(ing)
  • 0229: Async Await에 대한 추가 궁금증.
  • 0308: async await resolve reject를 처리하는 방법에 대해서 공부(회사에서 에러핸들링 하다가 내 답답하고 가독성떨어지고 흐름 파악하기도 어려운 코드에 화가 났음..아오 답답해!!!!!)
  • 0313: async(병렬 실행 vs 순차 실행)
  • 0325: JavaScript getDay()
  • 0406
    • 재귀함수 안에서 return statement를 써야하는 이유(릿코드 데일리 1544)
    • JavaScript Scope Chain and variable shadowing

Functional Programming

  • 0208: 쏙쏙 들어오는 함수형 코딩
  • 0209: 쏙쏙 들어오는 함수형 코딩

Test Code

  • 0217: Jest 테스트 코드 작성 튜토리얼 영상

커리어

  • 0201: 정말 중요한 하루. 자꾸 회고해보면서 기억을 되새겨야 한다.
  • 0313: 일에 대한 고민
  • 0326, 0327: 패스트캠퍼스 캠프콘 듣고 느낀 점들과 action plans
  • 0329: Produce don't Consume
  • 0330: 시장에서 살아남는 사람 되기

알고리즘

  • 0302:Stack을 활용한 문제풀이
  • 0331: 다양한 연속 부분배열 구하기 -> ing, 713번 문제의 부분배열의 특정 시점의 개수를 몇 개 더하는지 구하는 방법에 대해서 이해가 부족함

프로그래밍 전반에 걸쳐서 적용되는 지식들

  • 0311: LSP in frontend
  • 0312: Git 기본에 대해 공부(Rebase and Merge차이 특히)
  • 0517: Pagination의 의미 및 방법들.

til's People

Contributors

majih93 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.