John Sonmez

John Sonmez is a software developer and the author of two best-selling books, The Complete Software Developer's Career Guide and Soft Skills: The Software Developer's Life Manual. He is also the founder of the Simple Programmer blog and YouTube channel. Eric Butow is the owner of Butow Communications Group (BCG), which offers website design, online marketing, and technical documentation services for businesses. He is the author of 32 computer and user experience books.

Articles From John Sonmez

10 results
10 results
How to Land a Programming Interview: 10 Ways to Stand Out

Article / Updated 07-19-2022

If you’re applying for a software development job, always presume that many of your fellow programmers will apply for that job, too. Here are ten ways you, and not just your résumé and cover letter, can stand out to your potential employer and get you an interview. Have a professional headshot Use a professional headshot, taken by a professional photographer, as your profile picture on all of your social media profiles. Don’t use a good selfie you took of yourself while you were on vacation. Instead, get some recommendations for a photographer from friends, colleagues, and even your social media connections. Then dress professionally (at least from the waist up), get well-groomed, go to the photography studio, and get headshots that will show you’re a professional. Once you get the photos and you’ve decided on the ones you want to use, put that headshot on all your social media profiles to create a consistent brand for yourself. If you already use a professional photographer to take family portraits on occasion, here’s a tip on how to save some money on a professional headshot. Gather the family to get some pictures done for relatives and ask the photographer if you could get a couple of headshots for yourself as well. You should already be professionally dressed and groomed, so an additional headshot or two of yourself will cost you little to nothing extra — probably the latter if you’ve been using your family photographer for a while. Establish a GitHub profile to showcase your programming skills If you don’t have a GitHub profile to interact with other software developers, sign up for free on the GitHub website. A GitHub profile not only gets you access to other developers, it also affords you the opportunity to demonstrate your programming abilities. If one or more people who work at an employer can find your GitHub profile and can see the type of code you’ve written as well as the projects you’ve contributed to, they’ll have much more confidence that: You can write code. You are a good coder. You can actually do what you say you can do on your résumé. If you have a GitHub profile but you haven’t worked on any projects there in a while, now is a good time to get more involved so you can make it as impressive to prospective employers (and other programmers) as you can. Get plenty of referrals One big benefit of LinkedIn is that you can get and ask for plenty of online referrals, which LinkedIn calls recommendations, and post them on your LinkedIn profile for anyone to see. But you shouldn’t just rely on people to give you recommendations on LinkedIn — you should already have plenty of people you could ask who would be happy to recommend you for a programming job. So, ask those people if one or more people will write you a recommendation letter to send with your cover letter and résumé. The hiring manager or team manager may be a bit confused at first with all the papers included in your envelope, but then realize that you have plenty of people who are happy to recommend you and talk with company management about you. That added proof that you’re well-regarded in the industry will get your résumé and cover letter noticed. Referrals are not a panacea because you still have to make sure your résumé and cover letter look great, but including referral letters will make it much more likely that whoever is reviewing résumés looks at yours. You can show your appreciation by writing a recommendation letter of your own and send those to your friends and colleagues who recommend you. After all, your friends and colleagues may need recommendations for a job or other position they want. Have a video résumé on social networking sites We live in an age where it’s easy to make videos and post them online, so it’s a good idea to post a video résumé starring you on all your social media websites. You can hire a videographer to professionally produce your video résumé, but you can probably do it yourself using your webcam. Just be sure to practice talking naturally into the camera so you come off as authentic and genuine. When you’re ready to record, it’s a good idea to wear at least a shirt and tie (if you’re just sitting down) and groom yourself so you look professional. You can put a link to your video résumé in your printed one. When people reviewing your résumé type in the link, they should see a brief video that not only features you talking about who you are as a programmer and your experience, but also shows some of your personality so the viewer can get to know you a little bit. If potential interviewers feel like you’re someone they want to work with after they watch your video résumé, don’t be surprised if you get a phone call or email message asking to set up a phone screen or an in-person interview. You should shorten the link to your video résumé so people don’t have to type in a long and complicated URL in their browser’s address bar. One popular site for shortening a URL is Bitly. Create your own YouTube channel to show off your programming prowess If you want to go one step further with your videos and stand out not just to potential interviewers but to the software developer community at large, include your video résumé on your YouTube channel. This channel should also include several videos that show off your personality and expertise. A YouTube channel that you promote regularly on your other social media and software developer websites like GitHub will start to get you followers. What’s more, people at your prospective employer will look at your YouTube channel and think, “Wow, this person is teaching hundreds of developers on YouTube, so this is a good person to have on our team. This is someone who not only knows their stuff but will help our other programmers learn and grow.” Your YouTube channel may not only attract followers but may also prompt people to send comments asking if you’re looking for a job. If you decide to start looking for employment, you can create a video that says you’re looking for a job and feature that video on your channel so you can generate leads. Have a good blog to show your programming expertise Programming requires you to type code, so you should have a good blog that shows your coding expertise either in your preferred programming language and/or a variety of programming languages. A blog, such as the Simple Programmer blog you see below, can include instructional articles about how to perform a task in a specific language; discuss tips, tricks, techniques, and trends in software development; and include articles from guest authors who talk about their areas of expertise. If you design your blog so you feature your desired search keywords prominently and frequently, Google will have an easy time finding your blog when people search for those keywords. Don’t forget to promote your latest blog posts on your social media and software developer websites, too. You may find that during the interview, one or more interviewers will ask you about the blog because they’ve been reading articles on it. So, the blog acts as an extended interview that shows people at your prospective employer that you write well, can articulate your points, and that you’re an influencer and leader in the programming community. Update your blog regularly with new articles. If you haven’t updated your blog even in a couple of months, your articles will start to look stale, and you’ll give the impression to your interviewers that you’re inattentive and don’t follow through. Produce a podcast and/or vlog If you want to go all-out to promote your expertise and personality, then add an audio podcast or its video equivalent, the vlog (short for video log), to your blog and YouTube channel offerings. The vlog can be posted to both your social media websites, your blog itself, and/or your YouTube channel. You may also want to have your podcast on sites that host podcasts such as Libsyn. If you’re the host of a podcast, it’s likely you won’t talk during the entirety of each podcast. (The length of a podcast will vary depending on the topic.) Instead, you’ll be talking with other people and creating a lot of connections. You’ll also show that you’re involved in the developer community. As you build influence and a loyal listenership and/or viewership, you may become a celebrity among developers. Your popularity will make it easier for you to get the job you want because companies want to hire a famous software developer to work on their teams. Point to mobile apps you’ve already developed in app stores If you’ve published one or more apps in an iOS or Android app store, don’t forget to include this information in your résumé and cover letter, and ensure that any interviewers can easily find a link to the app on your social media profiles, blog, and YouTube channel. Showing that you’ve developed one or more apps gives interviewers proof that: You can write code just like your résumé says. You can develop software through the entire life cycle from design to publication, which shows you can contribute to the programming team and the company. You’re a winner. (So go get a chicken dinner.) If you haven’t built an app before, there are plenty of tutorials online — all you have to do is type build ios app or build android app in Google and you’ll get a results page full of tutorial links so you can get started. After you create and publish an app, produce a “making of” video on your YouTube channel. This video should tell viewers about the app, how you developed it, the discoveries and drawbacks you had during development, and what your plans are for the future of the app. That last part will show potential employers that you take care of your customers and keep thinking of ways to make the app better for them. Write and self-publish a book The one tangible thing you can bring with you to your interview, other than copies of your résumé, is a copy of a self-published book. It can be difficult to write books for major publishers unless you already have experience with them as a technical editor, you coauthor a book with a lead author, or if you’ve self-published a book. It’s easier than ever to publish and distribute a self-published book. You can sell your book as an ebook on websites including Amazon and Barnes & Noble as well as publish printed copies to give to people and sell on Amazon. The wikiHow website shown below gives you step-by-step instructions about how to write and publish your own book. A book can make you a little bit of money, especially if you take the time to study successful self-published authors — for example, look at Andy Weir, who self-published the novel The Martian. More important, the book serves as an advertisement for your services that shows interviewers that: You committed the time, money, and effort to write and publish a book. You’re a published authority on a given topic because not very many developers have self-published a book (though one coauthor of this book has). You have writing skills, which could help you make more money in your new job if you’re a technical writer as well as a programmer. After you publish the book, don’t forget to promote it not only in your cover letter and list it in your résumé, but also on all your online media and social networking websites. What’s more, if you have the book listed on Amazon, then include a shortened URL link to the book page so interviewers can see it; the interviewers will appreciate a short URL to type because Amazon page URLs are almost as long as lines to get on popular Disneyland rides. Speak at developer and business events You may not have thought about speaking at events, or maybe you don’t want to think of it because the fear of public speaking, or glossophobia, is considered by some (perhaps including you) to be worse than death. If you want to get up the courage to speak but don’t know where to get training, go to the Toastmasters International website and find a club in your area by clicking the Find a Club button in the upper-right corner of the screen. Then search for your nearest club in the Find a Club webpage. Toastmasters International is considered the premier organization for professionals to learn how to speak effectively and become better leaders. After you select your club, you can attend a meeting for free if there are no current restrictions to joining a club. (Some clubs have restrictions and the website will tell you if that’s so.) Once you decide to join, you can sign up as a new member for only $65 (this is subject to change); renewals cost $45 per year. It may take you some time to get yourself where you want to be as a speaker, but once you gain enough confidence, you can start looking for speaking opportunities at local or regional events. Check with Meetup events for software developers in your local area and ask the event coordinator about speaking opportunities. The same goes for local chamber of commerce and/or Rotary club meetings, though you’ll probably have to produce a different presentation for those business-oriented audiences. No matter where you speak, you’ll likely have members of companies in the audience who may be impressed with you. After your presentation, one or more people may ask for your card so you can speak to their employees and/or recommend you as a speaker for a large developer conference (so make sure you have business cards with you!). Some people may be so impressed with your leadership abilities that they’ll ask you if you’re looking for a job. Before your speaking engagement, ask the event coordinator if you can record your presentation on video. Then you can make that video available for wider viewing later on your social media and/or online media websites. A large developer conference may record all speakers on video and give you the URL to the conference website so you can include a link to your presentation online as well as in your résumé and cover letter. Your future employer wants to see how you’re unique so don’t be afraid to show off your programming skills in a way that highlights your abilities.

