Tag Archives: Joel Spolsky

So you want that dream software engineering job? Here’s what to do.

by Frances Advincula

I was anorexic in high school, and to start over in my efforts of recovery, I ran away to the other side of the world. I ended up turning down a scholarship to a private university and enrolled in a small, new college in Manila for undergrad. My parents rightfully worried I was throwing my future away. I worried about it too, but I think things turned out just fine. I love all the cutting edge things I get to code for Accenture Software now, and I’ve been asked to be interviewed by well-known companies  — Google, Microsoft, Amazon, LinkedIn, Netflix, Fog Creek Software, and hot startups — AirBnb, The Levo League.

Why the sob story? I want to help everyone realize that, no matter what your state is in life, you can still do something proactive to better yourself, to achieve your goals. Yes, you have a shot at the big companies and rising startups even if you didn’t go to Stanford or live in Silicon Valley (although that most certainly helps!). I did it from the other side of the world,  from school in a developing country. You can too.

To help you get started,  I thought I’d share what I did, in hopes that you too, can find your dream femgineering job. You wan’t to  be ready when luck comes knocking, don’t you? 

Perfect your cover letter and resume.
If you are still in school or in an entry-level position, keep your resume to one page. I’ve heard that HR will throw it straight to the trash pile if it’s any longer than that. But anyway, just common sense — practice good grammar, proofread, ask your friends to proofread, etc. And read this article by Joel Spolsky: “Getting Your Resume Read.” It is the best, actionable advice on the topic that I have ever read. Ever.

Build your portfolio of coding projects.
CS theory is great (Automata Theory was one of my absolutest, favoritest subjects), but if you want a software engineer job, you have to show that you can write code. If you don’t have a lot of experience, software school projects are a good thing to list on your resume. But listen, I didn’t even have a GitHub back then, but I had my portfolio –and it served me well. So just imagine how far having GitHub can take you! Oh the places you’ll go!

Get an engineering internship, no matter what.
This is included in Joel Spolsky’s advice to CS students (which you are at a serious disadvantage if you don’t read it). Nothing will teach you how the industry works than a solid internship. You’re gonna be walking the talk by the time it’s over. I actually did mine fulltime for 6 months at Accenture, and I wasn’t the same person afterwards. If you really can’t find a good internship, consider remote ones like Gnome’s Outreach Program for Women.

Have a blog or write for other publications.
Why? Because blogging shows that you are curious and passionate. Blogging shows that you are willing to spend time outside of work/school for the things you care about. Blogging exposes you to new ideas and people who care about those ideas. Blogging forces you to be an expert in something (really, how are you going to write about it if you know squat?). Find organizations you want to write about and shoot the editor a well crafted email, volunteering. The worst case is that they’ll say no. This is how I got to write for a few startups, and even a fashion magazine!

Be Googable.
You are a young person. Social media is expected of us (plus, lots of startups communicate via social media). It’s also a great way to show you care without investing too much time blogging.  A couple of ideas that go beyond Twitter/Facebook/Google+ include:

  1. Pinterest – Make boards about topics you are interested in: UX, Women-in-Tech, Startup Lessons, etc.
  2. Good Reads – Show that you are well-read with software and startup books! Poornima has a great reading list, and check out the Fog Creek Software MBA Program’s reading list.

Sharpen your interview skills.
Tech interviews are hard. You get asked the normal questions and you get grilled in coding problems and alogrithms too. You have to be prepared!

  1. Her Campus’s, 20 Interview Questions and How to Answer Them
  2. Coding Horror’s, Getting the Interview Phone Screen Right
  3. Poornima’s slideshow, Interview Skills & Secrets
  4. Palantir’s 3 Part Series: How to Rock an Algorithms InterviewThe Coding InterviewThe UI Design Interview
  5. Gayle Laakmann McDowell’s book, Cracking the Coding Interview: 150 Programming Questions and Solutions is a really good, and thorough review of CS and programming fundamentals.

To calm your nerves, remember that an interview is two-sided. You are interviewing them too! You are also trying to find out if that company will invest in your learning and if you will fit into its culture (Read “My Interview Questions for Potential Employers“).

