CS Internship Guide #15: Can I Have More Money?

Part of the CS Internship Guide


piggy_on_money1

Congratulations!

You’ve just received an internship offer. However, the pay rate feels a little low.

“Can I ask for higher pay?”

YES! It never hurts to ask. Negotiation is a part of the hiring process, and recruiters know it.

“What if they revoke my offer?”

Recruiters never take back an offer because you asked for a better pay rate. You won’t be seen as greedy or self-interested.

“Okay, how do I negotiate?”

Negotiating an internship offer can be tough. You’ll be communicating with someone who deals with candidates and compensation for a living.

The best thing you can do is to leverage your other internship offers. Got one at $20 an hour and another at $25? Ask your recruiter to match or exceed your highest offer. You can also use your favorite search engine to find pay rates of other internships.

Remember, it never hurts to ask for better compensation.

What’s the best thing you think an intern can do to negotiate a job offer?

Posted in CS Internship Guide | Tagged , , , , , , , , | 1 Comment

Chris Aniszczyk’s Advice to Grow Your Career

Twitter Dev Presentation

The original slideshow is available on LinkedIn. Chris’s tips start on slide 43.

Last week, I published a post stating why you shouldn’t take my advice. And maybe not Chris Aniszczyk’s advice, for that matter. But I thought I should tell you, the reader, what he said, what I do, and what I think of his tips, and let you decide what to do with it.


When I was in college, Chris Aniszczyk, a software engineer at Twitter, gave a lecture about the company and the technologies they use to process over 500 million tweets each day. More importantly, he mentioned seven tips to grow your career:

  1. Find newbie-friendly open-source projects and contribute to them
  2. Find a mentor early at work and outside of it
  3. Don’t specialize early in your career
  4. Not networking? You’re not working!
  5. Control your public image, you are a brand
  6. Interview every year, practice makes perfect
  7. Learn negotiation skills and get multiple offers

I agree with almost everything Chris said, and I’d like to add some words of my own.

1. Work on any kind of personal project

Wouldn’t you be impressed if you met the engineer that wrote the open source library that powers your favorite application? Contributing to projects, especially open source projects, is a great way to highlight your skills!

I would go even further and say that you don’t have to contribute to someone else’s project if you don’t want to. When I do just-for-fun programming, I usually tinker with smaller ideas on my own. On the other hand, these small personal projects don’t have much impact.

2. Find a mentor early at work and outside of it

Mentors are wonderful! Though in recent months, I haven’t focused on this very much. Perhaps it’s time for me to call up an old colleague?

3. Don’t specialize early in your career

Technology changes fast. Generalists and specialists have different advantages, but I’d rather be a generalist. I consider myself a generalist in the field of software engineering.

4. Not networking? You’re not working!

Go to meetups, like Campfire at TechRanch. Don’t be shy to ask for business cards or email addresses! You might find someone who can help you take advantage of a massively positive rare event. And as much as I hate to admit it, parties are great for meeting new people.

TwitterDev GitHub

Contributing to projects, especially open source projects, is a great way to highlight your skills.

5. Control your public image, you are a brand

Brand yourself for the career your want, not the career you have. It’s better to have your online presence show that you’re a top-tier programmer, not a nobody!

First, make sure your public profiles are clean. Check if you’ve posted questionable content on your personal Facebook, Twitter, Instagram, no matter what your privacy settings are.

Second, update your professional profiles, like LinkedIn and GitHub, (and consider listing them on your resume). I’ve gotten plenty of cold calls based solely off of my LinkedIn profile.

6. If you dislike your job, do something about it.

The original tip was “Interview every year, practice makes perfect.” However, when I have a job I enjoy, I don’t feel the need to interview for a new one. Here’s what I think:

On one hand, a new offer increases your optionality (and you could use the other offer as leverage for a raise). On the other hand, you have to expend time and energy to hunt for a new position (and a job hunt might make your boss think you’re getting ready to leave your current company).

So I won’t personally recommend annual interviews if you still like your job. What I will recommend is “If you dislike your job, do something about it.” (Of course, this may be easier said than done.) Nevertheless, you won’t reach the top of the mountain unless you get off the couch. And if you land your dream job, stay humble and keep working hard. There are millions who would love to take your place.

7. Learn negotiation skills, get multiple offers

When you’re searching for an internship or job, multiple offers from different companies can increase your starting salary. Soft skills, like negotiation, are more important than we realize. However, HR won’t give you a better offer unless you ask. Fifteen minutes could save you fifteen percent or more on car insurance earn you an extra $10,000 per year.


What do you think about Chris’s advice? Tweet him at @cra (or me at @SheldonSandbekk).