View Article
10 Useful Websites for Programming Interview Prep

Article / Updated 12-29-2019

Programming interviews can be intimidating. Luckily for you, there are plenty of great websites for information not just about how to solve a wide variety of programming puzzles but also about how to find jobs and even get your résumé and cover letter written by certified professionals. It was hard to select only ten websites to recommend the job-seeking programmer, but these ten sites will give you the tools and information you need to succeed in your next programming interview. LeetCode The LeetCode website is one of the best places on the web to find and practice programming problems. All you have to do to view the list of questions is click the View Questions link on the home page to open the Questions page. What’s more, you’ll find problems to practice that are asked of interviewees at various large companies including Facebook, Google, LinkedIn, Amazon, and many others. Just click one of the companies listed in the Companies section on the right side of the Questions page. If you want to get the most out of the LeetCode site, sign up for a membership. LeetCode gives you the option of signing up for a monthly plan if you only want to use it while you’re looking for a job, or for a yearly plan if you want to use LeetCode as a resource for one calendar year. Currently, the monthly subscription costs $35 per month and the yearly subscription costs $159 per year. Interview Cake The Interview Cake website teaches you how to prepare for and succeed in a programming interview. If you need free information right away, the website offers a seven-day email course; just enter your email address on the home page. What’s more, you can get free information by clicking the Interview Tips link in the blue menu bar at the top of the home page. Click one of the topics in the drop-down menu to get more information about the topic. If you want to preview Interview Cake’s full course, click Full Course to the right of the Interview Tips and Glossary menu options. The free preview lets you look at sample questions in a wide variety of areas, and the bottom of the page contains links to programming problems posed by different companies. If you’re sold and want to purchase a course, Interview Cake offers two: a “crunch time” course that allows three weeks of access to site information for $149, and the full course for $249 that gives you one year of full access to the site. (Though the site also offers a $4,900 course with one-on-one coaching.) If you’re a student, you may qualify for discounted pricing. And both courses come with a money-back guarantee. Reddit Programming Forum Reddit is one of the largest community forum sites on the web, so you probably won’t be surprised that Reddit has one of the biggest online programmer communities, too. Just go to the Reddit Programming Forum to view the latest conversations. Scroll up and down the page to view the list of the most popular posts. Each post includes the subject title so you can click the link and view the entire post as well as comments left about that post. If you want to comment about any post or write a post yourself, you have to sign up for a Reddit account by clicking the Join button within the Community Details section to the right of the posts list. This site does come with paid advertisements within the feeds, but that’s the price you have to pay instead of real money. Before you post, be sure to read the programming rules and information within the Info section on the right side of the posts list. Read frequently asked questions by clicking the FAQ link just above the top of the posts list. Simple Programmer This popular programming blog is dedicated to teaching software developers soft skills and career skills in preparation for programing interviews. This website includes articles written by various programmers. To read an entire article, click the article graphic or the name of the article. If you want to write for Simple Programmer, move the mouse pointer over About in the menu bar and then click Write for us in the drop-down menu. The menu bar also includes options for you to purchase various products and get free courses and resources including career tools, programmer gifts, and more. When you click the About menu option, the person who created and maintains the site may be very familiar. Pluralsight Design Patterns Library If you want to learn design patterns backwards and forwards so you can use them in your daily development life, the Pluralsight website has a detailed library of design patterns. You can sign up for a 10-day free trial to view all the components in the library and see if it’s worth it for you. One enticement is that the library adds new patterns every month. After the 10-day free trial is over, you need to sign up for a Pluralsight membership, which includes access to the entire Pluralsight library. Currently, Pluralsight offers three different membership plans: A monthly plan for $35. An annual plan for $299. A premium annual plan for $499 that includes certification practice exams, interactive courses, and the ability to build projects. Pluralsight also offers memberships for business teams starting at $579 per user per year and enterprises starting at $779 per user per year. Hired.com If you live in certain metropolitan areas in the United States, Canada, and Europe, then you may be interested in joining Hired.com. This website is a great source for job-seeking programmers. It allows you to create an account for free and have companies apply to interview you for a job. As you scroll down the home page, you’ll see the metropolitan areas Hired.com serves, the types of roles and specialties Hired.com supports (including software developers), and a sample of how many different companies are looking for candidates on Hired.com. After you sign up, you need to create a profile much as you would create a résumé, but your Hired.com profile can also include photos of your favorite projects and links to your personal work. Hired.com also promises that your profile will be hidden to your current employer and past employers. 142 Resources for Mastering the Coding Interview The BetterProgramming blog hosted by the Medium blogging platform has an article that contains links to 142 coding interview resources. After you access the website, scroll down the page to see the entire list of resource links. Links are categorized in a variety of topics starting with a list of five classic coding problems and ending with a list of design patterns. Some categories include videos that tell you how to answer questions such as an Amazon coding interview question. Most links tell you what opens when you click the link such as a blog post or a video. And yes, there are indeed 142 links — as well as the five bonus classic coding problems at the beginning of the article — for you to view at your leisure. Stack Overflow Careers The Stack Overflow website is a popular community site for programmers, but you may not know that it’s also a place where companies post jobs and search for the right programmers they need. View the list of job postings by clicking the Find a Job button on the Stack Overflow home page or go to the Jobs page shown below. Above the list you can search for the job title you want by typing your search terms in the Search All Jobs box, and then click the Located Anywhere box to find the location where you want to find a job. When you’re finished, click the blue magnifying glass button and you’ll see a list of all jobs that meet your criteria. If you’re looking for a programming job and want employers to find you, Stack Overflow invites you to click on the Create a Developer Story button to the right of the list. A “developer story” is an online résumé so employers who are looking for you can find you more easily. However, you have to sign up for a free Stack Overflow account to create that story. So, sign up, set up your developer story, and let Stack Overflow make it easier for you to find the job you deserve. Slicker than a box of rocks. Interviewing.io If you’re nervous about the prospect of a programming interview, especially at a large technology company, check out the interviewing.io website. This site is great for programmers. It allows you to schedule free (yes, free) interviews with senior software engineers who will give you valuable feedback and tips for acing your real interview. Your free membership unlocks the ability to hold a mock online interview with questions about algorithmic problems, system design problems, and more from an engineer at one of a variety of large companies including: Google Facebook Microsoft Amazon Dropbox You choose the company you want to interview with and you’re anonymous throughout the mock interview. If you’re not sure about joining interviewing.io and/or want to see what an online interview looks like, you can scroll down the home page and click the Watch Some Recordings of Past Interviews link and see what happens in mock interviews. If you do well in the mock interview, you can “unmask” yourself so the interviewer can see who you are and you can set up an onsite, real interview with that company quickly. Slicker than a box of rocks. Information Technology Résumé Services Jennifer Hay is not only an excellent résumé writer — she was the first certified résumé writer in the United States —she’s also certified in career guidance, business intelligence, and information technology. Hay’s business, Information Technology Résumé Services (ITRS), is a great résumé writing service that services the United States, not just the Seattle area where ITRS is headquartered. ITRS provides résumé writing services for a variety of IT professionals including data specialists, IT administrators, and software developers. What’s more, ITRS provides free tips and articles as well as several low-cost and no-cost training videos. Even if you think you’ll have your résumé and cover letter produced by a local or regional company, why not compare what Hay has done for her clients with the sample résumés that other companies provide? It never hurts to compare other companies’ work with samples from one of the best résumé and cover letter writing companies around.

View Article
Uncovering Company Concerns and Showcasing Your Strengths in a Programming Interview

Article / Updated 12-09-2019