One last piece of advice.
Take time to enjoy your last semester too. People told me this, I ignored them, and I very much regret it. This is your last chance to savor your campus, your college friends, and the privilege of not yet fully being in the real world, with bills and rent and performance reviews to worry about. (Oh and it’s also probably not a good idea to take the GRE the same week as your finals, just sayin’.)

 

Frances Advincula writes the series Frances Fridays. Frances recently graduated with a degree in Computer Science and is currently pursuing a masters at Johns Hopkins. She now works as a Software Developer for Accenture Software. A proud geek girl, she’s sure she is the only one who can’t play video games. Tweet her at  @FranAdvincula.

Enhanced by Zemanta

You Will Be Different and That’s OK

I was at a party my Filipino family friends threw for my twenty-first birthday last weekendwhen one of the younger kids asked me how I became such a young successful professional. The term “successful” is debatable, I would say, but I nevertheless decided to write down some of the lessons I’ve learned along the way in hopes that someone else will at least find them a bit helpful. Thus, if you are interested in the random musings and observations of a fresh grad software engineer, read on. In any case, I hope you at least laugh, learn something, or even just remember what it was like on your first job in the industry. Enjoy.

 

If you are a young girl in tech, realize that you will be different, accept that, but don’t expect others to change for you. Joining a new team of men who don’t look, talk, or act like you can really feel alienating at first. Fear not, in a few months, your hard work and coding skills will earn their respect, and you’ll be part of their crowd before you know it. For now, try establishing conversations by asking them about their family, weekend plans, or how long they’ve been working at the company – people love to talk about themselves. Frankly, unless the people you work with are total jerks, they’ll include you in the conversation if you make an effort to join.

 

Also here is a quick tip when you get really nervous about meetings, pair programming sessions, etc. When I would almost freeze during my first few code reviews, I just try to remember that these tough-looking guys have daughters and sisters just about my age. I might be a total wack-o, but thinking of that really helped calm my nerves.

 

Be aware of the imposter syndrome and use it to your advantage.
I was complaining to one of my best friends who has about one million masters and PhDs (he must know what he’s talking about, eh?) about how I’m scared to do this, and I don’t know how to do that, and other girly froufrou worries that I should be ashamed about. Fortunately, he really served it to me by saying that really, just having signs of the imposter syndrome is in fact, a very good sign showing that one is a high performer, versus otherwise being one of those arguably cocky people who don’t know that they don’t know anything (see the reverse, the Dunning-Kruger effect).

 

I’m just going to quote from this article from Forbes because it says it all:
“In fact,
  • the higher the standards you like to set for yourself,
  • the more you are used to being an expert
  • the more self critical and type-A you are naturally inclined to be,
the higher the chance that you will experience this ‘Imposter Syndrome’ ….
And the bigger the leap you’re trying to make, the worse your Imposter Syndrome symptoms are likely to be.”
So the next time you start freaking out thinking you are a total fraud and don’t belong, congratulate yourself. It means you are doing something important, something outside of your comfort zone, and are surrounded by very talented people. That is exactly where you want to be — embrace that fact and instead of losing confidence over it, use it to your advantage! Being surrounded by very talented people is the prime setting for learning a lot, almost effortlessly! (See tip number 3 on Sukindher Singh Cassidy’s advice. She’s  a former Google exec and founder of Joyus.) On that note, I actually sit behind the head of North America Policy, and just hearing his phone calls and conversations has really taught me a lot about managing people and handling difficult conversations. Having feelings of inadequacy is also a good time to question what you think are your weak points — and improve on them. This alone will build your confidence, productively.

 

Learning a massive, enterprise code base will be a steep learning curve, so you can relax that, yes, you are not a total idiot.
Where I work, new engineers have to work in support for a few months, fixing customer-reported and internally-found bugs. It is a great way to get familiar with a lot of the code base, but it can be overwhelming at first. Just remember that managers don’t really expect you to be contributing significantly for about six months, so use that time to really study the code base without any pressure. Also, please remember that you are new and although you are obviously brilliant, do not criticize code when you’ve been there two weeks, and the guy who wrote it has been working there for years (He’s brilliant too and probably has a good reason why he did it the way he did, which is not obvious to you, Newbie). A little humility goes a long way.

 