Posted in Software | Tagged , , , , , , , | 1 Comment

Why You Shouldn’t Take My Advice

tl;dr

I try to follow my own advice. However, my advice might not always be the best for everyone in every situation. I have no skin in your game. Therefore, it’s best to examine my actions and determine (for yourself) if following my example would help.

Yo Dawg Advice.jpg

 

Some Additional Advice on Advice

Don’t follow my advice too closely. You know yourself best. How could I possibly help if I know almost nothing about you?

More importantly, if you follow my recommendations (say, on how to get a CS internship) I don’t get hurt if you do the wrong thing for your situation. I don’t have any skin in your game.

I intend to give genuine advice, but my experiences may be different than yours. Oftentimes I’ll mention what I did and the outcome; it’s up to you to examine my actions (rather than my words) and then determine if following my example would help. This applies to other people’s advice as well.

Hopefully my blog has helped you, the reader, or at least given you a different perspective on the things I’ve written about: software, startups, internships, programming, user interfaces and all the other things.

Posted in Psychology | Tagged , , , | 5 Comments

Good and Bad Design on the Streets of Berlin

Today, I’m featuring two user interface examples outside of software. The first is great, the second is difficult to use.

IMG_2478 - Version 2

The first design is the placement of maps on Berlin’s subway cars, which are located on the ceilings of cars. This is a terrific idea! If the designer had put maps on the walls or floor, passengers standing near maps might prevent others from reading them. I feel that this is an enormous help to riders.

IMG_2480

The second example is this device. Do you know what it does by looking at it? How do you operate it? I’ve tried pressing the top piece and the circle with three dots, but nothing happens.

This device is a crosswalk switch. The button is located underneath the device; users have to press upward to activate the crosswalk. I think this design is unintuitive, since there are no signifiers or affordances. The icon is similarly confusing. I have no idea what it means. At least the device is painted a bright shade of yellow, which helps it stand out from the gray metal and concrete.

To improve this crosswalk button, I would replace the icon with an image such as a walking person. Additionally, I would move the button to the front of the device to make it visible. Finally, I would avoid adding any language-dependent labels. That should make it easier for people to use, no matter what language they speak.

What good and bad designs have you seen on the street?

Posted in Software | Tagged , | Leave a comment

My Mom’s Recipe is Better Than Yours: Stochastic Tinkering

How did we get the recipes for chocolate cake that we have today? How did chefs figure out that a 6:2:3:1 ratio of flour to eggs to sugar to cocoa form a batter that can be baked for 22.47 minutes at 396.12 degrees Fahrenheit to produce a wonderful substance called chocolate cake? The answer: stochastic tinkering.

Stochastic tinkering (also known as convex tinkering or cumulative selection) is just a fancy term for randomness over time. More specifically, it refers to the process in which natural randomness and instability brings out the most “fit” in a population. Systems that benefit from stochastic tinkering are antifragile, such as evolution by natural selection.

chocolate-cake-yum-chocolate-33482004-1200-1200

But let’s take a step back and examine the human-driven case of the chocolate cake. It’s probable that several hundred years ago, there was a recipe for some pastry (#1) that included flour, eggs, sugar, butter, and cocoa in some unknown ratio. Chefs experimented (or accidentally modified) with the recipe by forgetting an extra egg, replacing sugar with honey, leaving the dessert in the oven for an extra minute, et cetera. This produced many new recipes (2A, 2B, 2C), and some were more tasty than others.

stochastic_tinkering

Over time, the recipes that people enjoyed the most were used over and over (2A and 2B), while the recipes that produced unpleasant pastries were discarded (2C). This led to a new set of desserts (3A, 3B, 3C) which continued inspiring other recipes. The cycle of cumulative selection continued for several hundred years, and today, we now have a variety of wonderful cake recipes.

So what does stochastic tinkering have to do with software?

Stochastic tinkering affects computer science all the time. The programs we implement today are versions of algorithms invented fifty years ago. Along the way, optimizations have been suggested–some successful, some discarded. In addition, there are hundreds, if not thousands, of programming languages, and the most popular have survived the test of time (whether these are the “best” programming languages is up for debate). And finally, the idea of the minimum viable product is strongly related to stochastic tinkering.

There are many other ways stochastic tinkering is silently influencing computer science, including the structure of college courses, the rise and fall of software companies, the evolution of hardware, and UI development. (I think it’s funny that critics were skeptical about touchscreens less than ten years ago.) In short, the most “fit” technologies of a given period carry on and influence the next generation.

Where do you see stochastic tinkering working in the world?

Posted in Psychology, Software | Tagged , , | Leave a comment