An interview is your opportunity to highlight your strengths. With programming interviews, this means showcasing your technical prowess and illustrating your ability to be a part of a team. You don’t want to inundate your interviewers with questions about their concerns with the company, so you should do some interview prep so that you have some answers already in your pocket when you come to the interview. The best way to learn more about the company’s concerns — and be able to then show the company your strengths and how those attributes can help put these concerns to rest — is to network with other employees in the company. Your research into the company will inform the types of questions you want to ask current employees either online in a private LinkedIn message or when you ask to talk to a company employee one-on-one during an in-person meeting or mixer. Some questions to ask include: What new hardware and software technologies are you looking into and what challenges is the company facing implementing them? What is the biggest issue facing the company right now and how is the company dealing with it? Why are you hiring a new programmer and how will the new programmer help you overcome these struggles? Your intelligence-gathering methods will pay off in two ways. First, you can tailor your cover letter and résumé so that they focus on the problem the company is having that you can help solve. Second, you can craft the messages you want to give to the interviewers during your mock interview and then have them at the ready during the real programming interview. For example, you can say something like, “I know you’re working on this new technology and here’s the experience I have with it and solving problems in this space. I can help you build and maintain the software and systems you’re working on. I can even help the marketing team with communicating the features so customers understand it.” Explain how you can help the team you’ll work with The information you gather about the company can also inform how you’re going to improve the team you’ll be working with. There are several ways you can communicate that before or even after you submit your cover letter and résumé to the company: Create a website that shows off your work. If you’re not into web design, there are plenty of free and low-cost website builders such as Google Sites and Wix that can help you get started. The website doesn’t need to be involved — just a place to show screenshots and give brief descriptions of what you did. Don’t forget to add information about apps you created or helped develop if you have them, and be sure to add links to your related pages. Start a programming blog. One of the pages of your website can be a blog where you can write about programming topics and especially about how you solved problems with teams at another company. (You may need to tweak the parameters a bit to avoid transmitting confidential information from the company you worked for.) There are plenty of blogging platforms such as WordPress and Medium that help you set up a simple, attractive blog. Consider creating a YouTube channel. Record videos to display on your channel that show people how to program and how to become better programmers. The videos don’t have to be very long, either. If you have a good webcam that has 1080p resolution and a good microphone, you can find free and low-cost tools online to record good-quality videos such as Free2X Webcam Recorder and Loom. When you maintain a website, blog, and/or YouTube channel, be sure to update them regularly. If you don’t, and one or more interviewers notices, you’ll need to explain why you haven’t been updating your online assets. For example, you could say that you were focused solely on improving one of your apps in response to customer requests so your customers could have the new and improved version as soon as possible. Demonstrate how you fit into the company culture If you’ve read any stories in your LinkedIn news feed or any business websites, you’ve probably noticed that company culture is a big deal with any business. When you network with company employees and you talk with interviewers, don’t forget to ask about and/or pick up on clues on what the culture is like and how it will determine who the interviewers recommend hiring. For example, there may be people on your team who play a specific online game and they want all team members to be on the same wavelength by playing the same game. If you find out during your networking process that people on the team love to play a specific game and you don’t play it, start playing the game and become knowledgeable. If you don’t know about the game until one of the interviewers asks you if you play it, tell the truth and say you don’t, but that you’d love to learn how to play it. Showing that you’re interested in the same things as your potential team members and are willing to connect with them could be what gets you the job offer. Another company may want people who like the outdoors because employees bond by doing a lot of outdoor activities together during the workday, such as participating on sports teams that play on weekends, or holding specific outdoor events to foster connections within and between teams. If interviewers learn that you like being outside, too, then they’ll talk with you about all the outdoor activities they have available for employees. If you respond that you’re very interested in that, you’ve taken another step toward getting hired. If you discover that Averagenaut SpaceCo does things you’re not interested in doing, such as playing an online game constantly, consider withdrawing your application for the job. Being the odd one out on your team could lead to you finding a new job sooner rather than later. You can spend your valuable time working for Spaceman Spiff’s Rocketry where you feel comfortable, and Averagenaut can find another candidate who fits them. Offer examples that back up what you say about your strengths As part of telling stories about your technical chops during the programming interview, you need to include examples from your past experiences that show how you learned more about what customers want and how you can best serve them. These experiences can be at different companies and/or your experience creating software on your own (such as smartphone prep). Even if you’re not going to be interacting with customers directly, showing that you’ve dealt with customers in the past and have at least some knowledge of what they’re thinking will only show off more of your value. After all, a programmer who’s customer-centric will put out a more usable product that will bring more money and customers to the company. What kind of examples do you need to come up with? Each example has to show some kind of positive outcome for the company and/or the customer you worked for. Here are some ideas to get you started: How you helped your team improve its productivity and by how much. How one or two times you worked long hours to ensure a product shipped on time . . . or even ahead of time. How your technical skills were key to finishing a software project that made the company money. How you fit into the company culture by participating in different events the company put on so that employees across the company could connect with one another. How you took advantage of company training that turned into an increase in your own productivity, which lifted the productivity of the entire team. Once you get your brain thinking about examples, you can list those in your notes you bring to your programming interview. You don’t need to write a detailed description in your notes — thinking about examples will (or at least should) jog your memory about what happened during every situation. Then you’ll be able to talk about them off the top of your head and enjoy the looks of amazement on your interviewers’ faces.

View Article
How to Prep for Programming Interview Questions

Article / Updated 12-09-2019

It may seem logical that you should find out what kind of questions the company will ask you before your programming interview so that you’ll be prepared. Most people, though, ignore this opportunity because they’re . . . optimistic that they can answer any question an interviewer asks. Don’t rely on your ability to think on your feet. Definitely take the time to do your interview prep. As a programmer, though, you’re probably more thorough in everything from getting the code just right to getting your interview down cold. Depending on how large the company is, you may be interviewed by the founders, a small number of people (like the entire programming team), or a cross-section of people from the team you’ll be working with, folks from human resources (HR), and perhaps even executives such as a chief information officer (better known by the acronym, CIO). All of these people will search online to find a list of questions to ask you about your programming skills. Your interviewers will also want to know about you as a person, so they will also ask the simple “soft skills” questions they’ve been asked in interviews before, such as where you want to be in five years, as well as look up similar questions to find out how you’ll fit in the company’s culture. Search online to find the top programming interview questions To be adequately prepared, you should think like your interviewers and look up the potential questions on Google to find out what kinds of questions you may be asked at your programming interview. For example, if you’re being interviewed for a Java programming position, it’s easy to find websites that contain a list of Java questions as well as the answers. Here are some common Java questions you’ll find and you should know the answers to: What is JDK, JRE, and JVM? Why is Java not 100 percent object-oriented? What are constructors in Java? What is the JIT compiler in Java? What is the final keyword in Java? What is constructor chaining in Java? What is polymorphism? What are the different types of inheritance in Java? What is a copy constructor in Java? What is an interface in Java? Don’t just give back simple answers to the programming questions you receive, because your interviewers want to know that you understand the answers. That means your answers should be followed with an explanation of why the answer is correct. Doing some interview prep work will help with this. Just reading the questions and understanding the answers aren’t enough, though. Our brains are hard-wired to remember things if we write things down. So, get out your pen and paper and write down the questions as well as the answers you find from one or more websites. How you write them down so your brain remembers them is up to you, but the physical act of writing with pen (or pencil) on paper is how our brains work. Don’t believe us? Just Google remember by writing down and see all the results that show why writing down is better than reading and even typing information. It may seem unnecessary, tedious, and even painful to you to write things down, but you can put your brain’s improved performance to work in your mock interview. You’ll be amazed at the results of this interview prep technique. How to answer soft skills questions in programming interviews If you’ve participated in any programming or job interviews, then you know about some of the standard “soft skills” questions interviewers ask to get a better idea of who you are as a person. You can get a soft skills question at any time from your interviewer or anyone on the interview panel — even a fellow programmer. Just as with programming questions, you need to search online for the types of soft skills questions interviewers may ask you to be fully prepared. Here are some of the most common questions that are asked and how you should answer them. Where do you see yourself in five years? The correct answer is to talk about being a part of the company, growing professionally within the company, and actively contributing to the company’s growth. With a little interview prep, you’ll be set on this question. None of your answers to this question should ever be about you planning to leave the company, such as, “I want to get a better job somewhere else.” If you say that, you’ll be dismissed immediately and then you’ll need take some time off to discover what it is you really want in life. What is your greatest strength and greatest weakness? The biggest problem with identifying your greatest strength is choosing the answer you want to use. If you can’t figure out what your greatest strength is, think about the strengths you showed at work and/or school from your past experiences. Then think about which strength you think the company would benefit from the most. The trap you can find yourself in when answering the question about your greatest weakness is trying to frame another strength as a weakness. For example, you might say, “My greatest weakness is that I’m a perfectionist. I like to do things perfectly.” Being a perfectionist doesn’t show the vulnerability required to be a weakness. Instead, consider a similar response about perfectionism, but add some vulnerability. For example, “My greatest weakness is that I tend to be a little bit too obsessed with things, and sometimes I cannot complete a project, even though it’s already good enough. I might spend too much time working on a small detail, polishing something that doesn’t need to be polished.” When you give an example of a weakness that tells the interviewers it’s something you need to work on, follow up by telling them how you’ve worked to turn that weakness into a strength. For example, you can say, “Over the years I’ve learned how to turn this weakness into a strength. What I’ve learned is that my attention to detail and my tendency toward perfectionism can be used in the right places to make sure that things are done properly. I’ve learned over time to know when things are good enough and I can move on. This has really helped me become a better developer.” How and why did you leave your last job? Answer this question not by bad-mouthing the previous company, your bosses, and/or your coworkers. Always be positive about your previous company. Do a little interview prep and brainstorm some possible responses for this interview question. Some reasons you can use for leaving your last job include: I felt that my professional development had stalled, and I wanted to take some time off to grow my knowledge and contribute to the programming community by taking advantage of speaking and writing opportunities. I needed to take time to get away from the computer screen for a little while and spend time with my family and some other important projects I needed to finish before I could return to programming. I had some family issues that needed my attention, but I still managed to keep my feet in the programming waters by adding posts to my blog and answering questions on Stack Overflow. These sample answers are honest, and talk about you and your situation at the time instead of denigrating others. How do you deal with conflicts in your job? This tough interview question is also one you want to answer without saying anything bad about anyone else. Your older family members were doing a form of interview prep when you were young by saying, “If you can’t say anything nice about someone, don’t say anything at all.” Answer this question by saying that in some instances you realized you were wrong. Perhaps you said the wrong thing during a conversation, didn’t say anything when you should have to resolve the situation, or didn’t ask a question you should have asked. In this case, tell the interviewers how you learned from the situation by learning how to change your behavior: You learned to listen more clearly, think better on your feet, and talk with the other individual instead of withdrawing. The interviewers aren’t looking for you to show that you’re perfect. If you did, the interviewers may think that you’re being dishonest and/or hiding something. Instead, they want to know that you’re a human being and that you’re a better person now because of your past experiences. Showing how you’ve grown personally over the years is even more critical if you’re applying for a higher-level position such as a senior-level programmer or a manager of a team, where maturity at this stage of your life is an important asset.

