Synchronet v3.19b-Win32 (install) has been released (Jan-2022).

You can donate to the Synchronet project using PayPal.

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revisionBoth sides next revision
wiki:user:digital_man [2018/10/08 22:30] – [Why BBS?] Fixed typos digital manwiki:user:digital_man [2019/10/31 20:03] – Things I learned while interviewing for programming jobs in 2019 digital man
Line 30: Line 30:
  
 So in summary, I agree: BBSes can be made more accessible and user-friendly than they are today and support more mainstream use-cases than they do today. And maybe, probably, some of those enhancements will come to fruition in the near future. Perhaps //your// contributions will help drive the innovation you seek. But in the meantime, see if you can find the enjoyment and inspiration that we've found in the BBSes of today and rejoice in that! So in summary, I agree: BBSes can be made more accessible and user-friendly than they are today and support more mainstream use-cases than they do today. And maybe, probably, some of those enhancements will come to fruition in the near future. Perhaps //your// contributions will help drive the innovation you seek. But in the meantime, see if you can find the enjoyment and inspiration that we've found in the BBSes of today and rejoice in that!
 +
 +===== Interviewing in 2019 =====
 +
 +Things I Learned Interviewing for Programming Jobs in 2019 - advice to myself or those living in similar shoes
 +
 +1. Buy and read “Cracking the Coding Interview”, multiple times. It’s your new bible.
 +
 +2. If C is your primary programming language, learn/choose a higher-level language (e.g. Python, JavaScript, Java, C#, even C++) that you can use for the academic/CS/algorithmic questions, if you get asked them. C is often **not** your best choice for those types of questions.
 +
 +3. Even though you may never use those academic/CS skills (big-O, data structures, algorithms) in your actual job, if it helps you to pass the interviews (and it often will), they’re worth learning.
 +
 +4. Use the free web resources for learning academic/CS skills and practicing them in an interview context. [[http://hackerrank.com]] and [[http://pramp.com]] are two of my favorites, but there are many more like them. Sign-up for and participate in free/visitor coding bootcamp sessions (e.g. outco, interview kickstart).
 +
 +5. “Reverse a linked-list” is the new “fizz buzz” question. Counting the number of set bits in an integer (or determining if it’s a power-of-2) is a close second. Flood-fill (and similar recursion) problems are also popular. If you can’t solve these problems, you’ll look bad. Practice these.
 +
 +6. Memorize the time and space complexity (big-O notation) of most common data structure operations and sorting algorithms.
 +
 +7. If you’re asked to write code on a whiteboard but blank-out on what to write, start by writing keywords from the problem description, or the entire problem description, draw example test cases (input and expected output), draw pictures – anything. Don’t just stand there staring at a blank whiteboard wondering how you’re going to pay your rent because you suck.
 +
 +8. Dynamic programming and recursion should not be the first solution you reach for to solve *most* problems, but don’t forget that you have them at your disposal. I saw a few Pramp (mock interview) partners solve relatively simple problems in absurdly complex ways because they (too) quickly determined that dynamic programming was the only or ideal solution when it was not.
 +
 +9. If the solution to the interview problem seems easy/obvious, it’s probably because the interviewer is hoping you’ll dive deeper and find a more optimal solution than the obvious or brute-force solution. But not always; sometimes it’s just a prep question and the “real” (more challenging) question is coming next. Listen carefully to the interviewer for clues.
 +
 +10. If you get asked to complete a “take-home” test, use all available resources to test/verify the code before submitting it (e.g. gcc -Wall, lint, coverity, valgrind, etc.). Beautify the code (e.g. with uncrustify or clang-format) before submitting it. Double and triple-check all the requirements and test cases. The code should be as clean and as perfect as you can make it.
 +
 +11. The more senior/experienced you are, the higher your compensation level, the longer it’ll take you to find your next job.
 +
 +  * It can take several months for the critical mass of interested and able companies and offers to come to fruition. Don’t give up. Don’t stop preparing. Stay the course. Don’t get discouraged.
 +  * There are 10 times the number of available positions for experienced/senior developers in the Silicon Valley / Bay Area of California than other areas of California, even L.A., O.C. and San Diego. The Seattle and Redmond areas of Washington state are second best.
 +  * Remember that no single engineer/programmer knows everything. Everyone has strengths and weaknesses (gaps) in their knowledge and experience. You are good enough. Your personal “scalability” (ability to learn/adapt quickly) is your primary merit. It may just take a bit of luck to get the right set of interviewers/questions to prove this to the right employer at the right time.
 +
 +12. Apply “direct” first, then cast a wide net:
 +  * Begin by applying directly to all the corporate sites of the companies you think could use your skills and whom you think you’d like to work for (old competitors, big name companies you admire, etc.). You’ll come to hate “myworkday” web forms, but just do it. Every. Day. Don’t bother with the custom cover letters or supplying personal references initially, unless they’re required. Know that many corporate job postings are fake, especially from the big corporations that are sponsoring immigrant-visas. These fake postings will not be on their corporate web-site, however.
 +  * Next, search and apply to all the relevant positions on LinkedIn, Indeed, and Hired. Every. Day. Apply to [[http://triplebyte.com]]. Don’t bother with dice and monster.com unless you want to get spammed with completely irrelevant job ads.
 +  * Let your friends and old co-workers know that you’re looking for your next opportunity, you never know who knows who and where those leads may go. Use your contacts! 
 +  * Reply to any old emails from company recruiters, even from years ago. That recruiter likely doesn’t work there any longer, but your email may go to their replacement or supervisor and get you an interview quicker than an online job-board application.
 +  * Go ahead and sign up with all the headhunters (CyberCoders, etc.). Can’t hurt. But don’t feel committed to any single recruiter or agency – they’re not committed to you.
 +  * Aim high in both the companies and the positions you’re applying for.
 +
 +13. Before any interview (phone or in person):
 +  * Scrutinize the job description/posting. Any tool/language/protocol/tech mentioned that you haven’t already mastered, research it and prepare. Even just reading relevant Wikipedia articles may give you all the background you need to satisfy the interviewer.
 +  * Study every page of the company’s web-site, learning all about their products or services, leadership, location, job board, etc. You may be surprised what you learn and you’ll be better prepared to talk about their problems and your solutions to them.
 +  * If you have a list of interviewers, consider looking them up on LinkedIn, GitHub or other social media and from that information (FOSS projects, previous companies, job descriptions, education), better prepare for your interviews. But know that LinkedIn Premium subscribers can be notified *who* viewed their profile, so you do risk the interviewer knowing that you were researching them. If you choose to research them, don’t tell them that you did – it’ll sound creepy (and no, they won’t be flattered).
 +
 +14. During interviews, pay close attention to the questions asked and the words used. These words are valuable clues as to what the next interviewer may ask you. Take notes (mental or physical) and research any weaknesses that have come to light between interviews. Learn from each interviewer how you can better answer questions from your next, even for the same job, on the same day!
 +
 +I hope these tips may help you in landing your next "awesome coder job" at the company of **your** choice. :-)
 +