Posts Tagged ‘thoughts’

Balance

Tuesday, December 11th, 2007

It’s that time of the year again. Not the holiday season (well it is, but that’s not what I’m referring to), but it’s finals season! It’s time to learn everything all us college students were supposed to learn during the semester but never did. I have tons of studying that I need to do, yet this past weekend, I don’t think I even spent two hours working. I socialized, goofed around, wasted time, you name it, but for some reason I didn’t really think school work was important. The weekend reminded me of some thoughts that I’ve had lingering around about balancing school/work with fun that I wanted to write down.

Hassan wrote a article about this on my house blog (read it here) and I think I’m going to echo a lot of his sentiments but it’s something I feel like I should write down anyway. I find it really hard to balance those two aspects of my life. One week I’ll lock myself up in my room and study all day every day, then the next week I won’t even crack open my textbooks. This process seems to repeat with increasing magnitude over time. (If you could model it as a function it would look something like f(t) = (e^t)cos(wt)…. wow I’m nerdy) sinusoidAnyway, that’s not what I call balance. Like Hassan said, that’s compensation. I find myself working hard one week to compensate for all the fun that I had the previous week, mostly because I feel guilty about not getting anything done and vice versa. After a week of really intense work, I feel like I need some recovery time and take the next week off. Once that cycle starts, it’s pretty hard to get out of it.

For most of my life, I’ve been taught to prioritize work before fun (for a good reason I suppose). Prashant’s dad gave us three rules before coming to college that were not only pretty funny, but also pretty good tenets for the college years. They were (in order of importance): get good grades, stay out of trouble, have as much fun as you can. And again I was given the emphasis on work. I definitely agree with this philosophy, unfortunately, when there’s no end to the work, the fun part of college suffers.

And I’m not really talking about school work. I don’t actually spend that much time on school work and haven’t really had to worry about it this semester. I’m talking more about the other commitments I’ve made, like to my research team, my business partners, my blogs, and my other personal projects. There are too many work-related things that I have/want to work on that I don’t get as much time as I’d like to spend with my friends and meet new people. When you couple the work work with my exercising and music, there really isn’t much time left in the days. I guess the problem is ultimately that I take on too much stuff, but that’s because I’m really interested in a lot of different things. Ultimately, I’ll probably have to cut down on my commitments but I’m not willing to do that yet. For now, a lot of my personal projects just end up moving really slowly because I don’t devote appropriate time to them.

All of the things that I take up are legitimately things that I enjoy doing (including school for the most part) and I often think of them as fun activities, they just aren’t very social activities. I really enjoy sitting in my room and playing guitar by myself, but that’s not helping me strengthen my relationships with my friends or form new relationships with others.

It’s probably too late to change anything this semester. It is exam time and I do have a significant amount of studying to do, so I guess I should lock myself in my room and hit the books for the rest of this semester. Ironically enough, I’m pretty sure I’m at the social peak in the sinusoid and am having a hard to motivating myself to study (hence writing this article). I’m thinking that next semester I’ll have a good opportunity to change this lifestyle and although I’m not sure what exactly I’d do to change it, I’m hoping that I’ll find a better balance next semester. For now, it’s back to wonderful Ampere’s Law (yippee!).

Summer’s end

Thursday, August 23rd, 2007

School starts in 5 days, and I’m really excited to move in and go back. Summer was really awesome, and for the first time in my life, I’m actually content enough with my summer to look forward to classes starting. These last couple of months have been jam packed with stuff for me to do; activities ranging from working, coding, and writing, to running, watching movies, and surfing. Looking back, this summer was not only fun, but it was also really productive.

Okay, boring stuff first. My summer was really productive. I had a full time internship where I learned so much (see What I learned at Tellme). Not only that, I started, finished, and worked on a lot of my own projects. I started this blog, which I’m happy to say I’ve maintained pretty well for the past month or so. I spent a lot of time thinking about design ideas for WeNote, which unfortunately I don’t think I’m going to actually carry out just because I don’t see much of a future in it. I wrote a lot of much smaller scripts that I’ve started using and on top of all of that, I’ve gotten a lot more comfortable with everything involved in programming. The fact that I learned so much this summer really added to my overall experience and to be perfectly honest, made my summer complete.