View Article
Negotiating Your Programming Job Offer

Article / Updated 12-06-2019

Hopefully, your programming interview ends with a job offer. Once the company gives you a salary amount or benefits package to consider, you need to begin job negotiations and give a counteroffer — even if the company’s offer gives you more than what you expected. Why? A company that’s invested enough time and effort to interview you and make an offer is always going to come up a little bit low and leave itself a little bit of wiggle room to negotiate the job details. Always presume the company is experienced with job negotiating with potential employees and will expect you to provide a counteroffer that’s a little bit higher. You don’t want to leave any money on the table just like you wouldn’t knowingly leave a public place without your wallet that has a couple thousand dollars in it. Giving a counteroffer You may be afraid to negotiate the job details because you think you’re going to lose the job, especially if this is the job you dreamed of or you need a job right now. Here’s our counteroffer for your brain: You need to understand who’s the most important person in the conversation. (Yes, you.) If you’re still not convinced, try reading the book, Never Split the Difference by Chris Voss and Tahl Raz (HarperBusiness). After you read it, you’ll understand why Voss and Raz subtitled the book, Negotiating as If Your Life Depended on It — because it does. It’s also natural to think that if you counteroffer with a number that you think the company will see as too high, then it’s more acceptable to meet in the middle of what the company has offered and what your desired highest salary is. Then the company representative will counteroffer with an amount that’s lower than what you think the middle is. Congratulations! You’ve just lost a lot of money. So, counteroffer with your high amount. The company representative likely expects that, too, because he expects your counteroffer will come with a little wiggle room, and you’ll be willing to accept a somewhat lower salary than your counteroffer amount. In the worst-case scenario, the company representative won’t negotiate the job at all and will say that the offer is final. Then you’ll have to review the rest of the company’s proposed benefits package and see if you can negotiate one or more of those benefits. Making counteroffers and getting more money won’t just improve your life and livelihood right now, but also in the future as you grow with the company. After all, you expect to get raises at some point, so you need to remember that raises are usually based on the percentage of your pay. If your pay is higher, then your raises will be higher, too. What’s more, if you’re going to get another job in the future, then the higher pay from your current job will likely lead to an even higher starting salary at your new job. Negotiating more than salary The first job negotiation session is usually about salary, but that’s only one of the cards in the company’s hand. The rest have to do with other benefits the company is offering. These benefits could offset a lower salary if you get more flexibility in your job and more opportunities for making a lot of money if you think those opportunities will come in a reasonable amount of time. For example, you can make counteroffers about a signing bonus for joining the company, the amount of time off you get, the 401(k) matching amount, and how many shares of company stock you get. There may be other options in the package to negotiate. If the company is a startup, you may be able to negotiate an ownership stake when the company meets clear financial milestones. You could negotiate your roles and responsibilities. If there’s the opportunity to work from home, you can negotiate how often you can do that. You can even negotiate the equipment the company will provide you to get your job done. Avoiding pitting companies against each other during negotiations It’s possible you’ll be negotiating a job with one company knowing that you already have one or more offers from other companies. This is one card you don’t want to play because it makes it very easy for the company to withdraw its offer. So, play it straight. Don’t respond to the company’s offer by saying, “Hey, I got a higher offer from another company that has also offered me a job.” The company representatives will likely ask you what that offer is. Tell them and they’ll counteroffer with a slightly higher offer than what the other company is offering, and you’ll be prevented from getting the highest amount possible. If you don’t, and they have to guess, then one of two things may happen. First, you may get a much higher offer than what you were expecting, but they’ll still get a bad vibe about you and they may not be as willing to negotiate other parts of your benefits package. Worse, people in the company will talk about it, and you don’t want to come into a new job with people giving you the side eye. The other result is that they’ll see you as unprofessional and possibly lying to them, withdraw their offer, thank you for your interest, and escort you from the building. If you want to mention that you’re entertaining multiple offers, you can do so at the end of the job negotiation. You don’t have to tell the company representatives about the other offers or even the companies’ names because you should always presume that company recruiters talk to each other. That’s especially true if you’re looking for jobs in the same geographic area, and those recruiters can ensure you won’t play cards with them anytime soon. Walking away from a job offer The best negotiators are those who are willing and able to walk away. The company you’re interviewing with is certainly willing to walk away if it can’t get you to agree because it likely has second and third choices for the job. The best way to look out for number one (yes, you) is to ensure that you’re interviewing with multiple companies and, better yet, have at least one other offer from another company. If you’ve applied at a number of companies and interviewed well with at least a few of them, it’s likely you’ll have the ability to walk away from the company’s table, too. What’s more, you should have some side projects that you’re working on so you’re still generating income if you have to walk away. You don’t want to be in a situation where the company you’re negotiating with is the only one you’ve applied to and interviewed with. In that situation you’ll be more desperate to take any offer whether you realize it or not. If you decide to walk away, do so in a respectful way — don’t be angry, threatening, or plain old nasty. You can say, “Hey, this isn’t what I’m looking for. I’m sorry we couldn’t come to an agreement, but this isn’t the right opportunity for me. I’d love to work for you, and I’m sure we could do great things together, but we can’t agree about the job benefits and that’s okay.” Being polite and respectful will leave the company representatives still thinking highly of you — so much so that they may decide to continue job negotiations. They may even offer you more because you’re head and shoulders above their other choices, or their second and/or third choices don’t work out. What’s more, one day in the future, this company may invite you to apply for a different job with you specifically in mind, which is the best kind of job offer to get. Then don’t be surprised if you end up with a better hand than you had during your first card game.

View Article
10 Non-Technical Questions You May Be Asked in a Programming Interview

Article / Updated 12-06-2019

