3. Senior Software Engineer - Mid-Career (Full-Time)

Requirements for the senior software engineer mid-career position (full-time).

3. Senior Software Engineer - Mid-Career (Full-Time)
  • Posted by :
  • Date :
  • Technology :

Basic Requirements

  • Alignment with our management philosophy
  • Must hold Japanese nationality or be a foreign national with permanent residency in Japan, and must not hold multiple citizenships

Character and Attitude

These items are organized along the three axes we describe on our careers page: being honest, open, and good.

Integrity Toward Customers and Work
  • Passion for craftsmanship, and the ability to pursue something better without compromise
  • Being sincere, and able to tackle things with sincerity
  • Not lying to oneself or others
  • Ability to continuously work on improving things, and take a creative approach to problem solving
Openness to Learning
  • Being humble and not arrogant
  • Being able to continuously learn on one’s own
  • Being able to flexibly embrace changes in the times and new insights, and continuously update your own thinking and approach
  • Being able to flexibly reconsider your own thinking and approach in response to changes in technology and markets
  • Ability to work effectively in a dynamic environment where needs and requirements are constantly changing
  • Ability to listen when there are comments on the design and implementation you have done
Kindness Toward Teammates
  • Contributing to the team through cheerful and positive communication
  • Proactively taking ownership of work
  • Being able to communicate with the team using polite language
  • Ability to work independently or in a team, take initiative, and communicate effectively
  • Ability to express your opinions in team collaboration regarding architecture, design, and code reviews

Proposal and Problem Discovery

  • Ability to read the background of customers and markets and make proposals that lead to the discovery and resolution of real issues
  • Ability to deeply understand user issues and find efficient solutions

Technical Skills (Design)

  • Ability to design the required functions in a primitive way and implement them faithfully
  • Ability to illustrate the design you have made in some way, and illustrate the design when given a certain implementation
  • Ability to design using appropriate methods even when the scale of the design becomes large
  • Ability to design objects that handle initialization, use, and destruction based on RAII (Resource Acquisition Is Initialization) strictly
  • Ability to realize a class/object hierarchy with an appropriate logical structure for the task
  • Ability to design a system that keeps the overall structure simple by effectively using concepts such as abstraction and polymorphism
  • Ability to understand the difference between interface definitions and implementation details, and to clearly distinguish between them when designing and implementing
  • Ability to manage all aspects of software engineering and product development independently, and to lead a team when necessary

Technical Skills (Implementation and Specialized)

  • Ability to design and develop large-scale (>200,000 lines) software using C/C++ / Modern C++ design approach / Basic knowledge and practical ability regarding TDD and DDD
  • Experience in fault-tolerant software design / Experience in real-time system design using real-time operating systems
  • Knowledge of SIMD processing such as CUDA and AVX, and the ability to design and implement it, as well as knowledge of distributed processing using threads and the ability to design and implement it
  • Strong skills in debugging, performance optimization, and unit testing
  • Experience with version control, continuous integration, and continuous delivery concepts
  • Expertise in designing software systems and operating system/kernel schedulers
  • A deep understanding of testing, continuous integration, build, deployment, and monitoring
  • Expertise in profiling and improving application performance
  • Technical leadership and continuous improvement
  • Experience developing software for cross-platform users
  • Ability to debug by yourself when there are problems with the design you have done
  • Ability to design and implement libraries that can be used by third parties

Education and Experience

  • Bachelor’s degree in computer science, engineering, mathematics, or a scientific field, and 16+ years of software development experience in an object-oriented language
  • Experience in developing end-user products (not custom development or system integration work, but products intended for market release)
  • Experience in roles with direct accountability for project success/failure, or proven track record of managing multiple critical projects simultaneously

Documentation and Language

  • Ability to write documentation for the software you have been involved in, at a level that users can read and understand, with diagrams
  • Ability to understand technical documents written in Japanese
  • Ability to write technical documents or user documentation in Japanese
Back to News