Now that that’s out of the way, on to the fun stuff. So all the fun things I did: playing guitar, running, playing soccer (lots of soccer), playing basketball, watching movies, going swimming, going surfing, going to the beach, hanging out with friends, and meeting a lot of new people. Truly, all of my experiences this summer were incredible. I loved playing guitar with my friends whenever we got the chance. We played soccer so consistently throughout summer, but every pick-up game was fun, unique, and exhausting. I went surfing, for the first time, with some of my co-workers and it was amazing. Of course I enjoy spending time with my high-school friends, mini-golfing, getting dessert, or just hanging out; it’s always fun. Finally, I was really happy to meet so many new, cool people from work, from soccer, and from other really random places. Even though I didn’t do that much really interesting stuff, I definitely enjoyed all the not-so-interesting stuff that I did this summer.

Even with everything that I did, I still regret not doing anything really special. One of my friends just came back from hiking Half Dome in Yosemite, and she said it was an amazing, unforgettable experience. Apart from the surfing trip, a lot of my summer is pretty forgettable, regardless of how fun it was. And it wouldn’t have been difficult to plan a memorable experience, I was just too lazy or too preoccupied with everything else that was going on.

On the whole though, my summer was amazing. Still, good things need to come to an end, and I’m excited for school to start next week.

What I Learned at Tellme: Part 1 (Related to Programming)

Sunday, August 19th, 2007

I just finished my summer internship at Tellme yesterday, and it was an amazing experience. Not only did I have a really fun time working there, but I definitely learned a lot and I also got to see the infrastructure of a moderately sized company. I was a applications developer intern, so I ended up doing a lot of coding, but everything I did there was very different from any of the coding projects I’ve worked on for fun or for school. A lot of the differences were essential to running the company, but some of them made things run a lot slower. Most of them however, were really good programming practices that I’m beginning to pick up and notice in my own coding. Here’s some of the things that I learned from my projects, the employees, and of course, my fellow interns:

1. Consistent Coding Style For the most part, code is pretty hard to read. You probably know that if you’ve ever wanted to add to something you wrote a couple of months ago, and then figured it’d be easier for you to start from scratch than to decipher your code and augment it. When working on bigger projects though, it’s a huge waste of time to start over, so you need to make your code as readable as possible. It’s even more important on team projects when other people will be reading your code and using it or adding to it. On these projects, it’s essential to have a consistent and defined coding style that’s used by all members of the team.

One of my projects at Tellme involved abstracting some preexisting code, so naturally I had to read through all of it. There was one file, that was about 2500 lines long, incredibly dense, and very unintelligible.

It took me about a two full days to go through this one file and figure out what was going on, and this was largely because the coding style sucked. Anyway to make a long story short, having a consistent coding style really adds to the productivity of a team, especially on large projects.

2. If it’s not tested, it’s broken I was amazed at the level of testing that went on at Tellme. Even things like content changes to their corporate website would be reviewed by a pair of developers and then by a QA engineer. It was a standard practice to review these minor changes on four or five different browsers, which I found to be a bit excessive, but also very thorough. It was a marked difference from the level of testing that goes into my own projects. On my projects, I used to just test until it works a couple of times, but after seeing how production-grade software is tested, I’ve started to write testing suites and actually test my projects.

3. Production Quality As I spent time at Tellme working on their projects, I realized that everything I’ve ever coded hasn’t been suitable for production at all. In fact a lot of what I do is take an idea to proof of concept, and then drop it. I never spend time on exception handling, error checking, parameter validation, documentation, or even optimization, but all of these are essential to making software actually usable. It’s interesting to see that programmers end up spending most of their time on these things, rather than the things that I end up doing. They code a lot, but very few of them are actually designing new things. A lot of the time they work on making things robust, and actually usable.