Your phone screen and/or in-person programming interview will likely include some non-technical questions — better known as ones designed to test your “soft skills.” You need to prepare for these questions ahead of your programming interview because if any of them take you by surprise, they will harm (or end) your ability to get hired. Though you don’t need to give the exact answers included here they should get you started as you put together your responses for your phone interview, mock interview, and your actual programming interview at the company. What is your greatest strength? You should answer this soft skill question in an unabashed manner — that is, be very clear about what your biggest personal strength is. If you aren’t sure, think about the one thing you’re most passionate about. What’s more, talk about how you’ve used and demonstrated that strength. Talk about how you think that strength is rare, unique, and something that helps you stand apart from the crowd. Most important, tell the interviewers how you’ve used that strength to become a better software developer. It doesn’t matter what your greatest strength is if it isn’t valuable to your employer. What is your greatest weakness? This is a classic question designed to trap you. You have to avoid giving an answer that is actually a strength and pretend like it’s a weakness as well as give an answer that’s so transparently debilitating that your interviewers decide you shouldn’t be hired. For example, don’t say that you’re a perfectionist and so it’s a weakness because you want everything to be perfect. Interviewers can see right through that kind of answer and it will make it appear as if you’re trying to deceive the interviewers by not giving them honest answers. On the other hand, if you say that you have mental issues and you’re taking medication for it, then you’ve entered the TMI (too much information) zone and your interviewers will be persuaded that you shouldn’t be hired. (Sadly, mental illness is still stigmatized in society.) So, think of a real weakness that you’ve used to make yourself better. One example is to say that you’re someone who always finds one more thing to fix and so in the past you had problems releasing products. Then you can follow up by saying how you’ve learned from that weakness by writing down what needs to be finished for the product to be released at the beginning of the project and how that approach made you a more effective software developer. Where do you see yourself in five years? This question is designed to disqualify you as a candidate. It’s easy to respond to this soft skill question by saying, “I don’t know.” Though that’s an honest answer, it’s not a good one. You may be dismissed from the interview if you’re even transparent about your intentions such as you’re going to be working in a different job because you expect you’ll hit a wall in your development within the next five years. Instead, you need to answer the question by telling your interviewers that you’re going to be growing professionally along with the company and tell them how you’re going to do that For example, you may tell them that you’re going to improve not just your programming skills but also your mentoring skills. Then you can say you not only want to be the person on the team people come to for information or advice, but also you want to make the team the best it can be in the next five years so managers can be confident the team can produce any product for customers. In sum, your answer needs to reflect that you know what you want your direction to be within the company — even if you say that you want to be the team manager, department manager, or part owner. Why did you leave your last company? Here’s another question designed to disqualify you because you can answer it in the wrong way very easily. The best way to answer it is to always put a positive spin on your experience. A quick way to take yourself out of the running is to say you hated the job, you hated the boss, and/or you were fired. If you can’t say anything nice about your job or your boss, you can still give interviewers one or more good answers: The job culture wasn’t the right fit. You recently moved to this area. Your skillset wasn’t being used fully and you felt that you didn’t make the best contribution you could. You’re looking for new opportunities and challenges. You wanted an opportunity to work with the technologies that the company you’re interviewing with is using. When you mention you want to work with new technologies, this is a good time to say how you’ve been learning these new technologies and applying them such as in a side project or talking about them in your blog. The moral of this story is to be honest in your answers to these soft skill questions but don’t reveal anything negative. Name a time you got into a conflict with a coworker, and how was that resolved? This is another question to test your maturity or, to use the vernacular, get a sense of your emotional quotient (EQ). Most people have had some kind of conflict with a coworker, no matter how small, because it’s inevitable when you’re working with different personalities in one location. Even if you’ve been working on your own for a while, you’ve probably had an issue with a customer either in person, on the phone, or in an email message. No matter what conflict you think of from the past, you need to spin it in a positive light. Here’s how: Don’t talk badly about your coworker or the person you were working with, such as a customer of your app who yelled at you. Don’t tell the interviewers that the other person was an idiot or that he or she made a mistake. Tell the interviewers how you resolved the situation is a peaceful way. Explain how you learned how to see the other person’s point of view. Discuss how you realized you were also wrong and how you grew from that realization. Say how the experience helped teach you how to better manage conflict. What the interviewer is looking for with this soft skill question is how both you and the other person came to a resolution that was beneficial for the company overall. What did you like about your last job? When you prepare to answer this question, think about the things that will mirror the job you’re applying for. If you previously worked for a small company and you’re applying to work at a big company, it won’t make sense if you talk about how you liked the energy of working for that company. The interviewers will think that you’re not going to be happy at the job you’re applying for, so they’ll wonder why you’re applying for the job in the first place — and that if you’re hired, you’ll leave quickly. Instead, talk about positive things in your last job that you enjoyed. Those things can include your boss and/or your coworkers who had personality traits and interests that you’ve noticed in some of the interviewers during your interview. You can talk about the work environment if your interviewers note their environment is much like the one you had at your last job. And based on your review of the job description, you can note that in your last job you used the same technology that you’ll use in the job you’re applying for, so you’ll be a perfect fit. What did you dislike? This is another one of those “don’t say anything negative” soft skill questions. Your interviewers want to see if you’re a negative person when you have a chance to be, but don’t take the bait. Instead, you can say that there wasn’t anything in particular that you really disliked about your last job — you were happy, you enjoyed working for the company, and you enjoyed your coworkers. After you talk about the people and environment in your last job in glowing terms, make what you dislike seem like it’s not a big deal. One explanation could be, “I just felt like my talents weren’t being used to the fullest. I thought I could do a lot more for the company but there wasn’t the opportunity.” This answer also doesn’t include the word “challenge,” which can be a red flag word for interviewers because they may get the impression that if you’re not challenged enough in your job, then you’ll leave sooner rather than later. Why do you want to work for us (or this company)? Answering this question is a good opportunity for you to show that you researched the company before you came in for the interview. Depending on your company research, here’s how you can respond to this soft skill question: Talk about the history and culture of the company, such as, “I really like the founder’s mission and how he started out working in his garage just like I did. I aspire to fulfill that mission.” Tell the interviewers how you can make an impact and how your skillset perfectly matches what the company is looking for. Explain how you’re excited to raise the bar on the team to the next level and how you can help the programming team do that. Your answers need to show that you really know both the job and the company, and that you’re not just someone who would take any job — you will only interview for and work for a company that has high standards. That will tell your interviewers that you have high standards, too, and will help persuade your interviewers that you’re not only worth hiring, but you’ll contribute to the high standards set by the company. Why should we hire you? This one is a true test of your soft skills. You need to frame your answer to this question in terms of what’s valuable to them. Don’t talk about why you want the job or how it benefits you. Instead, talk about the benefits you’ll give the company after they hire you. This is the time to brag about yourself a little bit — that you’re the best candidate for the job because you’re really skilled at the programming language or technology, talk about your accomplishments, and talk about how you continually show leadership in the software development community through your online resources. This can also be the time that you take your self-published book out of your briefcase to show off. Before you start to annoy your interviewers with all your swagger, switch gears and tell about how you can make the team better. That is, you’re the kind of person who figures out what needs to be done, figures out how to do it, and gets it done. You should note that you’re a low-maintenance employee, but you’re not just someone who will go off in a corner and work on a job — you’re also great at working with teams to get the job done and spread the credit around. Why are you the best candidate for this job? Interviewers will ask this question right after why they should hire you, and this is not a time to be humble. If you’re humble (or, worse, self-deprecating) then you’re blowing the chance to describe all your best qualities. So, follow up on your previous answers about why you should be hired by showing and giving an overview of what you’re doing: You have a blog that you update regularly. You have a YouTube channel that not only contains a number of instructional videos but also your video résumé and vlogs — and you add more content regularly. You post new audio podcasts frequently. You’re written at least one self-published book. You’re commenting and answering questions from fellow programmers on software development websites including GitHub and Stack Overflow. You’ve spoken at local developer, business events, and/or large developer conferences. You attend developer conferences as often as your schedule allows so you can continue to make new connections and learn about the latest trends. Then you pass along what you learned from those conferences to your readers and viewers. If you’ve done most — if not all — of these things and continue to work on many of them (such as writing blog posts and producing videos), then you’re going to command the interview room. Now you can use that position to show interviewers how you’ve applied your expertise in past jobs: Tell how you’ve helped other companies in the past that you worked for. Show that people who work with you now and/or have worked with you in the past who have written recommendations endorsing you. Explain how you communicate your points effectively. Discuss how you’ve made projects successful. Describe you’re a good team player and enhance the performance of the entire team. Talk about your leadership qualities and how you’ve influenced people. You may think of other qualities that you want to tell the interviewers, but you get the idea: This is your opportunity for you to shine and leave stars in your interviewers’ eyes — and you only have a short amount of time to do it. Make every second count. When facing non-technical questions in a programming interview, you’ll be best equipped to answer if you have performed background research on the company so that you can answer in line with the company’s culture and expectations.

View Article
10 Great Books to Read to Prep for a Programming Interview

Article / Updated 12-05-2019

