Files
ObsidianJournal/Work/Edgar Munoz interview.md

2.7 KiB

#interview #logos #pair-programming

Ricardo sent him the Minesweeper problem.

Wasn't early to the meeting. Showed up at 13:02

Console application in C#, limited GUI

Seems familiar with Visual Studio. Able to explain his basic plan to get going: two models (Cell and Board), one service to calculated neighboring cells.

Interesting choice: adding "NeighborCount" on the cell model--should the cell model know about its neighbors?

IN progress: ahs not initialized the Board property yet--how will he discover this? Got NRE when he ran this. Easily found that he missed initializing the BoardGame property, explained why it threw well. Struggle a little to initialize the multi-dimensional array correctly.

Questions:

  1. Can you GridSize everywhere to avoid errors?
  2. Does each Cell really need to know it's neighbor mine count? Or is that something the board knows about?
  3. Instead of a (Row, Column) comment, is there another way we could label the values?
  4. Is there a way to calculate the coordinates of the surrounding cells without statically constructing a list of offset pairs?
  5. You iterate through all cells in the board multiple times. Can you extract that logic to reuse wherever needed instead of copying it?
  6. Can he explain why using GridSize at the property initialization level doesn't work? He couldn't explain it--he needed a const or static integer for GridSize instead of a readonly class field. Opted to initialize the property at the top of the constructor.
  7. Can he simplify the user input questions (like don't show option for placing a flag if no squares are revealed yet--ie, impossible to know where mine is yet), or does he want to allow a user to place flags without knowing

Nits:

  1. Property, field and variable naming not consistent
  2. Not communicating to user if flag cannot be placed because cell is revealed
  3. Unnecessary comments

Bad coding habits:

  1. Reaching into the Board class to set cell properties directly in the BoardGame field instead of letting the Board class own manipulating the BoardGame

Notes:

  1. Using Random to fill 10 mines into the board, knows basics of Random API.
  2. Speaks English very well
  3. Did not run the program early to see if there were errors
  4. Found a bug he wrote in column and row check before executing program by thinking about it logically and visualizing the board.
  5. Has a bug using .Length of a multi-dimensional array! Will be x * y and not x as he's hoping. He figured it out without any prompting from me and used GridSize in the check instead.
  6. He had thoughts about the Board.BoardGame field--renmaing it. This is a good sign to me, thinking about clearing naming something that's redundant (against the class name).