Seven Books to Launch Your Career in 2017

In the New Year, we often re-dedicate ourselves to self-improvement, re-invention, and to taking our career to the next level. To support that process of leveling up, Hackbright staff and instructors have recommended a few books for our readers!

The twist to this list is that all of the books were authored or co-authored by women, and they all offer ways to improve your “hard” or “soft” skills as a software developer or tech worker.

Note: Hackbright did not add any affiliate links to these book reviews (you’ll have to Google them!), and we are not receiving any revenue or other compensation for these recommendations.

Here’s our list of 7 books to launch your career this year:


#1 Cracking the Coding Interview by Gayle Laakmann McDowell

Recommended by Meggie Mahnken, Hackbright Director of Fellowship Education

Author Gayle Laakmann McDowell is a software developer, and she describes her book as a way to navigate the sometimes tricky coding questions that arise in interviews for software developer positions. The book’s purpose is to provide you with the opportunity to practice tackling 189 potential programming interview questions via her approach for breaking those questions down into manageable modular-sized chunks. Gayle’s ultimate goal for each reader is to develop a comfort level with these types of questions so that she or he can whip up flawless algorithms on the whiteboard during an interview!

Hackbright’s Meggie Mahnken’s quick take on the book: “It’s a no-nonsense overview of many topics that would otherwise be intimidating to tackle. The introductory chapters on different types of technical interview questions, runtime, and other fundamental topics never fail to motivate me to enjoy the process of whiteboarding. Technical explanations are peppered with ‘real world’ interviewing insights. Even though it’s not in my primary language (python), the Java code snippets are incredibly approachable and informative.”


#2 Cracking the Tech Career by Gayle Laakmann McDowell

Recommended by Meggie Mahnken, Hackbright Director of Fellowship Education

51RyRAUq4xL._SX321_BO1,204,203,200_