There are plenty of great books for information not just about preparing for your in-person programming interview, but also about how to solve a wide variety of programming puzzles. Here are ten books you should consider reading to get a leg up on your programming interview. Cracking the Coding Interview Gayle Laakmann McDowell, owner of CareerCup in the San Francisco Bay Area, has published six editions of her best-selling book, Cracking the Coding Interview. This book contains 189 programming questions, including many algorithm-style problems, and their solutions. The book also has a lot of good advice about how to prepare for and ace a programming interview, which isn’t surprising because CareerCup offers personal interview preparation services. Though the sixth edition was published in July 2015, the book is still current and as of this writing remains a number one bestseller in the computer programming languages category on Amazon. What’s more, the CareerCup website has a list of recent interview questions that readers have submitted so you can see what companies are asking programming candidates. The site also includes videos of mock interviews conducted by McDowell with unscripted candidate reactions to learn from. Never Split the Difference Though we’re negotiators from the time we’re very young, negotiating your benefits package at your potential new employer can seem overwhelming. After all, your life and your ability to live the way you want are on the line. So, don’t start negotiating until you’ve read Never Split the Difference: Negotiating as if Your Life Depended on It. The book was written by Chris Voss, a former FBI lead international kidnapping negotiator, and award-winning business author Tahl Raz. (The book also has a five-star customer rating on Amazon.) Saving lives honed Voss’s negotiation abilities, and he shares nine negotiation principles that may seem counterintuitive, but will give you the competitive edge — from establishing a rapport with the people you’re negotiating with to how to bargain so you get the price (or, in this case, the salary and benefits) you want. Programming Pearls If you’re looking for a book that will tell you how to solve algorithm problems in C and C++, then the classic Programming Pearls by Jon Bentley is the book you need. This book was originally written in 1986 and updated in a second edition in 1999, and despite the book’s age, the concepts and problems contained within are those you need to know to prepare yourself to answer interview questions. Chapters in this book follow the same pattern: Choosing the process of finding the right algorithm to quickly find a solution that’s effective and accurate. Code profiling to get the correct answer to a problem. Programming principles for you to remember. A final list of problems for you to solve. When you finish reading this book and solve the problems within it, you’ll be a better programmer and ready to pass any interview with flying colors. Daily Coding Problem This book by Lawrence Wu and Alex Miller has the subtitle, Get Exceptionally Good at Coding ours by Solving One Problem Every Day. Wu and Miller are both software engineers. Miller has interviewed hundreds of candidates for companies such as Yelp and Pinterest, and each question is based on an actual interview question asked by large tech companies. You’ll answer questions in a variety of categories including: Arrays Strings Sorting Recursion Linked lists Hash tables Stacks and queues Randomized algorithms These categories are just a sample of all the categories in the book, and you can decide which questions you want to work on based on the programming job you’re interviewing for. After you get into a groove and solve your daily programming problem, you’ll feel confident that you can answer any question by the time you reach the last page of the book. The Complete Software Developer’s Career Guide This book is for every programmer no matter his or her skill level. It asks (and answers) several important questions including: What programming language should I master first? How do I fill the gaps in my programming knowledge? How do I get around the “chicken and egg” problems of companies requiring three to five years of job experience that I don’t have? Is getting a computer science degree a necessity or a waste of time? How do I find a great coding bootcamp so I’m not scammed out of a lot of money? Should I take contract work or hold out for a salaried position, and which option brings me more money? How do I manage my boss so that he doesn’t micromanage me, but so that I can still help him succeed? This book discusses the human side of software development and when you finish reading it, you’ll understand why Amazon lists the book as a top seller in job interviewing. The Imposter’s Handbook This ebook written by Rob Conery is only available on the Big Machine website. Conery bills the book as one for people who want to teach themselves computer programming without having to go through formal schooling. Conery did this by diving into all the topics that a typical computer science degree requires from the Stanford University website. Then he wrote a book that covered all those topics including design principles, algorithms, design patterns, and data structures. What’s more, Conery offers a print edition of the book for $49.99 (as of this writing; the ebook version costs $30), which includes 17 video walkthroughs so you have a full understanding of what Conery covers in the book. If you like the book, Conery invites you to purchase the second volume, The Imposter’s Handbook Season 2, which also costs $30, so you can learn about advanced topics including information theory and blockchain. You can also buy both volumes for only $49 instead of the normal $59. How to Win Friends and Influence People The Dale Carnegie book, How to Win Friends and Influence People is considered the seminal book for learning how to improve their interpersonal skills so people can get the outcome they want from any situation. Carnegie died in 1955, but his book has been updated constantly since then, with the last edition published in 1998. This book teaches you six ways to make people like you (smiling is involved), twelve ways to get people to adopt your way of thinking, and nine ways to change people without making them angry or resentful. After multiple editions published and over 15 million copies sold, the book is still relevant today and will be relevant as long as humans behave the way they do. Programming Interviews Exposed John Mongan, Noah Kindler, and Eric Giguere wrote the fourth edition of this book, subtitled Coding Your Way Through the Interview. Because this book is published by Wrox, a sister Wiley book brand, it’s the natural complement to this book. Programming Interviews Exposed primarily covers programming problems you’ll encounter in the phone screen as well as in the actual programming interview, including: Arrays and strings Concurrency Counting, measuring, and ordering puzzles Data science, random numbers, and statistics problems Databases Design patterns Graphical and special puzzles Graphics and bit manipulation Knowledge-based questions Linked lists Object-oriented programming Recursion Recursion, string, and duplicate questions during a phone screen Sorting The best way to analyze your solution, especially by using the Big O analysis Trees and graphs Pick up Programming Interviews Exposed so you can get a full understanding of the programming interview process. Programming Interviews Exposed uses a soup-to-nuts approach to tell you about all the programming questions (and answers) you should know. The Passionate Programmer This book by Chad Fowler talks about approaching programming holistically. That is, not looking at the next job but at your career as a whole so you can drive your career in the direction you want. Though the book was published in 2009, the concepts in the book are as fresh today as they were then. Through a series of essays in the book, Fowler shows you what your career looks like from a 30,000 feet review so you can see what you need to do now as well as 5, 10, and 20 years from now. That work includes creating a structured plan for keeping your skills fresh and your brain thinking. When you’re thinking ahead, you can see what skills are becoming important and in what fields. You also learn to assess your programming skills and how to train yourself to be marketable to companies that use those new technologies. You’ll find yourself working on more interesting technologies and getting paid more in the process. In sum, if you’re looking to become a leader in the software development world, you should buy this book, which is available only as an ebook on Amazon Kindle. Head First Design Patterns This book by Eric Freeman, Bert Bates, Kathy Sierra, and Elisabeth Robson was published in 2004 — which you can tell from the model on the cover who looks like rock singer Gwen Stefani in those days — but the information is still relevant because many design patterns haven’t changed over the years. The subtitle of this book is A Brain-Friendly Guide, and the book lives up to that claim by providing not only simple explanations of common design patterns, but also many visual examples to reinforce the concepts explained in the text. The book covers an extensive list of patterns you may encounter during your programming career, including: Adapter and façade Command Compound Decorator Factory Iterator and composite Observer Proxy Singleton State Template Method The book ends with a chapter about how to apply these patterns in the real world and an appendix of other patterns that aren’t as important to know but you may encounter in your work. If you’re the type of person who needs simplified information and illustrations that help reinforce concepts, this book will make it easier for you to understand design pattern concepts, why they’re important, how to recognize different design patterns, and how to use them in your code.

View Article
Canvas Your Network to Find Mock Interview Opportunities for Programming Jobs

Article / Updated 12-05-2019

Mock interviews are great interview practice, especially when it comes to programming opportunities. Programming interviews often come with their own set of particular questions and assessments so it’s a great idea to do some interview prep work. Sometimes, it makes sense to impose yourself on your friends to help review your cover letter and résumé, and help you with mock interviews. Your friends aren’t the only people in your network, and it’s likely they won’t all be available to help when you need them, either. Is it time for dramatic music? Cue the adventurous music instead because the situation is far from bleak for you, programming superhero. LinkedIn is a premier resource for finding people who currently work at the company you are interested in or have worked at that company before. And if you’re going to work for a large company such as Microsoft or Amazon, you’ll also find books specifically written about the interview processes at those companies. When the company calls to set up your interview, learn from the company representative how many people will be interviewing you and the interviewers’ roles if you can. That knowledge will help you prepare your mock interview the right way. If the company rep won’t tell you, then prepare as if you’ll be meeting with an entire panel of interviewers — at least seven. Here you learn how best to canvass your network so that you can learn more about the interviewing tactics of the company you wish to work for as well as find folks willing to be a part of your mock interview team. Interviewing programmers who have interviewed before If you’re fortunate, one of your friends will have interviewed at the company before — or knows a person who did. Your friend will be able to give you some pointers not only about what kinds of questions you may get but also what the entire process is like. If one or more friends work at the company, they may also be able to tell you about your interviewers so you know how to deal with them. If talking to a friend isn’t an option, you still have three paths to explore. LinkedIn If you have one or more LinkedIn connections who work in the human resources industry, contact them and ask if they know anyone who has worked at the company before. You’ll obviously have much better luck if you’re applying at a large company with many locations because such a person will be easier to find. What’s more, the company likely has a fairly standardized interview process, so if your HR contact recommends someone at another location, the process at that location is likely the same as the one for the office in your area. You can also search for the company directly in LinkedIn. A company search will also bring up the profiles of people who currently work for or who have worked at that company. If you’re lucky, one or more of those people will be linked to one of your connections so you can ask your connection for a referral. Otherwise, you’ll have to pay for and use InMail to make a connection and hope that person is happy to help you. Programming forums There are plenty of programming forums and groups on other social media websites such as Facebook and Reddit where you may be able to find people who work (or have worked) at the company. And don’t forget to canvass programmer-centric websites including Stack Overflow and LeetCode that have online forums; on those sites you can chat with other programmers and find out if they know anyone who works for the company you’re interested in. web-based programming forums and groups are less targeted than LinkedIn, but it’s still a path with breadcrumbs. In-person events If you’ve applied to a job at a specific company in your area, then you should check out in-person programming events in your area. Your local newspaper and/or business journal as well as online meeting sites like Meetup should have information about when the next event is. Even in-person events aren’t as effective as LinkedIn at finding people because you have no idea who will be at the event, let alone how many people will be there. But, like programming forums, live meetings are another opportunity to find the person you’re looking for, or a person who can get you in touch with The One (or several Ones). Find people who will give you mock programming interviews Chatting with others online and reading books only take you so far. If your friends and other connections are in the same area you are, then you can get them together at a location that’s convenient for everyone such as shared office space that offers its conference room for rent and conduct a mock interview session. Some, if not all, of your friends will be happy to participate in a mock interview. However, you don’t want the mock interview to be friendly and easygoing. You want it to be nervous and intimidating — that is, as close to the real thing as possible. Only a realistic mock interview will give you the feedback you need to feel good when you start your actual interview. Therefore, you may not want to have all your friends as mock interviewers because during the real interview, you’ll be in a room full of strangers. One of your top priorities should be to find and talk to a programmer with more experience than you so that that programmer will give you harder programming problems and won’t be afraid to ask challenging follow-up questions. More experienced programmers, such as your potential boss, await your arrival for the real interview. You can also use social networking sites, online programming forums, and in-person events to also find more experienced programmers. It’s easy to find a person’s experience online, but in the case of in-person events, you may have to ask the event coordinator who you should talk to. Schedule your mock interview Your ability to schedule a mock interview will depend on how much time you have between the time you get the call from the company and when your company will be holding interviews. Many companies hold interviews during a block of time, such as during one week, so everyone in the company can get their other projects done and then concentrate on hiring the new employee. When you talk to friends, strangers online, or strangers in person, ask them if they would be interested in participating in a mock interview at a convenient location like a rented conference room. Also be up front about your time constraints, and hopefully many of the people you talk to can accommodate your schedule. You should block off at least four hours (that is, an entire afternoon) for the interview because you’ll not only go through the mock interview but also receive feedback from your interviewers as well as people you may want to serve as observers. Reward your interviewers well You should approach each mock interview member either in person or online to ask them about what they want in return for their time and effort. People will want to be compensated in some way, and you’ll need to figure out what that is — it could be a hearty meal, a gift card, or just a trade that you’ll participate as an interviewer in the other person’s mock interview. You may need to give different gifts to different people. One way to do that is to give people a choice of what type of gift they want from a list of gifts you’re willing to give. Your potential interviewer may have a suggestion for a gift instead, and you’ll have to decide for yourself if you want to do that (or your budget may decide for you). Don’t serve any snacks or even meals until after the interview. During the interview, just serve water as that’s likely all that’s going to be served by the company during your real interview. Prepare your interviewers A mock interview is a good opportunity for your interviewers to role play and give you a good idea of how to work with the personalities of your interviewers. At least a day before you meet for the mock interview, think about who your interviewers are going to be, fire up Microsoft Word or your favorite word processing application, and type a one-page description for each person about what department they work for and what type of personality they are. For example, one interviewer can be very dominant, another can be nice, and another can be submissive. Don’t type suggested questions into these descriptions. The mock interviewer is responsible for coming up with a list of questions based on the description. You’re not supposed to know the questions ahead of time, just as with a real interview. When you’re done, print out each description and give it to each person at least a few days before the mock interview starts so that you know each interviewer knows their role. Each interviewer will have some time to absorb it, form their questions, and rehearse their behaviors in their heads before the mock interview begins. Here’s a sample mock interviewer description that you can use as a starting point in building your own: You are an expert in Java, but you feel like your skills aren’t being used at the company to their fullest extent. For that reason, you feel like any new person interviewing for a job better be at least up to your level or you don’t even want to deal with them. You are dismissive of anyone who claims to know Java and doesn’t have the skills to back it up and assume that everyone fits that category — unless they prove otherwise. You don’t really want to hire anyone because you feel threatened by anyone who could challenge your skills, so you’ll be looking for flaws in even the highest qualified applicants. You also like to see how people react under pressure, so you often try to get a rise out of candidates by directly challenging them and being combative. Include observers The mock interview should also include at least two observers who will take notes about how you and your mock interviewers perform. These observers should sit out of easy sight, such as in the corner of the conference room. Feedback from people who aren’t participating directly is invaluable to getting information that can help you during the real interview. All this good feedback will also be invaluable for everyone else on the team since they may find themselves looking for another job someday. That argument may convince one or more people who are on the fence to join your mock interviewing team because they’ll know they’ll benefit from the experience. Take notes to improve your answers to interview questions A mock interview is the perfect opportunity for you to take notes as you’re asked questions and after you finish the coding test so you can understand what you’re doing well and where you’re falling short. You should also write some notes right after the mock interview to get your impressions of the experience and any other thoughts about where you could do better. Your observers will be able to fill in some gaps in that knowledge as well, so be sure to get copies of their notes. (And don’t be surprised if others in your mock interview group want copies of your notes to refer to the next time they have an interview.) If you have the time and your interview team is willing, you may want to have a second interview after decompressing for a couple of hours and then see how well you fix some or all of your issues. However, some interviewing problems may need to be fixed during the time between your mock and real interviews, such as filling holes in your programming knowledge.

View Article
Salary Negotiation Tips for Programming Interviews

Article / Updated 12-05-2019

Salary negotiations can be a bit of a last hurdle in landing your programming dream job. You may have the warm and fuzzies about a company, but if they can’t come close to your expected salary, it may be a no go for this programming job. First you’ll want to conduct some research to learn about the average salary for the position you’d like to expect. Don’t assume your last salary is the average. Once you’ve done your salary research and you have your cards ready, the company will try to get you to at least ante up if not reveal one or more cards. One way companies do this is by bluntly asking, “What is your current salary?” You may receive a less blunt but similar question; for example, Salesforce asks, “What is the compensation you expect?” You may feel no matter how the company asks you questions about salary, it’s perfectly reasonable to answer them, and so it feels uncomfortable not to divulge this information. However, doing so will put you at a disadvantage. Learn the company’s expectations before salary negotiations begin The company representatives already have an advantage because they’ve researched typical salary information for programming jobs — probably more than you have — and they also know what they’re paying their own employees. So, they want to use one of three strategies to pay you as little salary as possible when you start your programming job: They want to get a number from you and then give you a slightly higher offer so it looks like they’re being generous. If you give the company representatives a salary amount that’s on the lower end of their wage scale, or a number that’s even lower than the wage scale because you haven’t done your homework, then they’ll offer that lower amount. If you discover later that you should have asked for a higher amount and you try to negotiate a higher wage, the company representatives will claim the wage they’ve offered is in line with your expectations. If you answer with a number that’s too high, the company may not want to pay you that much money . . . at least not right away. If you can’t negotiate a lower salary to start and work up to the salary you’re looking for over time — that is, if the company is even willing to negotiate — then the company will walk away from the table. Play the salary negotiation game by protecting your expected number So, the name of this salary negotiation game is that the person who offers the amount first loses, and it’s important that the company gives you the first offer. Company representatives know this, too, and that’s why they’ll be so insistent on asking you some variant of “What are you looking for?” You can politely answer these salary-related questions in one of several ways depending on your feel of the situation: I would rather not talk about that right now. I can’t reveal that amount because it’s proprietary information from my current employer. I’d rather not reveal that information because I think it would put me in a disadvantage. I don’t want to reveal that information because I don’t see how it’s relevant to the job you’re hiring me for. I prefer to discuss salary and other benefits when we decide we’re going to work together. I have a full benefits package and salary is just one part of it, so the salary part by itself doesn’t give me enough context to be used in any kind of evaluation or negotiation. I’ll consider any reasonable offer. When salary negotiations hinder further conversation If someone from human resources or your potential boss insists on salary information to move on, then based on the homework you did finding salary information online, it’s best to give a salary range that’s at the higher end of your expectations. Then the company will finally give you an offer that will likely be at the low end of that range, but at least you can still negotiate the price higher because now the company representatives know the range they’re working with. If you have done the interview prep work and researched average salaries for the industry you’re targeting, you should feel confident in your programming skills and expect what to get paid what you’re worth. Even if it feels like you’re asking for too much. Salary negotiations are about finding what you and the company can happily live with.

View Article
10 Mistakes to Avoid if You Want to Land a Programming Interview

Article / Updated 12-02-2019

