As your scenario infers that you may have more than one user entering data, in my opinion, the VBA approach is the route you should take.
Copy and paste this code into your sheet module and customize the <<< Customize this >>> section
Private Sub Worksheet_Change(ByVal Target As Range)
' Define object variables
Dim statusRange As Range
Dim changedCell As Range
' Define variables
Dim currentUserName As String
Dim userNameColumn As String
Dim statusColumnNumber As Integer
Dim statusValuesList As Variant
' <<< Customize this >>>
Set statusRange = Range("X10:X100") ' Limit the cells that will record the status
statusValuesList = Array("Done", "Skip") ' Add more status values separated by commas and inside quotes (this is not case-sensitive)
userNameColumn = "Z" ' Column letter where the UserName is going to be stamped
' Prevent from firing other events while making changes to cells
Application.EnableEvents = False
' Validate if cell changed belongs to valid column and rows and if it has a valid status
If Not Intersect(Target, statusRange) Is Nothing Then
For Each changedCell In Target
If Not IsError(Application.Match(changedCell.Value, statusValuesList, 0)) Then
' Get current username
currentUserName = Environ("Username")
Else
' Empty username string
currentUserName = vbNullString
End If
' Assign username to cell in previously defined column and same row
Range(userNameColumn & changedCell.Row).Value = currentUserName
Next changedCell
End If
' Reenable firing events
Application.EnableEvents = True
End Sub