This week’s cafรฉ conversation posed the questions "How can you be sure your statistical analysis or software is doing what you expect?" and "How can you make sure others will be able to use it and reproduce your results?" As a Research Software Engineer, my answers would be to make use of practices and tools such as testing, version control, continuous integration and containerisation, but these concepts can be daunting to those unfamiliar with them, and will not be applicable across all domains.
As our conversations are cross-disciplinary, with participants present from departments including Anthropology, Education, Computer Science and Geography, as well as from Advanced Research Computing (ARC) and the library systems team, we started the session with a short survey to try to gauge the sorts of tools and programming languages people are using, and how likely they were to use various tools/practices.
Our participants use a wide range of tools, from programming languages (and libraries) to predominantly GUI-based tools. The tools used will clearly have an impact on whether standard software development practices can be used, but can we adapt these practices to make them applicable to other tools?
Next, participants were asked to rate how likely they were to use various practices, from 0 (Never heard of it) to 5 (Extremely likely). The average scores for testing and version control were reasonably high, though all three scored some 0s and a handful of 1s. Continuous integration and containerization, unsurprisingly, had low scores.
We discussed how participants can be sure how their code or analysis does what it sets out to do. Most participants use some some sort of manual checks of their analyses, for example checking the outcome for specific, known results. In numerical sciences, testing is the norm: one participant mentioned he used manual testing as a stop-gap to automated testing. In this field, although journal policies vary, some reviewers will automatically reject papers that do not include sufficient proof or due diligence, of which testing is an important part. By contrast, in the humanities, journals are now asking to see the data but not necessarily the analysis or code that produced the results; participants felt that it was only a matter of time before they followed the lead of journals in the sciences and required authors to provide the same level of detail about code.
A question was posed: "What should we be testing for? Is it more important to make sure that the software does not crash, or that it produces the right results?" Whilst defensive programming to avoid crashes can be important in industry (where software will is more likely to be used by non-expert users), in research, crashes can just be a useful signal that something has gone wrong: silently carrying on and producing a wrong result could be far more dangerous.
Version control was the next topic of discussion. Versioning is built in to Dropbox and Microsoft Office 365, and is also included in wiki software used by some teams for their documentation. For more sophisticated use cases, there are tools more traditionally used for programming such as Git. Several participants mentioned that they end up figuring out their own method for keeping track of their code and data, but were not convinced that they were going about things the right way. Some participants had previously attended ARC’s course on Git and GitHub, but had not yet worked out how to fit it in to their everyday work.
As well as using version control to keep track of our own code and documents, how can we keep track of versions of dependencies (e.g. the software packages we use in our analysis or code), to ensure that our results can be reproduced? One participant makes use of DOIs to keep track of the specific versions of software used in a paper, using a Zenodo record to list all of the DOIs; other participants may not have considered keeping track of such things. We mentioned containerisation as one possible solution to this, though it has a steep learning curve; this could perhaps be overcome using tools such as mybinder. (Other solutions for dependency management, which were not discussed, are listed below.)
Time did not allow us to discuss continuous integration (CI) in detail, but we gave a brief explanation of CI to those who were unaware of it: "automat[ing] doing the repetitive tasks you used to do by hand" (as one participant succinctly put it). We pointed out that CI tools such as CircleCI or GitHub Actions can be used for something as simple as ensuring your code compiles or passes syntax checks; it does not need to use a sophisticated workflow.
So what are the barriers to using these tools and practices? Firstly there is the pressure to move on to the next new thing: writing tests and using version control can be seen as boring or a waste of time, particularly if there is no requirement from journals to share code or to ensure analyses can be replicated. Secondly, there is a lack of training and knowledge: some participants felt there was just too big a hurdle to get over before they can use these tools; others had some knowledge but were unsure how to embed these practices into their own workflows. Could ARC produce more domain-specific training for individual departments? Thirdly, there is the lack of motivation: for example, undergraduate Computer Science students are taught how and why to use version control but still rarely make use of it. One participant suggested that we need to show the value of the tools in ways that researchers would understand, for example using version control and blockchain to stop plagiarism.
This week’s discussion encapsulated some of the issues that are being tackled by groups such as the Software Sustainability Institute and the Society of Research Software Engineers. From my point of view it was fascinating to get a more local insight into these issues, and I hope it will prove useful as we consider the future direction of the training courses run by ARC.
Useful links
Thanks to the participants for sharing many of these links.
Testing
Version control
Executable notebooks to help reproducibility
Dependency tracking and containerisation
- Defending your code against dependency problems
- binder (automatically dockerises your jupyter notebooks)
- Hands-on docker tutorials
Continuous Integration
Advanced Research Computing Training
Alison Clarke is a Research Software Engineer at Advanced Research Computing, Durham University.
I am very much pleased with the contents you have mentioned. I wanted to thank you for this great article. Agile Software Development
ReplyDeleteVery nice informative and impressive post you have written, this is quite interesting
ReplyDeleteNo doubt this is an excellent post I got a lot of knowledge after reading good luck. Theme of blog is excellent there is almost everything to read, Brilliant post. Microsoft office 2019
ReplyDeleteGood to see such a nice blog post Best Software quality assurance services in USA
ReplyDelete
ReplyDeleteHi dear,
Thank you for this wonderful post. It is very informative and useful. I would like to share something here too. Ritzy Solutions has its own capacious workplace and we have segregated our domains into “Ritzy Shipping”, “Ritzy Comfort” and “Ritzy Real-Estate”. As the caption suggests, Ritzy Shipping deals with the logistics & freight forwarding system, Ritzy Comfort provides comforting solutions for inventory control & accounting and Ritzy Real-Estate deals with the intricacies of real-estate management. Some of the concrete reasons for which you should prefer us are:
Domestic Freight Software
Yes it’s a very good blog, I gain so much knowledge thanks.
ReplyDeleteBrowse this site
I say is better I allow you all know this I believe this is the opportunity most of you have being waiting for earn with Mr Johnny today on crypto currency trade contact him Via WhatsApp: +447883246472
ReplyDeleteEmail : tdameritrade077@gmail.com
ReplyDeleteReally i like the way of your blog post content, it's a good information..
identity verification solutions
best esign software
1st let me congratulate the author for writing a great post!
ReplyDeleteWeb Designing Company In Mumbai
Posting Such an informative and valuable blog can help each newcomer in the field of Software Development.
ReplyDeleteBrouchers And Logo Designer Hyderabad
Thanks for posting this info. I just want to let you know that I just check out your site and I find it very interesting and informative. I can't wait to read lots of your posts. Kaspersky Total Security
ReplyDeleteThank you because you have been willing to share information with us. we will always appreciate all you have done here because I know you are very concerned with our. Kaspersky Internet Security 2022
ReplyDeleteA quick and handy guide to the questions you should be asking your Massachusetts Website Design before hiring them! A must have list before pressing "go" on your web project!
ReplyDeleteNice post! Thank you for sharing the valuable information. If you want to know about school management system then you must visit nlet.in.
ReplyDeleteThis blog is very helpful information thank you so much for sharing this. Know why the future of PWA Development is so bright.
ReplyDeleteGreat information! Nice blog! Before choosing a Custom Software Development Company in Delhi NCR and hire it, make a list of things that you need from the software.
ReplyDeleteHello, Thanks for sharing nice blog with us. this is really very nice blog again to all thanks i am regular reader your website Custom Software Development near me
ReplyDeleteVery interesting & informative blog published by you. I really appreciate your hard work in giving us valuable information this type of blog are very helpful for each newcomers in the field of software development.
ReplyDeleteThanks for sharing!!
Game Development Company
Great blog with good information.
ReplyDeleteMobile app development courses in chennai
Mobile app development course online
Mobile app development courses in Bangalore
This is good article
ReplyDeleteBrilliant post! These tools will certainly promote Machine Learning .
ReplyDeleteThanks for submitting this useful information and i am eagerly waiting for the next part.As a trainee from Full-Service Software Development Company " i found this information very interesting. Thanks once again.
ReplyDeleteThank you for sharing the information. Wonderful blog & good post. It's really helpful for me, waiting for a more new post. Keep Blogging!hire a virtual assistant
ReplyDeleteSoftware development is getting huge importance these days. It is believed that every business needs a customized software solution for their business to sustain in this competitive market. Being a software developer I know how much important it is to incorporate all the best practices of software development that has been passed on to us by our software development industry experts. And of course only if we use all the best practices in development phase then only the software do wonders in the market.
ReplyDeleteNice blog, keep sharing with us.
ReplyDeleteMobile Application Development Course in Chennai
Mobile App Development Online Training
Mobile App Development Training in Bangalore
Hi! Awesome post, really useful!
ReplyDeleteI think this is an informative post and it is very useful and knowledgeable. therefore, I would like to thank you for the efforts you have made in writing this article. sales automation platform
ReplyDeleteAmazing blog and very informative content. Thanks for sharing with everyone.
ReplyDeleteFreelancing Website in Canada
I would like to say that this blog really convinced me to do it! Thanks, very good post. software development company
ReplyDeleteNice blog, it is very impressive.
ReplyDeleteManual Testing Course in Chennai
Manual Testing Online Training
Uspirextempso Julio Toulier Download crack
ReplyDeletejuinaloca
Thanks for sharing this. We really appreciate you for this article. We're a Custom Software Development Company in San Antonio
ReplyDeleteGood Blog, thank you for sharing with us. Custom solution development
ReplyDeleteNeeded to compose you a very little word to thank you yet again regarding the nice suggestions you’ve contributed here.Learn about - ERP SOFTWARE IN CHENNAI
ReplyDelete
ReplyDeleteThanks for sharing the valuable information erp software in Chennai
This comment has been removed by the author.
ReplyDeleteNice blog! manufacturing erp software india.
ReplyDeleteGreat content with proper explanation. I've some doubts but now all is clear. Thanks for explaining it perfectly.
ReplyDeleteWhether you belong to a leading industry or just a new startup, we love to be your technology partner to achieve your short-term objectives as well as your futuristic mission, through our top-notch development expertise that excels our dexterity and eminence as a software development company in India & USA.
Software development
This article was incredibly interesting to me. This article is one of the most fantastic ones I've ever read. I'm hoping it will be a huge assistance to everyone. Thank you so much for this fantastic post. Please keep us informed like this. We also offer similar kinds of custom software development services in Dubai. We are one of the best AI development company in UAE.
ReplyDeleteI have found this blog.
ReplyDeleteIt's a great post for Quality Control and Software Development. Your content is good for software developer.
And it is very helpful and informative content.
Keep posting.
best Software Development Services in India.
informative blog about software development.we also offering same Microsft Power Apps Development In Canda And Also In US..
ReplyDeleteThe present age is the age of science and softwer technology. digital-transformation
ReplyDeleteThanks for sharing useful information. Keep it up!! Also visit 5 Ways Scheduling Software Can Help Dispatchers Daily
ReplyDeleteGreat article! such a nice content and wonderful contribution towards this blog and thank you for sharing this wonderful blog post.
ReplyDeleteerp software development chennai
I read your blog now share great information here.
ReplyDeleteTech DD
Join the White Bitcoin Affiliate Program and earn rewards for promoting WBTC affiliate Wallet. Experience the benefits of Crypto Affiliate Program
ReplyDeletetoday.
๐ Hey there! This article has some great tips for ensuring top-notch statistical analysis and software development ๐จ๐ป. It recommends using testing ๐งช, version control ๐, continuous integration ๐, and containerization ๐ณ, but notes that some of these strategies might not be relevant in certain fields ๐ค. The article also explores how different disciplines approach testing and version control and emphasizes the importance of reproducibility in analyses ๐ง. Unfortunately, obstacles like lack of motivation ๐ด, training ๐, and pressure to move quickly ๐♂️ can make it tough to implement these best practices. If you're looking to Hire Salesforce Consultant UK, it's important to keep these considerations in mind! ๐ค Overall, the article offers valuable insights into ongoing efforts by groups like the Software Sustainability Institute and the Society of Research Software Engineers. ๐ป
ReplyDeleteYou have done a great job of highlighting the importance of quality control in software development and providing practical solutions to bridge the gap between quality control and software development teams. The article is well-researched and well-written, and your expertise in the field is evident. I appreciate your head work in providing real-world examples and case studies to illustrate their points. Excellent work.
ReplyDeleteIf you are looking for a Custom API Development Company, feel free to contact us, we will be happy to help you.
This comment has been removed by the author.
ReplyDeleteNice information, valuable and excellent design, as share good stuff with good ideas and concepts, lots of great information and inspiration, both of which I need, thanks to offer such a helpful information here customer relationship management module in erp
ReplyDeletenice post...
ReplyDeletecustom software development
Thank you so much for exploring the field of software development! Your app development insights shed light on the complicated craft. The process of developing Custom software development company in Chennai , a booming tech hub, one of creativity and teamwork. Your contribution weaves digital dreams into reality by adding a meaningful note to this symphony of code. "Let's toast to our joint exploration of this endless technological space!
ReplyDeleteQuality control is the most important aspect of successful software development. Every customized software development company should prioritize robust software testing and development best practices because it ensures quality and stability at every phase, from initial requirements to final product release.
ReplyDeleteWe are the leading software development company in Bangalore, India with 21+ years of experience, delivering highly scalable custom software development
ReplyDeletehttps://www.carmatec.com/software-development-company/bangalore/
Your blog is very useful and provide tremendous facts. It is going to change the way one think by a sharp angle.I wonder if you write on gadgets also. Keep up the good work ahead.
ReplyDeletecustom software development New Jersey
Thank you so much for exploring abonnement iptv the field of software development! Your app development insights shed light on the complicated craft.
ReplyDeleteYour blog is very useful and provide mushroom chocolate tremendous facts.
ReplyDeleteNice Info
ReplyDeleteCustomized Software Solutions for Modern Businesses | TechTriad
for their dedication to keeping up with the most recent developments in technology, and for their ERP software development team in the USA.
ReplyDeleteerp software development services in usa
A great thing explained about quality control and software development best practices!!
ReplyDeleteTo know more about the development process, visit Custom software development company in Canada.
CMOLDS stands out among app development companies in dubai for its unparalleled expertise in crafting innovative and customized mobile solutions. With a focus on creativity and cutting-edge technology, we bring your app ideas to life and help your business thrive in the digital age.
ReplyDeleteYour blog post is truly remarkable! It deserves recognition for its in-depth analysis and captivating writing style. I commend you for your dedication in shedding light on such a significant subject. Keep up the exceptional work! ๐๐๐
ReplyDeleteShopify Web Development Services
Conferencing software development demands innovation, accessibility, and security. It's about crafting a seamless user experience for effective communication and collaboration in the digital age.
ReplyDeleteInventory management software offers a powerful solution to these challenges. By automating tasks and providing real-time insights, this software can significantly improve your operational efficiency.
ReplyDeleteUnlocking Operational Efficiency: The Role of System Integration Services
ReplyDeleteSystem integration services are essential for organizations looking to optimize their IT infrastructure and enhance operational efficiency. These services involve integrating various systems, applications, and technologies to ensure seamless communication and data exchange. Whether it's connecting disparate applications, consolidating data from multiple sources, or integrating IoT devices, system integration enables organizations to streamline workflows and improve decision-making. By leveraging these services, businesses can adapt to changing technology landscapes, enhance collaboration, and drive digital transformation initiatives effectively.