Want to land some programming interviews? That all starts with your résumé and carries through to how you conduct yourself for screening and interviews. Your résumé will be the first or second thing (after your cover letter) company representatives tasked with hiring a new programmer will read to learn more about you. A résumé serves as a concise summary of your accomplishments and the only impression prospective employers will have about your abilities until they talk to you in your programming interview. The initial reviewer of résumés acts as the company gatekeeper, and that person will determine if you’re worth considering for the job. What’s more, your résumé will be put in the shredder if you give a poor performance during one or more of your interviews. You can’t come across as anything other than polite and straightforward if you want the job. So, it’s important that you don’t make even one of the following ten résumé mistakes. Feel free to use this information as a checklist as you review your résumé and prepare for your programming interview. Your résumé has typos, spelling errors, and uses incorrect grammar The first and most obvious problem a reviewer will find in your résumé is a typo, a spelling error, or incorrect grammar. It’s very easy to make these résumé mistakes, which is one good reason why it’s a good idea to use a résumé writing service. So what, you say? Just a little typo here or spelling error there isn’t a big deal because everyone makes mistakes, right? An employer is judging you from the moment the person reviewing your résumé and cover letter takes a look at both. Just one error means you’re not just unprofessional, but you also lack attention to detail. In software development, attention to detail means the difference between getting an application completed on time, getting good reviews from customers, and/or getting the next round of funding from investors so the company can stay afloat and employees can keep their jobs. Your résumé is too long It’s tempting to tell the company everything about your employment history in your résumé, especially if you’ve had a long career, because you want to impress the reader with how much experience you have and how many programming languages you know. Resist that temptation and put yourself in the shoes of the résumé reviewer. Reviewers have dozens if not hundreds of résumés to go through, and it becomes overwhelming not only to read through your pages of experience but also to pick out what experiences you have that are relevant to the job opening. Most hiring personnel will agree it’s easier and faster to put a long résumé in the “to shred” pile. So, you need to tailor a different résumé for each job opening. Start with the master copy of your résumé, create a copy for the company, and then edit that copy so that it fits the job description and is to the point. A one-page résumé is ideal, but don’t make it longer than two pages. You want to tell your prospective employer that you’re valuable to the company because your skills fit the job description to a T. A short résumé will not only tell your prospective employer that, but also potential interviewers may be curious to learn more — especially if you add links to your online resources such as your blog and social media profiles. You start your résumé with an objective A company is not interested about what you’re looking for or what your career objectives are. Putting an objective at the beginning of your résumé shows that you’re only interested in what value you can get from the company, not what value you can give it. What’s more, having objectives in your résumé shows that you wrote it because no professional résumé service will put objectives in a résumé, that you had no one who knows about writing modern résumés review yours. Your résumé layout looks sloppy and is hard to read The presentation of your résumé determines if it’ll be read by anyone other than the initial reviewer. Now you may think that because you’re a computer programmer, your presentation doesn’t matter — it’s the code examples that count! The initial reviewer is an expert in one thing, and it’s not computer programming. So, you need to win over the perception of that gatekeeper and ensure the résumé is designed so that it’s easy to read and presents your information in a way that reviewers can find what they need. A professional résumé service will ensure that your résumé is well-designed. If you’ve decided not to take our advice and you write and design your résumé yourself, here’s an even better idea (because we’re always thinking): Ask one or all of your mock interviewers to review your résumé before you send them out. Having those mock interviewers pick apart your résumé may not feel good, but doing so will give you a far better chance of having a résumé that glows when the reviewer reads it. You have inappropriate material on social media You may have links to your social media profiles in your résumé, but even if you don’t, the initial reviewer will likely search for your profiles online. If the reviewer doesn’t but sends your résumé to others for further review, those reviewers will definitely search for your name on Google, within social media websites, or (probably) both. If company reviewers find anything that they think is questionable if not downright objectionable, they’ll run, not walk, to the shredder to rid themselves of your résumé. (You likely won’t hear anything back from the company about the job, either.) Make sure you take the time to clean up your social media profiles and present a professional image. You lie during the phone screen or programming interview Employment, like any other relationship, is based on trust. Your employer reasonably expects that you’ll get your work done, do a good job, and be honest. However, if you lie during an interview because you think it’s better to give an answer, you’d be embarrassed if you didn’t, and/or you think not answering will cost you the job, the opposite is true. Presume your interviewers are experienced at interviewing and will know when you’re lying either because at least one of them knows the subject matter and will call you out on your lie immediately, they’ll see your mannerisms change, or (likely) both. When that happens, expect to be thanked for your time and escorted out of the building. If you don’t know the answer to a question, say so and put a positive spin on it. If you honestly haven’t studied the specific issue the interviewer asked you about, you can say, “You know, I haven’t encountered that yet, but I will now because I’m curious.” Or, if you don’t remember the answer to the question, you could say, “You know what? I should probably know the answer but I don’t remember what it is. Could you please tell me? Because I’m really curious to know about it so I can study that more.” When you answer confidently and in a way that tells your interviewers that you want to learn, they’ll more likely think your lack of an answer isn’t a big deal and they’ll move on to the next question. It seems acceptable, especially if you take your behavioral cues from politics, that you should “double down” if someone says you’re lying. That is, you should be argumentative and insist that you’re telling the truth when at least one interviewer says you aren’t. This strategy only compounds your problem — because being argumentative during your interview isn’t professional — and will reinforce the interviewers’ perceptions that they shouldn’t hire you. You are arrogant and/or argumentative during your programming interview An interview can feel contentious or even threatening. You may think that you’ll have to defend yourself — aggressively, if necessary — because you don’t want to look weak. In reality, that strategy will expose a couple of your big weaknesses: you’re immature and you can’t get along with other people. When you’ve gone through at least one mock interview so you’ve worked out any and all of your behavioral issues, and you know you’re a good programmer, it’ll be very difficult for an interview to fluster you. Instead, you’ll know that if an interviewer asks you a question that you don’t know the answer to, or challenges the answer to your question, you don’t need to argue. You also don’t need to put up defenses and become arrogant such as by saying the interviewer doesn’t know what he’s talking about. You can simply remain calm, focus on the question or answer instead of the questioner, and discuss the issue. If you can’t, then you’ve just told the interviewers that you’re not confident in your abilities. Don’t be surprised if the head interviewer ends the interview right there. If you were calm and collected during your mock interview, don’t change your behavior because you’re in a real interview. It’s human to want to change your behavior when you find yourself in a different situation, such as when you get promoted. Instead, in your real interview, double down on showing the confidence you displayed in your mock interview. You have a bad reputation The world is smaller than you think, especially if you’re looking for work in one city or region. Always presume that employees at various employers talk to each other because there are plenty of opportunities to do so, such as at conferences, business luncheons, and Meetup events for human resources people, developers, and other groups. If you developed a bad reputation at one company where you’ve had social issues with other employees, had issues with your boss, and have burned bridges, that behavior will catch up to you when you’re looking for another job. What’s a good sign that you have a bad reputation? When you send out at least 10 to 20 résumés and cover letters and you either receive generic rejection letters or no response at all from every single company you’ve applied to. Getting the feeling that you’ve created a bad reputation is an experience that you’ll always remember, but if and when you make a commitment to change and build a good reputation instead, do things to make yourself stand out. Today is a great day to start. Professional résumé services may have their fingers on the pulse of the technology community and make a list of who has a bad reputation so they can prepare for that if a person on the list wants to use their service. A professional résumé service may offer services to rebuild your reputation — for an extra fee. So, having a bad reputation may also require you to shell out money you didn’t expect to spend to get your foot in an employer’s door. You don’t dress properly at your programming interview People discriminate naturally, so when you arrive at the company for your interview, the first thing your interviewers and other company personnel will notice is how you’re dressed. And if you’re not dressed professionally and groomed properly, no matter if a company representative says you can dress casually, then you’re telling the interviewers that you’re not professional. When interviewers see that you’ve taken the time and effort to dress properly and look like a professional, they’ll not only see you as a professional but also as someone who is an excellent programmer — just as you said in your cover letter and résumé. One or more interviewers may comment on the way you look and say that you don’t have to dress that way in the job. That’s a good sign that you’ve made a positive impression, because some of your interviewers think you’re worthy of being hired. You give the impression you’re hiding something If you go into a programming interview, it’s natural to feel somewhat nervous if you haven’t practiced before — and especially if you haven’t interviewed for a job before or for a long while. That’s why you should hold at least one mock interview so you can get the butterflies out of your system. Building up your confidence during a mock interview has another beneficial side effect — you’ll avoid giving the company interviewers any one of the following several negative impressions: You’re hiding something — maybe you lied on your résumé. You don’t do well in high pressure situations. You’re not an authentic person. When you’re nervous, you’ll make at least one interviewer nervous and you may not “click” with those people. When you’re confident, you’ll create a connection between you and your interviewers, and it’s more likely you’ll come across as someone who can be trusted, who knows what you’re doing, and that you’re a genuine person. There may be one or more interviewers you won’t connect with regardless because they have some issues, such as they may be intimidated by your skill set or another programmer might dilute their power.

View Article