Adam I. Gerard

Misconceptions About Software

Some common misconceptions I've held or commonly encountered about software and/or software development:

  1. It’s super easy - some aspects of software development are much easier than one might expect. However, if something’s easy, it’s unlikely you’ll be able to make a solid living doing only that. In other words, your normal day job won’t have you doing only those easy things. For most businesses, the value-add is doing something new (and new usually means hard because no one's done it). So, it’s not super easy most of the time. In fact, it's usually pretty challenging!
  2. You don’t need any formal education - that’s correct but only for the .9% or so of all employed developers who lack one: Most developers have at least a bachelors (about 70%) and about 25% have a masters or higher. Many developers go back and get additional education or certification later in their career!
  3. You only need to take or watch courses - you should strive to earn as much supporting evidence of your ability. So, yes, take courses. However, getting noticed during the hiring process is just the first step. You’ll also want to be able to consistently complete about 2-4 Easy Level LeetCode or HackerRank questions in one hour (for Junior level roles) and 1-2 Medium Level LeetCode or HackerRank questions per 45 minutes for more advanced roles. These expectations vary based on company and role specifics but if you aim for that level of preparedness you’ll probably be fine!
  4. Software developers are poor - the average software developer salary in the United States is about $100,000: That’s more than twice the average household income in many parts of the country.
  5. Software developers are rich - some are. Senior level engineering roles can bring in almost $400,000+ a year at top FAANG companies: But even for those roles, salaries like that are not necessarily the median. A top 1% single person brings $250,000 in income a year. By that standard, most software developers aren’t rich either. They are decidedly middle class.
  6. Software developers lack job security - generally there’s an almost zero percent chance you’ll be fired unless you do (or not you but your company does) something totally egregious (commit a crime, cost a company lots of money, negligence, etc.) or the company is experiencing layoffs. Freelance and contract roles are very common early on for many. This gives the appearance of job insecurity but IMO it stems primarily from choices surrounding types of role, education, and experience levels one has chosen to take up to that point. (I personally preferred the freedom that such shorter-term roles provided earlier on in my career!)
  7. Software developers make zero mistakes - actually, a general rule of thumb is that an average, proficient, employed developer will introduce no more than 10 [Production] bugs per 10,000 Lines of Code. A great engineer 2-3 (in my humble opinion - anecdotally, the best engineers I've worked with are at or below that error/defect rate). There’s also a huge difference between code that’s being written (development) and code that’s being run live (production). (Quora has it that the number is 10-50 per 1,000 Lines of Code: So does The Register.)
  8. Software developers don’t do anything - actually, software developers at most companies are expected to at least 1x their salaries. At top companies like FAANG, engineers typically bring in 2-3x their total compensation in revenue and profit. (An engineer who makes $200,000 in total compensation will bring in $660,000+ in profit or $860,000 in revenue at Apple.) By contrast, Walmart (different, labor-intensive, business model) has a profit per employee of $14,000. Dell, the computer laptop maker, $-40,000 (yep, that’s a negative). So, this number may vary even among large tech makers! (Read:
  9. There aren’t many developers - there are about 26.4 million - 30 million or so worldwide. By a Gaussian distribution we might conjecture that there are 13 million or so that are net positive. To put that in perspective: there are an estimated 300,000,000 total business, corporations, academic institutions, or non-profits globally. There are only about 2,000 or so total businesses worth $1 Billion or more (privately or publicly held). There are about 400 or so startups worth $1 Billion or more.
  10. You must have a computer science academic background - only ~63% of employed developers have a computer science degree.
  11. Software developers work alone - most teams are carefully divided into different roles. Early stage startups may begin with one or two engineers (that do almost everything) but gradually specialize (For example, AirBnB was stared by several developers and they hired mobile-specific developers to bring their Minimum Viable Product to life). Many teams may have one or two generalists that work across the stack. But, these individuals are typically part of a larger team that includes highly-specialized roles like QA, frontend, backend, database, and design or product managers.
  12. Every company that does programming is a “technology company” - IMO only companies that are included on Crunchbase are rightfully technology companies. Such companies include most Fortune 500 companies, are legitimate businesses with customers/revenue, etc.
  13. Software hiring is determined by referrals only - regardless of who you know, you’ll have to interview. This almost universally involves 4 stages: behavior chat, take home assessment or quiz to filters out most candidates, paired programming to see how well you think program and work with other developers (live), and then a marathon typically involving 3-5 back-to-back interviews with developers and product. Some companies modify the first and last processes but almost all have two technical rounds. Smaller companies may compress the third and fourth rounds into one. So, getting noticed is only the first step. Getting through all the other stages is the next.
  14. Top software engineers don’t fail interviews - anecdotally, failure rates among top engineers (at FAANG and MSFT) are much lower (mostly due to preparedness and experience). Still, many developers will fail multiple interviews before getting an offer. Personally, I’ve averaged around 70% or so over the last couple years in terms of advancing through technical rounds. It’s a numbers game. You may be a great candidate but there are usually 2-3 others who have also advanced to the same stage at the same time. On the other side, HR rejection rates are often > 90%.
  15. All computer programs are deterministic and 100% predictable - incorrect. Program execution depends on hardware characteristics, threading, processing, and asynchronous operations like API requests. This means that given the same inputs, the outputs may vary slightly. Ideally, all programs are close to deterministic and uniform (scale, consistency of data, uniformity of UX, accessibility, etc.). In practice, this is an ongoing challenge and one of the things engineers are employed to bring about.
  16. Programming is just web development or UI/UX (what you see) - most engineers, programmers, and developers are employed in backend or backend-heavy roles:
  17. Software is just Information Technology - while it's usually good to have both Information Technology and Software skills/experience, most roles are clearly divided between these two kinds of roles. Information Technology teams run, administer, and maintain services, programs, and websites created by Software Development teams. One runs and administers the live production application, the other creates, updates, and improves the code that IT teams administer. By analogy, in the auto industry engineers design automobiles and the manufacturing processes that assemble them. Technicians, drivers, businesses, and so on use the manufactured automobiles. Neither is "better" than the other (you need both)!
  18. Programmers are all in their 20’s - the median age at most top tech companies is ~33:
  19. Engineers never look stuff up - while merely copying and pasting something without knowing what you're doing is discouraged, you probably should do research given the faulty nature of human memory, updates to new technology, and for due diligence. Most (almost all) developers do in fact. Moreover, by researching (in depth), you gain knowledge and understanding.
  20. Open-source work is unpaid - Microsoft is one of the largest open-source contributors and almost all of their open-source work is paid and full-time. Open-source contributions are supposed to be governed by Contributor or Terms of Service agreements. (You sign or consent to a specific contract although it may not be the one that governs your pay.) Ditto for almost all other companies.
  21. Open-source just means free - the term "open-source" refers to a specific kind of legal arrangement where end users may license, reuse, and use code without royalties, fear of lawsuits, etc. provided they keep a copy of the original licensing agreement somewhere in the codebase: Ownership by the original author is usually retained. Open-source work is often used to simplify on-boarding to paid services.
  22. Most successful founders lack any experience or eduction - the average age of a startup team that survives the dreaded first two-years is over 30 (40+ according to this Harvard article: Most such founders also hold an MBA and 10+ years of industry experience (with the exception of industry legends like Mark Zuckerberg, Steve Jobs, Bill Gates, and so on).
  23. The value of tech companies is their programming files - the value of software companies is found in the combination of lots of people using a live, running, web application (not just the files) on thousands of super-computers called bare-metal-servers. There's a fine distinction between write-time (when a program is written, sometimes prior to compilation) and run-time (when a program is run).
  24. The value of a software developer is calculated solely by how much they type (on their keyboard) or physically sit at their workstation - live code is always running. So, a software developer's contributions are always generating value in a live, production, application. A 15-minute change might save a million users $1 each. It might bring in an extra $.30 for a company every second (gradually adding up over time). So, we can't just reduce the value of a developer to the raw keystrokes and time they sit in front of their work computer.
  25. Programmers only use a single laptop - almost all engineers I know use at least an additional monitor. For example: Surprisingly, the majority of developers use Windows or Linux (not Mac) machines: Macs are more common at startups since you can only legally program for Apple products on Apple machines. At larger companies there are usually dedicated specialists who program specifically for a single vendor or product category (Android, iOS, etc.).
  26. Software companies are anti-government - quite the contrary. Microsoft, for example, adds tremendous value because its offerings are strongly compliant: Facebook was partly funded by the Department of Defense: The CIA was one of the first investors in Google: Some of the largest customers of large tech companies have been government: