A Professional Developer Speaks
Interviewee: Ken Chau
Job Title: Web Developer
Degree: BS in Computer Science
Years in Field: Over 5 years
Why did you decide to get a computer science degree?
Computer science came naturally to me. I've been writing code since I was five. I would copy code from magazines. I played around with BASIC early on. My parents checked out computer books from the library for me. Neither of my parents was involved in the tech industry, but they helped foster my curiosity.
Why did you choose computer science over computer engineering?
I like software better. In computer science it's about solving problems at a higher level. In computer software engineering you're more interested in how low level hardware works to provide functionality to the higher level software programs.
What do you enjoy most about the job?
I like designing software, and I really enjoy the collaboration that's required to develop a product. In my current project, another developer and I created a totally unique architecture. We were given the freedom to solve the problem in the best way we knew how.
We looked into different design patterns and decided to go with a new one called "Model View Controller"; it's a different way of web application development. It helped us to organize code. It's easier to maintain. We spent a lot of time researching sources online and in text books. We are making sure that we wrote the right code the first time; we weren't just trying to just fight fires.
What challenges do you face?
The hardest aspect of web development is getting the end-user to communicate to the project manager and the developer exactly what they need early in the process. The coding is simple relative to creating the spec. The spec is very important, so is the QA process.
A big part of my job is defining the problem, and picking a strategy to solve the problem. I have to be able to control feature creep with the help of the project manager. As the end-user gets more familiar with the project they tend to ask for more features.
What type of personality is a good fit for the job?
It depends on what type of company you're working for, but you should always be open to collaboration. Web developers who don't cooperate with others generally don't do well. If you're working for a marketing agency you might have five graphics people per one dev, in which case you must have the ability to play the project management role and the dev role. In a bigger dev shop, it's an important skill to work on other people's code and be able to understand specs.
What are your career goals?
Ultimately I don't want to be developer all of my life. I might want to get my MBA or a master's in computer science. My short term goals are to become a web developer who can develop code, make code right the first time, and be clear about what I'm going to do. I can only do that with experience. I don't want to write unmaintainable code. To be a good web developer, you must be able to document your code and make it easily understood by other people.
What advice do you have for students or grads?
I'd encourage people to learn how to solve problems first. Get interested in figuring out why you want to solve a problem. Figure out many different ways to solve a problem. Read college computer science text books. Don't just focus on the language or syntax. It's not about knowing C, PASCAL, JAVA, etc. Most of all I would encourage people to collaborate with others. Learn from someone who knows more than you; you'll always find someone who knows more. Take on some open source projects. Start one with a couple friends. Keep learning even when you might think you know a lot already.