Want to join us ? Check out for job openings
As we develop, it is critical that we nurture and maintain a supportive, collaborative, and entertaining team culture.
The two most significant traits that define engineering at Makswin are constant progress and challenge. To improve ourselves, we challenge and learn from each other, as well as keep up with new technology through meetups and webinars.
We operate efficiently while working outside, in the gym, or in the gaming area. At Makswin, working under freedom while fulfilling responsibilities is crucial.
Simply ask if you have a question. You will not be mocked or made to feel terrible if you raise a question or conduct a check. We must all choose to answer a question to keep work moving forward or to clarify an issue rather than have someone struggle because they are afraid to inquire.
We run the risk of doing or developing the wrong things if we don't communicate; we must all be aware of what we're working on. Make an effort to communicate effectively and frequently, and avoid costly team meetings wherever possible.
"The single most valuable management tool while you’re scaling your engineering team is something I call a cultural manifesto. This is a document or a set of materials to help your entire engineering team get on the same page about how you make and operate things, and how you function as a team." — Kevin Scott
We must all contribute to the product's feature definition and direction. We will produce better software if we have empathy for our users, and everything we do should be in line with our company's and product's strategic goals.
We will thoroughly comprehend the issue, begin with the customer, and then design a solution. When it comes to "what," we'll choose a strategy, solution, or technology.
To ensure code maintainability and stability, each team adheres to the norms and best practices of their selected programming languages. Our guidelines can be customized yet inherit community norms, or they can apply platform-specific criteria.
No single line of code can be deployed without an approved pull request, even when targeting the test environment.
We consider not only the needs of the present, but also the needs of the future while building our architecture. We collaborate to create our architecture, using modern and established best-practices and techniques.
We buy or develop relevant services or components based on requirements and quality and cost considerations.
To keep high-quality code and quick feature deployments, continuous integration and delivery is essential. All initiatives connected to the building and deployment pipeline are held to the same set of standards.
We create services that are distributed, scalable, and highly available. To maintain business continuity and avoid setbacks, we design systems that accommodate to 10x the present scale today.
We write unit, integration, functional, end-to-end, and performance tests for every feature we produce.
For security and data privacy issues, our principles impose environment isolation and independent policies. Whenever practical, we will follow the principle of least privilege (PoLP).
Sacrificing quality leads to technological debts that end users will detect. Without rebuilding, more technical debts will stymie future product development or expansions.
Iteration is that friend who always gives you sound advise when you need it. Do it first, then do it correctly, then do it even better. Any sufficiently complicated system must be evolved rather than being designed.
Complexity is difficult to debug, while simplicity is the ultimate sophistication.
Maps the route an employee takes from a lower-level position through successive roles to arrive at their ultimate goal.
A Team Head is in charge of their team's execution, quality, speed, and cadence, but most importantly, the team's culture, environment, and general growth of the people on it.
Senior Developers assist with design and architecture, has strong knowledge of SOLID and design patterns, is a senior code reviewer, helps develop and enforce best practices AND performs the most challenging coding tasks. Seniors solve the most difficult problems and do it efficiently.
Mid-level developers can complete an assignment on time and within acceptable quality standards but will not generally be asked to design the feature, although they are welcome to attend design meetings and listen in, even offering their perspectives.
Junior Developers are entry-level software developers that assist the development team with all aspects of software design and coding. Their primary role is to learn the codebase, attend design meetings, write basic code, fix bugs.