การเขียนโปรแกรมทั่วไปเป็นโปรแกรมคอมพิวเตอร์ที่ได้รับความนิยมชนิดหนึ่งที่เขียนในลักษณะที่จะสร้างรหัสที่มีประสิทธิภาพที่สุดเท่าที่จะเป็นไปได้ในขณะที่อนุญาตให้ใช้รหัสในสถานการณ์ต่าง ๆ ให้มากที่สุดเท่าที่จะทำได้โดยไม่ต้องเปลี่ยนแปลงรหัสต้นฉบับเอง เมื่อเขียนโค้ดแล้วจะสามารถทำงานได้ตามที่เขียนไว้เท่านั้น ด้วยการใช้การเขียนโปรแกรมทั่วไปเพื่อสร้างรหัสที่ทำงานในหลาย ๆ สถานการณ์ในขณะที่ยังคงปฏิบัติหน้าที่พื้นฐานโดยรวมเหมือนกันโปรแกรมเมอร์สามารถใช้รหัสชิ้นเดียวในโปรแกรมต่าง ๆ ได้โดยไม่ต้องทำการเปลี่ยนแปลงจากเดิม
ในช่วงปี 1970 การเขียนโปรแกรมทั่วไปเปิดตัวในภาษาการเขียนโปรแกรม Ada และ CLU หลังจากนั้นไม่นานภาษาการเขียนโปรแกรมอื่น ๆ เช่น Java และ C ++ เริ่มใช้การเขียนโปรแกรมทั่วไปเพื่อลดความซับซ้อนของรหัสการเขียนโปรแกรมในขณะที่อนุญาตให้ใช้รหัสเดียวกันในหลายสถานการณ์ ภาษาการเขียนโปรแกรมแต่ละภาษามีวิธีการเฉพาะในการใช้รหัสนี้และคำศัพท์ต่าง ๆ เพื่ออธิบาย "Generics," "template," และ "parameterized types" ถูกนำมาใช้ในบางจุดหรืออื่น ๆ เพื่ออ้างถึงอินสแตนซ์ของการเขียนโปรแกรมทั่วไป
เพื่อให้เข้าใจการเขียนโปรแกรมประเภทนี้สิ่งสำคัญคือต้องทราบแนวคิดพื้นฐานของการใช้ภาษาโปรแกรม ตัวอย่างเช่นถ้า Paul ต้องการเขียนโปรแกรมที่เพิ่มตัวเลขสองตัวด้วยกันเขาจะพิมพ์รหัสคอมพิวเตอร์เพื่อเพิ่มวัตถุสองรายการ เขาจะบอกคอมพิวเตอร์ว่าวัตถุทั้งสองนั้นเป็นตัวเลขและคำตอบสุดท้ายควรเป็นตัวเลขเช่นกัน
ในขณะที่โปรแกรมจะทำงานตราบใดที่ Paul เพิ่มตัวเลขสองตัวมันจะผิดพลาดหากเขาพยายามเพิ่มสิ่งอื่นเข้าด้วยกัน หาก Paul ตัดสินใจที่จะใช้ประโยคร่วมกันเพื่อสร้างย่อหน้าโปรแกรมจะหยุดทำงานเนื่องจากจะหาตัวอักษรไม่ใช่ตัวเลข อย่างไรก็ตามพอลสามารถแก้ไขปัญหานี้ได้โดยใช้การเขียนโปรแกรมทั่วไปเพื่อบอกโปรแกรมต้นฉบับให้ยอมรับตัวแปรหลายตัวทั้งตัวเลขและตัวอักษรโปรแกรมจึงสามารถสร้างประโยคหรือดำเนินการเพิ่มเติมได้
ภาษาการเขียนโปรแกรมบางภาษาไม่ต้องการแนวคิดของการเขียนโปรแกรมทั่วไปเพื่อให้มีประสิทธิภาพ ผู้ที่ใช้มันเป็นภาษาที่พิมพ์แบบคงที่ นี่หมายถึงว่ารหัสถูกตั้งค่าเป็นหินดังนั้นจะพูดและไม่สามารถเปลี่ยนแปลงได้ในขณะที่โปรแกรมกำลังทำงาน ด้วยเหตุผลนี้หากโปรแกรมเมอร์ระบุว่าอินพุตจากผู้ใช้จะอยู่ในรูปแบบของตัวอักษรและผู้ใช้พิมพ์ตัวเลขโปรแกรมไม่สามารถใช้อินพุตได้ ดังนั้นโปรแกรมเมอร์จึงพยายามคาดการณ์ข้อมูลประเภทตรรกะทั้งหมดที่ผู้ใช้สามารถป้อนได้ไม่ว่าจะเป็นตัวเลขตัวอักษรหรือสัญลักษณ์และสร้างโปรแกรมที่สามารถปรับเปลี่ยนได้ตามความเหมาะสม