4. Bug Fixing Most of working on a development team is spent fixing bugs. It’s something I don’t really look forward to when I think about getting a job. I’d much rather be actually working on something new and innovative than fixing bugs for a career. Pretty much the first half of my internship was fixing bugs on Tellme’s website, and that was actually really boring. Granted it was important and needed to be done, but the work wasn’t very intellectually stimulating at all. I guess it goes with making production quality software, but it’s pretty monotonous to be fixing bugs all day.

Speaking of bug fixes, the other interesting thing I noticed was that Tellme would release software with bugs in it all of the time. Apparently it’s a pretty common practice for companies to do this so that they can meet their deadlines. It makes sense to me that they need to release software by a given date, so they purposely don’t address some bugs, but it’s also very odd for me, because whenever I see a bug in my software, I immediately fix it. I guess that’s one of the differences between a side project that you work on in your free time, and a project that you work on for a company.

5. Programming Overhead This is one of the things that makes me not really want to work for anything but a startup, but the developers at Tellme are actually only writing code for maybe 25% of the time they’re working. So much time is spent communicating, maintaining servers, interacting with huge code bases, and all sorts of other stuff, that they don’t actually spend that much time coding. A lot of what they do is necessary: people need to communicate on team projects, servers need to be maintained, and when you have a lot of code, you need to have some way to store it (i.e. version control systems like csv or svn). These just aren’t thing’s I really want to be doing for a career, at least not right now. I want to spend my time designing innovative technologies, and writing really cool software, rather than on maintenance. Seeing this at Tellme (which is already a pretty small company) made me really want to work for a start-up, where I wouldn’t have to waste some much time on overhead.

There definitely are more things, which is why I’ve titled this part 1, but I’m having some serious writer’s block right now, so I’ll get to the other stuff later. I also plan to write about the more general lessons (not related to programming) that I learned at Tellme. A lot of the things I didn’t like, aren’t really specific to Tellme, but more are causes of working at a company with a lot of people. These are all things that are essential to company infrastructure, but annoying to deal with as a developer. I’m sure I’ll get used to all of these things when I actually get a job, but as a student, they’re things that make me not really want to get a real job. Overall though, I really enjoyed my time at Tellme, and it was an amazing learning experience. I highly recommend getting an internship, and I’d be thrilled to get another one next summer.

Summer Training

Wednesday, August 15th, 2007

Summer’s a great time to do all the things you’ve been wanting to do, but haven’t found time to do during the year. In my case, one of those things was regular, high-intensity exercise. Coming into the summer, I did what I do every year: I said I would devote my summer to serious exercise and try to develop a more regular exercise routine for myself. Every summer before this one, I’d exercise a couple of times, but I’d always get caught up in everything else going on, and undoubtedly working out would get put on the back burner. Something changed this summer, and I actually managed to start running and working out on a regular basis.

At the beginning of summer, I took my brother’s advice and set monthly exercise goals for myself. They were ridiculously ambitious, but it was motivation for me to strive to meet and surpass them. I also decided that since I wouldn’t have that much time to exercise (I’m working full time over the summer), I’d have to make the most of each workout and do very high-intensity activities. I started running on a regular basis, and eventually I’ve built the habit of running at least four or five times a week. It’s gotten to the point where I enjoy running and I actually look forward to my runs each day.

I used to run a bit during high school, but it was only as supplementary training for soccer, and I never really enjoyed it. Now however, I run for the sake of running, and I want to build up my performance so that I can start racing. The hopes of racing and competing is amazing motivation and really helps me push myself during my runs. I also really want to run a marathon in the near future, so I think of every workout as a step towards achieving that goal.

So what made this summer different from all the other ones? I think one of the biggest things is that I’m older and a lot more determined. I’m a lot better at following through with my goals and actually doing the things I set out to do. It also helped that I wrote down my exercise goals for the summer, and I look at them every once in awhile to re-motivate myself. It’s also a lot easier to make exercising a habit, when you have a daily routine that you can just incorporate your workouts into. For me, I had work every day, so I would go running every day before work (also before it got to hot outside). Compared to the last few summers, when I didn’t have to wake up at the same time every day, it was a lot easier to make running a part of my schedule when my schedule was already well defined. The last thing, and I don’t know how much of a factor this was, but one of the other interns at work is a marathon runner, and he has really inspired me to train. When I look back on how different this summer was from the previous ones, it’s easy to understand why I’ve been able to train so consistently.

