Achieving reproducible research requires following some basic principles and practices that help to organize, document, and share code and data. Version control systems, such as Git or SVN, should be used to track changes in code and data. Writing clear and concise comments, annotations, or descriptions for code and data is important to explain what they do, why they do it, and how they do it. Additionally, consistent and meaningful naming conventions, formatting rules, and coding standards should be followed for files, variables, functions, and classes. README files, metadata files, or data dictionaries should be created to provide essential information about the code and data. Literate programming tools such as Jupyter Notebook or R Markdown can be used to combine code, data, and results with narrative text that tells the story of the analysis. Furthermore, appropriate and compatible file formats, software tools, and platforms should be chosen for code and data that ensure portability, interoperability, and longevity. Finally, publishing the code and data in reputable repositories or journals that support open access is essential. Following these steps can offer many advantages for programming such as improving quality, enhancing collaboration, and increasing impact of work. It can also make code and data more transparent, understandable, and accessible to others while contributing to the advancement of the field.