“Remember, you can quit your job at any time,” said Rice University Computer Science alumnus Cheng Leong (B.A. ’95). He is describing one of the benefits of the most popular major at Rice, but he also cautions against abuse.
“Don’t act like an entitled, spoiled brat at work. Use the power of having a high demand skill –one that is universally required– to choose the projects you want to work on, in a field and a company or area of research that’s of interest to you. Life is too short to invest effort on projects you dread spending time on, or working for an employer you don’t respect or in an area that doesn’t line up with your moral or ethical values.”
Leong said he ignored his misgivings for too long in his first role and felt a great sense of freedom when he finally left. One of the reasons he stuck it out for three years was job security.
“When I graduated in 1995, I had zero job offers. Software was definitely NOT eating the world at the time, and I lived with my parents for a couple of months until I found a job through a Rice classmate, Mark Wells (B.A. CS and Math ‘95),” he said.
“We were headed to the dot com bubble, but in 1995 it wasn’t on the horizon. Then in 1998, it was. Despite the dot com bust, the need for technology remains. It permeates every part of our life, like the mobile phones that are in everyone’s pocket.”
Leong used the expansion of technology into a growing number of industries to explore a variety of career opportunities. He said one of his reasons for leaving roles that no longer felt right was for the benefit of his co-workers.
“When one employer raised our targets higher and higher, and everyone else committed to meeting the increasing demands, I self-selected out. It seemed unfair to stay on the team and not be committed to the team goals.
“Another time, I co-founded a company then the vision began to shift for two of the partners. They were much more committed to the new direction than I was, and I decided not to pursue that vision with them. Quitting a job that I ‘was not into’ felt fantastic, even when I quit the company I co-founded.”
Leong said he tried roles like consulting, design, managing teams and projects, and entrepreneurship. Most recently, he’s spent six years as a software developer at Indeed, working on projects that matter in a company he respects. Because change is unavoidable, he monitors his career satisfaction periodically and is prepared to seek new opportunities within his group, or outside if necessary.
He said, “It goes back to ‘be prepared to leave or ask for something different.’ I just gave that advice to a friend from Rice who has held the same job for 21 years. It is very empowering to understand you can ask for a change and are likely to get it.”
In addition to finding environments that are healthy for his values, Leong has also discovered his strengths: he thrives on solving problems and optimizing solutions. Although he’d love to spend more time refining his solutions, Leong is satisfied implementing solutions that are robust and work correctly.
He said, “There is not much time in the real world to polish solutions; we have to balance correctness with the other constraints on the project – like having to leverage existing architecture. I’m not a superfast innovator; instead I bring repeatability, sustainability, and maturity to the systems I work on.
“Like Wardley’s analogy that references pioneers, settlers and town planners, there are different skill sets for different roles. You don’t want me out there prototyping a wild new way to do something. Breaking ground? I am not so awesome at that. I’m better at production systems – making them more sustainable in functionality, in support or maintenance mode. I can bring a working model to maturity, take systems that ‘sort of’ work and make them more robust and repeatable, and scale them up to handle more users and new features in the future.”
Leong enjoys diving into the code and has high confidence in his solutions. He knows the program he’s written will do its job and can be understood, extended, and maintained by other developers in a conceptually elegant manner. He adheres to the expression of intent, which he believes is an undervalued part of software development.
“What is the problem and how do we intend to resolve it? Elegance to me is the straightforward solution. It needs to be as complicated as the problem requires –it shouldn’t add complexity to the problem. Work toward a solution that has a concept people can wrap their heads around. Solving the problem might be as simple as one set of inputs and one set of outputs.”
If a conceptually straightforward model is not appropriate for the issue, Leong said a well-delineated system with discrete parts can also be elegant. He stressed the importance of understandability.
“The simpler the solution is to understand, the better,” said Leong. “Software development is about code, and code is a mechanism for communication– not between programmer and computer, but writing a program or system that does what the business or owners want it to do. It is also a communication future programmers can use to see what it does and how it works. I can imagine my program is a love letter to future developers — which could be myself, next week.”