Skip to main content

Goodbye 2023

· 6 min read

Summary

  • struggled to improve software development and my career as a software engineer
    • engaged in development as a almost tech-lead
    • sought for a new job
  • consequently got higher point of view to think of software development
    • domain
    • project
    • software/system design/architecture
  • finally got a next new job
    • onboarding from Febuary

My 2023

MonthProject
01-03Education Support System for Elementary & Junior High School
04-12Assistant System for Government Cloud Management

Struggled to Move a Project Forward

  • project members had been divided into a tech-lead and others; a project manager and other engineers
    • we wanted to make our team more proactive
      • frequent communication
      • sharing technical knowledge and enhancing not only individual skills but also entire team's skills
    • on the other hand, the tech-lead has passive and defensive personality but pride as a tech-lead
    • consequently, our team had so many clashes over every decision
  • i learned
    • just to insist on correct opinions was not a way to improve software development
    • need to make good atomosphere and giving team members motivation first to move forward the same goal
  • under the circumustance, i guessed changing the human mind and the environment are more challenging
    • i felt this suppressed or indifferent atomosphere is charastaristic of my company, not only of my current project
      • in fact most of the team members of the next project are like that too
    • tended to seek a new environment to work as a software engineer

Sought the Next Job

  • i began to seek for environment where i can experience and involve in more technical work, also a company encourages me to so that
  • but i was rejected over and over again
    • i felt down, there seemed a gap between knowledge i had and experience companies required for me
    • especially i found that i focused on micro area in software development such as how to write clean and efficient code, but more macro perspective was required; system design
    • i began to study system design and platform services
    • many companies require Golang knowledge or experience
  • it's been so long time but finally i got a next job; provide platform such as libraries for developers and infrastructure for services; fortunately which really fits what i hoped from the first motivation for job-change

Importance of Domain Knowledge

  • while i'd attempted to design a system over and over, one day i found that it's so important for software engineers to get involved themselves into domain problem
    • good software/system architecture/design is robust to change
    • but how do we anticipate to direction to which our software/system will change?
    • it's impossible to build software/system flexible to change without domain knowledge
    • this fact intrinsically leads us to think about the product value of the software that we're creating, communicating with not only technical persons but also UI/UX design teams, sales department, stakeholders and end users
  • i began to study DDD from fundamentals by reading Domain-Driven Design: Tackling Complexity in the Heart of Software
    • i've felt no need to learn DDD until i noticed importance of involving domain because i've thought it's just one of design patterns of OOP
    • i think the most important part of DDD is how to model/abstract things we want to implement through the common understanding about a domain; ubiquitous language

Joined a New Profject

  • i left the project of the education support system then joined a new project which develops a system to assist government cloud management from April
    • scrum framework
    • there is no tech-lead position in the team but implicitly i was almost that
      • dedicated to decisions about from what languages, libraries and development tools to use, to coding guidelines and software/system design/architecture
      • proactively participated in meetings, including such as for operators and for UI/UX design team, to collect and make use of domain knowledge for design and implementation
      • document knowledge and decisions to share with team members
      • setup CI/CD
  • i learned a lot of new things from infrastructure and backend to frontend
    • scrum
      • i've experienced scrum development but strictly following the framework under scrum coaches is for the first time
    • GCP
    • Terraform
      • CDKTF (TypeScript)
    • monorepo using Turborepo
    • Node.js
    • Next.js
      • React Server Components
    • Figma
    • ADRs

Advent of Code

  • joined for the first time
  • fun but hard work to solve a problem everyday
  • couldn't solve 5, 6 or so problems
  • given motivation to study algorithms again

2024 Resolutions

  • good luck and have fun!
    • honestly i'm hopeful but also very nervous at the same time
    • don't forget having fun; everything follows that!

Books

Done Reading Newly

Done Reading Again

Reading

Stacked

Music

  • Kimi ni Kaikisen / inabakumori