Following her book on acing the coding interview (#1 above), Gayle new book offers targeted career advice for landing a job at a top tech company like Google, Apple, or Microsoft. She provides guidance on potential career paths, and how to develop the right type of experience, mindset, and skills so that you’ll be a good cultural fit at these companies.  Bottom line, this book shows you what the hiring committee wants, and how you can develop a career path to achieve it.

 


#3 Hello Web App by Tracy Osborn

Recommended by Hackbright VP of Strategic Partnerships & Mentoring Angie Chang

41r8gDyCqkL._SX322_BO1,204,203,200_

Tracy Osborn’s book “Hello Web App” is geared towards non-programmers (or newly minted developers) who would like to build and design their own custom web app using Python and Django. The book supports readers through the process of choosing a project, setting up a database, creating templates, and launching your app.  Tracy is also planning on releasing a new book, “Hello Web Design”, later this year which focuses on web design fundamentals and shortcuts for non-designers.

 


#4 Two Scoops of Django by Audrey Roy Greenfield 

Recommended by Hackbright TAs Jennifer Griffith-Delgado and Meg Bishop

Image result for two scoops of django
 In this third edition of her book, Audrey Roy Greenfield provides tips, tricks, patterns, code snippets and techniques that will help you master Django. The book is not designed as a Django tutorial, however, so you should be somewhat familiar with Django first so that you can leverage this as a valuable Django resource.  A few example chapters include: optimal Django environments, fundamentals of Django app design, queries and the database layer, building and consuming rest APIs, testing best practices, finding and reducing bottlenecks, security best practices, logging and debugging, etc.

#5 Doing Data Science by Cathy O’Neil and Rachel Schutt

Recommended by Hackbright Instructor Henry Chen

Image result for doing data science cathy o'neil

“Doing Data Science” is based on lectures from the Introduction to Data Science course taught at Columbia University. In many of these chapter-long lectures, data scientists from companies such as Google, Microsoft, and eBay share new algorithms, methods, and models by presenting case studies and the code they use.  If you’re familiar with linear algebra, probability, and statistics, and have programming experience, this book is an ideal introduction to data science. The book is collaboration between course instructor Rachel Schutt, Senior VP of Data Science at News Corp, and data science consultant Cathy O’Neil, a former senior data scientist at Johnson Research Labs. Cathy just released a book in 2016, “Weapons of Math Destruction”, about the dangers of Big Data (it was longlisted for the 2016 National Book Award).


#6 Probabilistic Graphical Models by Daphne Koller and Nir Friedman

Recommended by Hackbright Instructor Henry Chen

Image result for Probabilistic Graphical Models by Daphne Koller

This book complements the same OpenClassroom and Coursera courses by Stanford Professor Daphne Koller and her co-instructor Nir Friedman. The introduction to reasoning algorithms (machine learning) is based upon probabilistic graphical models that capture and analyze uncertainty. From the Coursera course, the content covers probabilistic graphical models (PGMs) as a rich framework for encoding probability distributions over complex domains. These representations sit at the intersection of statistics and computer science, probability theory, graph algorithms, machine learning, etc. They are the basis for a wide variety of applications, such as medical diagnosis, image understanding, speech recognition, natural language processing, etc.


#7 Program Development in Java by Barbara Liskov and John Guttag

Recommended by Hackbright Instructor Henry Chen

Image result for Program Development in Java by Barbara Liskov

“Program Development in Java” is aimed for students who know how to write small programs, and are at the stage of enrolling in a second or third programming course. Readers should be familiar with Java, but this is not a “how to code in Java” book. Java is just the “vehicle” for teaching key concepts for the whole process of developing production-ready software. The book is written by Barbara Liskov, an MIT Professor (and winner of the 2008 Turing Award), and John Guttag, also a professor at MIT. The focus of the book is on modular program construction: how to organize a program as a collection of well-chosen modules. It centers on four main topics: requirements analysis, iterative program design, debugging and testing, and design patterns.


Like these books? There are dozens more! 

Finally, if you’d like to discover more tech books authored by women, an invaluable resource is Etsy Engineering Director Lara Hogan’s list of tech books authored by women.

And if you think we should feature other books in a future list, please add your suggestions via the comments below!

Which Coding Language Should I Learn?

A common question asked by adults who’ve decided they want to switch careers to software engineering is, “Which coding language maximizes my employment potential?”

It’s the wrong question.

What kind of work do you want to do?

“Fanaticism about any one platform or tool is almost always a red flag.”Different sub-fields of computing have their own popular, or required, languages and platforms. Want to build a web app or create scripts (and automate a sequence of commands)?  Then Python (taught at Hackbright Academy) is a great fit.  Become a front-end developer? Get to know JavaScript and its idiosyncrasies across different browsers, as well as HTML and CSS (all of which are also taught at Hackbright Academy).  Video games? It all depends on the gaming platform’s hardware.

One way to get a sense of coding languages that may be useful to learn is to search job postings of popular tech companies.  Often these job descriptions include flexible requirements related to lists of the “usual suspects” programming languages.  Here’s a 2017  job posting “bullet point requirement” for a software engineering position at Facebook: “Solid software development skills with experience building software developed in (at least one) Python, PHP, C/C++, Ruby, C# or Java.”  So the key for students of coding is to master one of the “usual suspects” to get your foot in the door.

Just write quality code

Stop worrying about it.Most managers don’t look for specific languages when hiring entry-level people. They look for candidates with general coding and problem-solving skills demonstrated in any language. Deep expertise in, say, Objective C++ or Java is for senior roles or consulting gigs of certain kinds, where only an expert at a specific language or platform will be able to get things to work.

Otherwise, it doesn’t matter what language(s) you’ve coded in. Compared to human languages, where a fluent English speaker could be utterly unable to communicate with a fluent Mandarin speaker, programming languages don’t have a steep learning curve at all. They’re more alike than different, and not as complicated as non-programmers think. You’ll figure it out on the job, and there are message boards like Stack Overflow where you can ask questions without constantly interrupting your coworkers.

Davin Bentti, VP of Technology at MedTech Exchange, says he doesn’t much care what languages a programmer already knows or not: “The main thing I look for is the ability to write quality code.”

Learn more than one language

klingonchurchCoding earnestly in two or three languages will make you more hirable. Not by giving you twice as many jobs to apply for, but by extending your knowledge and experience beyond a single, small zone of comfort. By learning what’s local, and what’s universal. It’s like taking a year abroad.

“Fanaticism about any one platform or tool is almost always a red flag,” says programmer and polymath Jeremy Bornstein, a former Apple engineer who crafted a fictional humanoid language for author Neal Stephenson’s science-fiction novel Anathem. “They don’t see the gaps in the toolset, so they erroneously believe it to be much more useful than it actually is.”

Often you have to use what you have to use. But MIT computer science professor Hal Abelson, who literally wrote the book on learning to code, teaches students to ask themselves what language is best for the task in front of them, and what special-use languages they might invent themselves to best serve their engineering needs.

Invent your own languages

Inventing a language for a specific task can be less work than using an existing one.

While at Hackbright, Gulnarra Mirzakarimova (a graduate of the program now based in Los Angeles) invented a coding language, Unicorn, for her final Hackbright project.

Coding a new language can also save time and impress your boss! One contributor to this post replaced 2,000 lines of C, which created a product’s built-in menus, with a minimal 25-line configuration file in a very simple language created using Lex and YACC. At build time, the pre-compiler converted the latest config file to thousands of lines of bug-free object-oriented C, popping two dozen control widgets into the interface. When the team’s manager reviewed the custom Lex/YACC code, he was far more impressed than if the C code had been hand-tweaked every time the product’s marketing team changed their minds.

“The important issue is what is worth programming, and what are the main organizational ideas in programs,” Abelson says. “Not the detailed syntax of one programming language or another.”

 

Diversity Part III: How to Find, Hire and Keep Bootcamp Engineers

Third in a three-part series on how to implement diversity in software engineering teams, by leaders at successful companies.

tasTasneem “Taz” Minadakis is an Engineering Manager at Uber, responsible for Rider Growth. The goal is to create magical experiences for new riders on the platform, which lead to riders using and recommending Uber to friends and family. Before Uber, Taz worked at JD Edwards in Denver, Microsoft in Seattle, then spent almost two years at Yelp managing Ad Delivery Platform. She holds a Bachelor’s degree in Computer Science from L.D. College of Engineering in India and a Masters in Computer Science from the University of Southern California.


Diversity is important to building any engineering team. Diversity is not just about gender, but about background and experiences. Bringing in talent who’ve switched to coding after a few years in another role like a scientist, lawyer, or analyst can be a great way to bring this diverse talent to your organization. These candidates have the soft skills that are a must for any engineering role today as well as hunger to grow and learn new skills.

To hire bootcamp graduates, there isn’t a recipe in my opinion. Each company is different and will need to find a process and structure that works best for them. But a few things do matter. First and foremost is willingness. The organization needs to be willing to acquire talent from non-traditional avenues like bootcamp programs.

Create a recruiting path for bootcampers

The next step is the recruiting process. At Yelp, we chose not to provide a higher monetary incentive for recruiting diverse candidates. We did hire graduates from diverse computer science programs. In addition, we also tried to recruit talent from bootcamp programs. Same is true at Uber.

Through the recruiting process, it is important to pick the right interview panel that recognizes talent and potential. It is very natural for interviewers to compare bootcamp graduates against someone who has had a four year computer science degree with a few internships under their belt. It is important to have interviewers look for potential by reviewing their work done during the bootcamp project. I do not recommend altering the interview process, however it is important to evaluate based on how far the candidate has come through the formal training they received in a short window in time.

Once you have hired someone, then it is important to provide them the support and training needed for them to thrive. Ensure that the new hire gets a mentor. I’d encourage having the mentor opt in. The amount of time, effort, and bandwidth they will need to provide these non-traditional candidates is very different from a computer science graduate from Berkeley or Waterloo. The mentor needs to be invested in the mentee in coaching them to be independent and valuable to the organization with time.

Mentors and mentees

sheknowsbetter

Mentees may need to train their mentors, too.

The mentor-mentee relationship goes both ways. The mentors certainly have the knowledge and willingness, but might lack the training and structure to provide feedback that the mentee might need. By contrast, the candidates coming from bootcamp programs may have worked professionally in different industries in the past and have the maturity to handle constructive feedback. As a mentee, you will need to help your mentor help you. I have suggested creating a weekly goal setting exercise with your mentor or manager. Just like at the bootcamp, track your progress for the first couple months and ensure that you remove ambiguity in how your progress is being evaluated.

Mentees: You need to own your mentorship, because you have the most to lose. The path to establishing yourself in an organization can be very steep for non-traditional candidates. The knowledge acquired at programs like Hackbright is a drop in the ocean relative to the skills needed to become productive in a professional setting. You have to trust in your ability to learn quickly as you will be thrown into a whirlwind in the first few months.

On the leadership side, both mentors and managers need to provide the psychological safety that fosters learning. Bootcampers have communication, collaboration and leadership skills that will be valuable to the organization over time. But they also need time to acquire the technical knowledge needed to be productive.

Evaluate more often

Once you have recruited and began mentoring this candidate, the next obvious question comes around evaluation. I have personally asked myself this question and I don’t have a real good answer. But I recommend you ask yourself and your leadership on how should you evaluate a bootcamper within the first 3 months of being on the job? Should they be evaluated just the same as your computer science graduate from Berkeley or Waterloo? If so, is it a bar that is too high to be met? If not, then why not?

All in all, broadening your hiring to turn diverse graduates into valuable employees means focusing on achieving results, rather than standardizing the process. I am not sure of a formula that can work for every manager out there. But it is important to be open to the idea, be flexible in your recruiting and training process and be fair when evaluating their progress. What matters is not where they are from, but what they can do.

Missed the first two parts? Read  Diversity Part I: How To Strip Gender Bias From Hiring and Diversity Part II: How To Retain Your Employees.


Interested in hiring brilliant bootcamp grads? Our women software engineers go through a rigorous and immersive 12-week software engineering fellowship. Learn more about how to partner with Hackbright Academy to hire your next software engineers.