Wednesday, September 14, 2011

Engineering vs Problem Solving

A lot of people say that I'm not really a programmer. There are other things that are interesting to me, like data science, data visualization, and math. Maybe you're like me too: maybe you're comfortable writing whatever code to solve whatever problems you're having, whether it involves web programming, javascript, python, or just a single line of awk, but you don't have a "proper" background in computer science.

But recently I realized that this wasn't what they meant. What people really meant to say was that I am not an engineer. An engineer is someone who builds things, and building software quickly often means churning out a lot of code. There are many friends of mine who can do this very well, and it's very useful. Sure I can build things too, but not at their speed.

I'm a different kind of programmer. I'm a problem solver. I like to look at a nontrivial problem on software, and come up with ways to solve it with a minimal amount of code change. If you're looking at a really hard problem that people around you would write a lot of code to solve, and you wake up one morning with a much easier solution, then perhaps this is your style too.

A lot of programmers I know falls into one "type" or another. The two aren't really mutually exclusive (especially since good Engineering is supposed to involve good abstraction and thus less code). It's probably also determined by people's preference about the kind of things they like to do, how they approach problems, and what they find more rewarding. Building new things is really fun and writing lots of code makes you feel productive, while doing problem solving makes you feel clever when you count the lines of code you didn't write.

I happened to find the latter more rewarding. So, I'm a programmer who counts the lines of code that I didn't have to write.

End of Entry

Sunday, September 11, 2011

Summer 2011: personal reflection

To say that I had a wonderful time last term in San Francisco would be an understatement. I haven't been happier in all my life. Granted I haven't lived for a long time, but nevertheless it was a good term. The reasons it was good is pretty straightforward:

  • interesting problems to work on at work -- some things were like puzzles, where the solution came to me on a Saturday morning as I woke up,
  • side projects -- launching DataInColour was on the agenda for about half a year, and doing so while supporting DonorsChoose by hacking with the data was a great late evening/weekend project to be doing,
  • meeting people doing what I love -- going to data insight sf meant I finally had a chance to work with David and Fravic, and lead me back in touch with the person who originally taught me ggplot2 and seeing what's up at the Square office,
  • generally being active -- walking about 40-50 min per day, doing some hiking on the weekends, and learning how to swim probably helped in increasing happiness,
  • plenty of down time -- I slept a lot more than usual this term, and lazed around more than a certain friend of mine would be comfortable with,
  • and of course, being surrounded by great people -- no explanations needed here.
Trying to reproduce some of these in Waterloo would be difficult, but hopefully there will be enough going on at school to make this term just as fulfilling.

End of Entry