Once you make running a habit, it’s actually really easy to get better and keep it up. I’ve been really happy with my improvement, and it just motivates me to run even more. One of the most important things, though, is that if I stop for even one day, it becomes really hard for me to start up again. So last week, I didn’t run at all until Thursday, because I took a day off the week before. On that Thursday, I decided to just go out for a slow run just to get back into things, and now, I’m back into my regular training schedule. Even if I go for a short or slow run, just running every day makes it so much easier to motivate myself.

When school starts in about a week, everything is going change. For one, my life isn’t going to be so nicely scheduled. On top of that, I’m going to have a lot more work outside of class, and finding time to exercise is going to be a lot harder. My hope is that I’ve made running enough of a habit that I’ll keep it up during the school year. Looking ahead, as my schedule becomes less rigid, I’m going to have to somehow incorporate running into my daily routine, so that I don’t lose the habit and have to start all over again.

Time Management

Friday, August 10th, 2007

When most people (at least many college students) think of time management, they think of procrastination, of wasted time, and of all the tasks that could have and should have finished. It’s not uncommon for people to put things off for tomorrow (i.e. put them off until the deadline) because there is some more pressing thing that needs to be taken care of (read: watching TV). For me, time management is a little different.

When I think about managing my time, I think not about putting things off, but about taking on too much. I think about how there’s absolutely no way I can finish all the things I wanted to do, regardless of how efficient I am. I think about how I push myself too hard for several days, and then all of a sudden I’ll need a couple of days of doing nothing just to recover. My problem isn’t that I waste too much time, it’s that I expect too much out of myself.

Early in the summer, my brother advised me to set my goals high, and then strive to meet them. This is pretty sound advice, except when you set your goals so high that you never meet them. It becomes really hard to keep doing this, because you never get the sense of accomplishment that comes with meeting your goals. I’m almost sure that I’ve set my goals too high, and that combined with having too many goals has really started to wear me out. I can meet each of the goals individually, but when I’m trying to work on all of them at once, it’s seemingly impossible.

My problem has always been that my interests are too diversified. It’s been that way for as long as I can remember, but now that I’m trying to excel in all of my interests, I’m having serious time management issues. In high school, I was juggling athletics, music, academics, and my social life. I’m still trying to juggle all of those things, just each one has become a lot more intense. Rather than just play soccer a couple times a week, I now want to be exercising a couple of times a day. Musically, I’ve added an instrument that I want to master in the guitar, but I still want to increase my proficiency on the clarinet. And academically, not only am I a full time student, but I also have all these side projects to work on. With all of these things taking high priority, it’s pretty obvious why I don’t have a lot of free time.

My mom commented yesterday that I’m always on the go, always doing something. I guess that means that I don’t waste a lot of time, and in that sense, I manage my time pretty well. I have a general plan for each day, and I try my best to go with that plan and do all the things I set out to do. Unfortunately, it’s really discouraging when you physically cannot do all the things you set out to do, and you never get the sense of accomplishment that comes with it. After awhile, things start to seem futile and it becomes harder to motivate myself each morning. Sooner or later, something, either my insatiable desire to push myself or my will power, is going to give.

Ultimately the solution is to cut back on my interests, focus on a couple of things and do those really well. The second option is to decrease the intensity of my goals, and strive for mediocrity over a wide range of interests. Certainly the first option seems better, but I’m not ready to give up on the things that I love. When I’ve been playing music for so many years, I’m very hesitant to throw away all of the time, money, and effort I’ve spent on it to focus on school or athletics. At the same time, I won’t be able to keep up this high intensity across all of my interests for very long. Hopefully when school starts, I’ll find a balance that I can maintain for the next year or so.