Currently Counter is an alpha beta engine with Hand Crafted Eval. Counter uses bitboards for board representation and Magic bitboards for move generation. Multithreading implemented with LazySMP method. Counter written in the go programming language. I think programming should be fun. And C/C++ is not funny at all.
How to write chess engine
Level0
able to generate legal moves and select random move
implement uci protocol
unit test for move generator
Level1 (only exact search methods)
PESTO eval
Iterative deepening
alphabeta, QS(good captures and check escapes)
Transposition table
Internal iterative deepening
move order: trans move, good captures, killers, bad captures and history
repeat detect
Aspiration window
PVS in root
simple time manager
mate distance pruning
Level2 (simple methods with maximum ELO increase)
NMP R=4+d/6, null move case in repeat detect
LMR R~log(d)log(m). In ideal case without lmr research, search tree will growth linear
Leaf prunings (reverse futility pruning, Late move pruning, SEE pruning)