A little positivity goes the distance as well. We all are working on bugs and tough problems — groaning in your cubicle and complaining on how much you hate your issue is not going to help. Having a positive, can-do attitude helped me get along extremely well with a software architect who fought for me to be able to join a new project faster than normal.

 

Also, take notes of everything; make OneNote your new best friend. Setting up new development environments for the first time can be challenging, and you won’t remember everything the next time you have to do it by yourself. In the future, you can even share your notes with the new guy, and he’ll be forever grateful. When I was new, another awesome girl developer sent me her notes, and that Word document has saved me countless hours! Another developer set up a wiki page of all the errors he encountered when he was setting up his environment for the first time, and I can’t even count how many times I’ve used that as a reference.

 

The newer smart guys are a gold mine.
No really, this deserves its own heading and paragraph. You want to find the really smart guy who is hasn’t been there for that long either and buddy up. He will still remember what it was like to be new, so he will be more willing to help. He will also tell you easier ways to do things that the other guys who have been there for forever won’t even think about.

 

You will have to take charge of your own learning.
I hope you are as lucky as I am. We have assigned Career Counselors whom we meet with every other week. Not only does mine help me set professional goals, he holds me accountable too. Now that I’ve seen how having actual learning goals helped me improve tremendously in a short amount of time, I regret a lot of my undergrad years. How I wish I took a more proactive approach to my learning! I can’t even remember how many times I’ve expressed my desire to join an open source project or how many times I’ve said that I want to try being a project manager (with technical chops) someday — yet I didn’t do anything about it. Meanwhile, two years have passed, and I still haven’t done anything. Nada.

 

I think we as people don’t do things, not because we are lazy per se, but just because we are too busy. Between classes, internships, and personal lives, if we don’t carve the time to learn about the things we want to learn, we will never do them. So starting this week, I’ve made a goal of reading one book per week from Joel Spolsky’s software management reading list. I actually read somewhere that if you read one book per month, you are ahead of everyone else already.

 

Just because you’re in tech doesn’t mean you shouldn’t write or communicate your ideas well.
Solving problems with smart people rely on a lot of communication, written and verbal, on a white board, in code reviews, in email. You’ll talk to a lot of QA and clients too; you’re not just always going to be in a basement coding algorithms. Being an engineer is no excuse for letting your communication skills slip. Remember that software development in itself is an art of communication: you are telling a computer what you want it to do.

 

Again, I will quote that which I cannot say any better.

 

“I’ve found that some of the best developers of all are English majors. They’ll often graduate with no programming experience at all, and certainly without a clue about the difference between DRAM and EPROM.
But they can write. That’s the art of conveying information concisely and clearly. Software development and writing are both the art of knowing what you’re going to do, and then lucidly expressing your ideas.
The worst developers, regardless of background, fail due to their inability to be clear. Their thoughts and code tend to ramble rather than zero-in on the goal…
Too many engineering-trained developers have a total disregard for stylistic issues in programming. Anything goes. Firmware is the most expensive thing in the universe, so it makes sense to craft it carefully and in accordance with a standard style guide. Make sure it clearly communicates its intent. This is where the English majors shine; they’ve spent 4 years learning everything there is to know about styles and communication. “
“In the same vein, programmers who pay attention to how they construct written language also tend to pay a lot more attention to how they code. You see, at its core, code is prose. Great programmers are more than just code monkeys; according to Stanford programming legend Donald Knuth they are “essayists who work with traditional aesthetic and literary forms.” The point: programming should be easily understood by real human beings — not just computers.”
In programming, we all know that one little detail can make a big difference, especially when you are working on bugs and still trying to learn the code base. I’ve worked on quite a few customer reported bugs that seemed so complicated, and one little detail that I remembered and mentioned to another more experienced engineer made it turn out that it actually, wasn’t a bug at all. My point there is that in programming, it is all in the details. Plus, if you’re smart enough to breeze through recursion and Calculus 3, you are smart enough to know when to use a period or how to express your thoughts clearly.

 

Frances just graduated with a degree in Computer Science with specialization in Software Engineering. She works as a Software Developer for Accenture Software. She also contributes to The Levo League, Women 2.0, and STEMinist.  A proud geek girl, she’s sure she is the only one who can’t play video games. Follow her random musings at @FranAdvincula.
Enhanced by Zemanta