Table of Contents

Return to the Software Development Career Playbook

Choose a first language from evidence you collect. Count languages in ten current target postings. Check runtime support, editor access, test tools, documentation, deployment target, mentor support, and the same small trial in two candidates.

Language Recommendations by Target Role

Target RoleFirst LanguageSecond Language
Browser interfaceJavaScript, then TypeScript when static checks support the projectBrowser support, accessibility tools, package policy
Backend servicePython, JavaScript, Java, Go, C#, or another named stackFramework, database, test, and hosting evidence
Data workPython or R, plus SQL for relational queriesData size, notebook or service route, privacy
iOS appSwiftCurrent Apple toolchain and supported hardware
Android appKotlin or JavaCurrent Android toolchain and supported hardware
Cross-platform mobileDart or JavaScript with a selected frameworkPlatform support, device testing, accessibility
Systems or embeddedC, C++, Rust, or the target platform languageHardware, simulator, safety, compiler, debugger
Automation or operationsPython, shell, Go, or the target platform languagePortability, error handling, permissions, rollback
Security engineeringLanguage named by the authorized taskThreat model, memory safety, runtime, review

Python

Python has concise syntax and libraries for scripting, data work, machine learning, and web services. Choose it when your target role or first project uses those areas.

  • Pros: concise syntax, a large package ecosystem, and broad use in data, automation, and backend work.
  • Trade-offs: browser use needs another route. Runtime performance depends on workload and implementation.
  • Trial areas: backend APIs, data work, automation, and machine-learning tools.

JavaScript

Web browsers provide JavaScript engines, and Node.js runs JavaScript outside the browser. JavaScript is a practical trial language for web-focused roles.

  • Technical facts: browsers provide JavaScript engines. Node.js supplies a separate server and command-line runtime.
  • Trade-offs: package choice, runtime version, and type strategy need explicit decisions.
  • Trial areas: browser interfaces and Node.js services.

TypeScript

TypeScript adds static type checking to JavaScript. Check current target repositories and postings before deciding when to add it.

Java

Java appears in backend systems and Android codebases. Its static types and tooling make it a useful trial when target roles name the Java ecosystem.

Check current language documentation before setup: Python , JavaScript at MDN , TypeScript , and Java . Links checked 2026-10-10.

  • Technical facts: Java uses static types and the Java Virtual Machine. Existing backend and Android codebases might use it.
  • Trade-offs: project setup and framework scope differ from a small script.

Go

Go is a compiled language with built-in concurrency features and a standard test tool. Try it when target postings or projects name Go services or command-line tools.

Rust

Rust uses ownership and borrowing rules to provide memory-safety guarantees without a garbage collector. Try it when the target project values its compiled runtime, ecosystem, and safety model. Compare setup and mentor support with the other candidate.

Do Not Exclude a Language Without Evidence

C++, C, PHP, Haskell, OCaml, and other languages might match a local employer, school, existing codebase, device, or mentor. Use the same posting sample and trial rubric before excluding one.

Next Steps

Practice and Verify

Artifact: Two-language trial. Sample ten target postings. Use the supplied Python files and JavaScript app with its test file , or implement the same task in two candidates.

The task accepts a finite, nonnegative meter value and prints feet rounded to two decimal places. Required cases are 1 to 3.28, 0 to 0.00, 2.5 to 8.20, rejection of -1, and rejection of secret.

For Python, run python3 app.py 1 and python3 -m unittest -v test_app.py. For JavaScript, use Node.js 22 or newer, then run node app.mjs 1 and node --test test_app.mjs. Both apps print 1 meters = 3.28 feet. Both test runs report five passing tests.

Expected result: The same small task and test pass in both languages, followed by a documented first-language choice.

REDACTED COMPLETED EXAMPLE
Candidates: Python and TypeScript. Both tests passed. Choice: TypeScript because seven target postings named the web stack.

Pass checklist

  • The artifact uses dated, role-specific evidence
  • Claims, ownership, team credit, and unknown values are truthful
  • Privacy, secrets, licenses, accessibility, cost, and safety received review where relevant
  • A reviewer or repeatable check produced feedback
  • The record names a timed next action and checkpoint

Source rule: Use each language’s official documentation and dated target postings. Record runtime versions, install source, command output, setup time, error clarity, accessibility, and available support.