girl coder

How many Jr Engineers does it take to change a lightbulb?

It’s been said that a senior engineer is worth 10 junior engineers, and some days that idea haunts me.

Three months into my first engineering job, it’s tempting to feel no-good when I get stuck on another jasmine test, or screw something up in my git branch yet again.  My more experienced colleagues are faster and better at coding than I am, able to get to the root of a problem in seconds while I’m still desperately console-logging everything in sight.

But lately, I’ve been thinking about things in my job that I’m good at.  Even as the most junior person in the office, and partly because I’m the most junior person, some areas come naturally to me.  Here are a few examples of the things I’ve excelled at so far:

Being an intelligent test user. This is the one skill I’m most proud of.  As a detail-oriented person, I can sniff out a bug like a hound on the trail of a ferret.  As a detail-oriented person, I see technology from the Screen Shot 2014-03-06 at 9.13.36 PMtarget user’s perspective and easily find areas where s/he might get tripped up.  Over the last three months, I’ve made hundreds of github issues for features and refactors to make our app easier to use.

One recent example: Our ‘dirty’ input text color — dark orange — is so close to red that I kept thinking that my input values were invalid.  Like me, our users won’t realize that the dark orange is for a ‘dirty’ input (with dark orange color mimicking our logo); they will just wonder what they’ve done wrong.

Explaining technical concepts.  I may only know a small fraction of the information that a senior engineer knows, but I can explain that fractional amount in great detail.  This comes in handy when someone on staff needs to learn jasmine or angular.  In fact, I wrote a set of exercises to folks get their sea legs in our angular code base!

Research.  Writing new features is challenging, but a great deal of work happens before the writing starts, in the form of research.  Engineers often put off creating new features because they don’t want to stop everything in order to look up and vet libraries and methods.  With an English / history background, I jump at the chance to do a little research.  By explaining pros and cons of each option to my team, as well as answering their questions, I get our new features off the back burner and into our next release.

Pulse.  As a fairly new JavaScripter, I know all the best engineering podcasts and meetups around the city.  I know the latest information on the MIT Open Courseware and other course offerings.  I make it a point to keep a beat on the cutting-edge libraries so that I can offer these when our team is looking for new solutions.

Back to the original question: Is a senior engineer faster than 10 junior engineers?  Maybe.  But is a senior engineer worth 10 junior engineers?  I’m skeptical.  A senior person brings speed and knowledge, but also brings the baggage of comfort and a single perspective, often overlooking reasons why someone else might get tripped up on her/his UX, or spending hours on tired recruiting methods when s/he could simply contact a couple of key meetup organizers with the job announcement.

Junior engineers may be slow and overly methodical, but we’ve got grit and eagerness on our side.  When it comes down to it, I guess the only thing as good as 10 junior engineers is… well… 10 junior engineers.

Advertisements

Refactor: Make Your Tech Talk as Good as Your Code

You spent years building a project and months refining it. You know the code base backwards and forwards in all six languages. Now you need a talk that is a great as your code.

Too often, tech talks fall flat as audience members fail to catch the excitement of the speaker.  But blank-stare syndrome can be avoided with some careful planning.

Tell them what you’re going to say.  A quick summary of your talk is a basic best practice for public speaking and helps attendees jump back in if they get lost.  It also helps people gauge the length of your talk so that they can plan their day.

Tell a story.  Good code is orderly.  So are great talks.  It’s easier for people to connect with your work if you have an arc — a beginning (problem), middle (your work), and end (solution).  Starting with the solution (“Here’s my app”) fails to create a sense of anticipation and leads to loss of attention span early on.

Know your audience. Every piece of software has a market audience.  Every talk has a live audience.

Is it mostly newbies or more seasoned folks? If you don’t know, ask the organizer. If there are 25%+ junior folks, your presentation will need to gloss some terms and map some processes.

The mentality in tech often favors those who are more proficient and relies on mantras like “a little confusion is good” as an excuse for lack of clarity. But the fact is, everyone has to learn sometime.Your audience members — even the newbies — gave up their entire day/evening to listen to you talk.  Making your talk opaque to 25%+ of your audience is not just elitist– it’s rude.

Mind your venue. Are you speaking at an informal networking event or a high-level conference?

People go to informal networking events to meet people and get inspiration. The talks are designed to spur conversation, not to deep-dive into a niche topic.  At a conference, people can choose which talks to go to, but at a meetup, most people are there for the general meetup topic (eg. BackboneJS, etc.), not for your specific talk.

Provide viz. If your program is not visually interesting, consider increasing people’s engagement by showing animated graphs or live feeds that illustrate the original problem and your solution.  Your audience members will reward you with their full attention.

Cut jargon.  Good code is semantic.  Good talks are intelligible.  Don’t make your attendees work overtime trying to parse your talk into English.  Really great speakers know how to break jargon into layman’s terms.

DRY.  Enough said.

Luxe: Upgrade your AirBNB

At FullStack week 8, we are each given 10 days to create a personal project that leverages our skills in JavaScript into an app or plugin.Screen Shot 2014-10-06 at 11.23.29 AM

My app tackles a question often asked by AirBNB hosts: What is the simplest way to make my space/experience worth more to potential guests?  My answer: Luxe.

Luxe is a CMS platform that lets any AirBNB host become the local tour guide/luxury concierge for their guests by creating a beautiful custom website for their property that gives their guest activity suggestions, best restaurants in the area, and tips for getting the most out of their stay.  Luxe AirBNB guests need not do a lot of planning for their visit, as their host has already done the legwork and saved links and directions into their site.

Best Features:

The mongoose schema was carefully crafted to anticipate the host’s and guest’s needs, including information for international travelers.  As part of the effort to make the site easy to set up, we scrape the AirBNB listing to get all the user’s pictures and critical info and automatically add it to their listing’s database schema.

Screen Shot 2014-10-06 at 10.59.30 AMScreen Shot 2014-10-06 at 10.59.47 AM

 

In order to make the process easy for hosts, I wanted to make their site mostly functional before the host even touches it, so that all it needs is a few pieces of information from the host.  I’m very proud of the UI, which came out beautifully with added hover events, carousel click events, and tooltips — all part of my effort to pre-load the site with beautiful pictures and minimize distracting (but useful) text.

Biggest Challenges:

Every CMS faces one huge challenge: the uncertainty of user input.  I had to allow for any case, including the possibility that a user would leave an input or an entire section blank.  On the other end of the spectrum, I had to make character limits to protect the integrity of the layout.

Screen Shot 2014-10-06 at 11.22.35 AM

This project required the creation of two integrated but separate sites: one to attract hosts and help them manage their listings, and another for guests to view their host’s website.  With grunt combining my stylesheets on load, I had to ensure that the styles for the former would not interfere with the latter.  And when dealing with this much CSS, it became a challenge to find things unless I kept my code well-organized.

Closing thoughts: Not every good project stems from an original idea.  But what made this project my best yet was the investment I felt in it as a creative yet practical solution to a real-world problem.  This is one case where web technology has the potential to truly make a world of difference for tens of thousands of AirBNB hosts, many of whom support themselves partially through AirBNB hosting, as well as for the many guests who are interested in a luxury experience with less cost and more flexibility.