He is a moderately reformed NBA fanatic and at one point knew the names of players on every NBA team. He is a serious coder, and spent six years working on battlefield simulations. You don't want to challenge him to any duels involving Physics. Or code quality. This week, meet our Senior Software Engineer, Raymond Law.
Ray taught himself Ruby and Ruby on Rails, but not before spending years programming in Pascal, C, and C++ and teaching himself PHP. His first language was Pascal, which he learned in high school while living in Hong Kong in the early 1990's. "I started programming in Pascal back in school in Hong Kong in 1992 because it was the language used in the public exams. And since I had a functional programming background, it was easy for me to switch from Pascal to C first, and then to C++."
Ray's family left Hong Kong to come to the United States when he was still in high school. He remembers struggling with leaving his life and his friends behind in Hong Kong; "I was just very sad to leave so much behind. I was on the right path to get in to a university in Hong Kong, so I didn't understand why my parents wanted to move." He later appreciated that his parents wanted to move for the potential of a better life for their family; and since he had a really good English instructor in Hong Kong, he already had a good foundation to start his new life in the states.
Armed with a love for both physics and computers, he entered college at Virginia Tech with the intention of majoring in Physics. "I liked Physics because I had a very good instructor in Hong Kong. I would tell people that the harder the exams were, the happier I was; I like the challenges of tests and applying my knowledge." He started out his first semester by taking an advanced level Physics class; "I got a bad grade on the first exam, but then I worked incredibly hard to get the highest grade on the final exam." He talks proudly about achieving that goal; "My professor personally told me: 'This is the stack of exam papers sorted by scores, and yours is on top.' I will never forget that moment."
Despite his enjoyment in studying Physics, Ray later changed his major to Computer Engineering and minored in Computer Science and Mathematics and finished college in only 3 1/2 years. He explains the difference between Computer Engineering and Computer Science: "Engineering is about finding solutions to problems. CS is more focused on theoretical ideas and algorithms." He has found his background in Engineering to be incredibly useful in real world situations. "Currently, I'm working on migrating a large amount of assets from a server-based file system to Amazon S3. It's a very involved integration but I love it because I'm solving a real problem. My engineering skills are very useful in this situation." He believes in taking small steps when he's programming, and he is extremely methodical; "Change one variable at a time and look at the results. Then you can have meaningful comparisons. As programmers, a lot of times we are inclined to implement the whole solution and hope that it works. But it rarely works that way."
For similar reasons, Ray believes strongly in testing and behavior-driven-development. However, he approaches testing with flexibility, based on the needs and requests of the end clients. "Realistically, some clients don't understand the value of testing and it can be hard to convince them of the advantages. I try to explain to clients that if we are allowed the time to write good tests, it will result in better quality code and it will help them down the road."
Ray really understands the dynamic of the client relationship. He talked with me about the importance of understanding where a client is coming from and noted that oftentimes the client knows what they want, but they don't have the technical knowledge to understand the process that must be taken to bring about their desired results. "It's important to explain our technology decisions and talk them through how the code works if that is what they need. Clients hire us because they don't know how to do this themselves. It's the same reason that I hire someone to do my landscaping; it's not that I'm ignorant and couldn't learn to do it myself, but I am using the time I save to do other things that I am good at. So when I respond to clients, I try to be specific and encouraging so that they understand that we are here to help them, not laugh at them. I think that is an important understanding for us to have."
Perhaps it's Ray's gentle and understanding nature, combined with his explicitly genius talent for problem solving that makes him such a great developer. Whatever it is, we are fortunate to have him on our team. Ray enjoys working with us too: "I am just enjoying my life - I have a great family of my own, and a great job at Intridea where people value each other." Ray lives in Virgnia with his wife Vinly, whom he met his freshman year at Virginia Tech. Vinly majored in Architecture and found a great firm to work with after graduating. They have a baby girl, Chloe, whom they adore completely. Ray says, "Chloe is the best thing. Nothing compares to Chloe smiling at me."
Ray works from his home office, and enjoys the flexibility that being part of a distributed team affords him. "I work very effectively at night. When you work in the office, there are many distractions. So I enjoy working from home so that I can arrange my schedule in order to do my best work at nighttime. I often work until 4 or 5 am." Before joining the Intridea team, Ray worked as a DOD contractor on battlefield simulation software for TARDEC, the U.S. Army's Tank and Automotive Research, Development and Engineering Center. He spent six years with the DCS Corporation before he met Dave, Senior Partner at Intridea. By this time, Ray had already taught himself PHP, Ruby and Rails and was using Rails for several personal projects, including a list application and a small app for locating local badminton playing locations. On learning Rails, he reflects, "Learning Rails was so intuitive to me because everything seemed to make perfect sense. Stuff like convention over configuration and MVC just made sense to me. I think Rails understands the pains of developers and tries to ease or eliminate the pains so we can focus on application logic."
Thinking back to his old life in Hong Kong, I ask Ray if he has any lingering regrets now about leaving his life behind and moving to the states: "Nobody knows what would have happened if I hadn't moved. So I am not looking backwards." In the end, it all worked out - a brilliant and lovely wife, adorable baby daughter, his parents and brother living nearby in Virginia, working for a company he believes in and programming in a language that he loves.
美好人生 "It's a wonderful life."
This post is part of a weekly series, called "Intridea Insider"