samih.dev

Toolbox

The toolkit, and what I do with it

A list of technologies says very little on its own. Here is what each group is for, and where I have actually used it.

Build Test Ship

Build

Languages & frameworks

Java and Spring Boot are where I am most at home on the server, split into microservices when the domain justifies it. On the client, React Native and Expo for mobile, React for web. Node.js and C# when the project calls for them, Python for the small tools that save an afternoon.

  • Java
  • Spring Boot
  • JavaScript
  • React Native
  • ReactJS
  • Expo
  • Node.js
  • C#
  • Python
  • HTML5
  • CSS3

Test

Quality assurance

This is the day job. Functional, regression, smoke and integration testing across backend services and the interfaces customers touch, on financial software where a defect costs real money. I write the test cases with product, automate the API suite in Postman, drive the browser with Selenium, and query SQL Server directly when the interface will not tell me the truth.

  • Test case design
  • Functional
  • Regression
  • Smoke
  • Integration
  • Load
  • Postman
  • Selenium
  • SQL Server

Ship

Delivery & data

Docker to make an environment reproducible, Jenkins and GitLab to make a release boring. MongoDB or SQL Server depending on whether the data has a shape yet, and Figma so the interface is agreed before it is built rather than after.

  • Docker
  • Jenkins
  • GitLab
  • MongoDB
  • SQL Server
  • Figma

Process

How a feature reaches production

5 steps, in order

Step 01

Agree what it means

Turn the business requirement into acceptance criteria both sides can read. Most defects are born here, in the gap between what was asked for and what was understood.

Step 02

Build the thin slice

Service and screen together, the smallest version that works end to end, running in a container so it behaves the same on every machine.

Step 03

Attack it

Functional and integration passes first, then the paths nobody planned for: empty states, slow networks, wrong permissions, the same request sent twice.

Step 04

Automate the boring part

The checks that run every release move into Postman or Selenium, so the manual round stays short and attention goes to what changed.

Step 05

Write it down

A defect report with steps, environment, and expected against actual. If an engineer has to ask a follow-up question, the report was not finished.