DEV Community

Discussion on: What I Learned From Bombing An Amazon Coding Assessment

Collapse
 
therealkevinard profile image
Kevin Ard

What I learned: a love for regex. I bombed, and I knew it. So I dwelled on it, and pretty quickly realized the proper solution was regex. Looked into it a bit, flash-forward years and years, and now I'm that guy who has a one-liner for every text-based thing ever lol.

There's real value in failing.
Frankly, I'm just as happy if I win or fail.

Collapse
 
awwsmm profile image
Andrew (he/him)

❤️ regex

Collapse
 
morgboer profile image
Riaan Pietersen

I've always wondered why they are called "regular expressions".. when in fact, their more like "special-ability-superhuman expressions". hahaha. Jokes aside, I've often decided to learn regex properly, but then somehow I never get past the 0-9 a-b... :D

On a sidenote, if your code is riddled with regex (highly optimised and beautiful) does it not make it more difficult for less experienced devs to make changes to your code? I guess I am asking if we should weigh up using regex, versus simpler string manips?

Collapse
 
awwsmm profile image
Andrew (he/him)

Yeah, sometimes it just makes sense to use regex, especially when looking for patterns in text. It's easier to say "look for \([0-9]{3}\) [0-9]{3}\-?[0-9]{4}" than:

  1. look for a ( character, if you find one, check that
  2. the next character matches any of 0, 1, 2, ...
  3. the next character matches any of 0, 1, 2, ...
  4. the next character matches any of 0, 1, 2, ...
  5. the next character is a ) character...
  6. ...
  7. ...
  8. ...
Collapse
 
databasesponge profile image
MetaDave 🇪🇺

I think you can always help with understanding of regex by commenting and naming, just like you would with other code items.

  # number or plus as first character, number or certain characters as other characters
  BASIC_PHONE_REGEX = "^[0-9\+(][0-9)(\-\.ext\s]+"
Thread Thread
 
morgboer profile image
Riaan Pietersen

Yep, very good. Perhaps even add the expected result as part of the comment.

Thread Thread
 
therealkevinard profile image
Kevin Ard

When tdd is viable, rex can be expressed very thoroughly in tests. They need to be tested differently anyway because of their versatility, so those tests go a long way to show what it should/not do

Thread Thread
 
richardhendricks profile image
Richard Hendricks

regex101.com/ is a godsend when it comes to understanding someone else's line noise.

Collapse
 
therealkevinard profile image
Kevin Ard

Rex is a little like awk. Despite my love for it, I use it in code judiciously - just for the sake of who-comes-next. If the thing can be done effectively otherwise, I'll probably use the otherwise. ...to a point. I'm not going to trade a rex for an O^n^6 for the sake of who-comes-next lol.

For my own uses, though? Wait.. that form was misconfigured and now you have 840 contest submission emails you're manually copying/pasting to a spreadsheet?!?! Fwd those and give me 4 minutes. 🤓

Thread Thread
 
morgboer profile image
Riaan Pietersen

:D hahaha. Seeing a good regex in action is literally like magic! Aloha-regex and BANG - magic.

Collapse
 
johnn6tsm profile image
JohnN6TSM

+1 for regex. I still remember reading in the pragmatic programmer: "Pragmatic programmers master regular expressions."

Eventually I took a 30 day vow to do absolutely no text manipulation with anything but Regex. Now I, too can't put them down. I use regex for almost everything trxt parsing related. (everything except html, xml and JSON of course.)

Collapse
 
aguywhocodes profile image
Michael Brown
Thread Thread
 
awwsmm profile image
Andrew (he/him)

A classic