Software Engineers Should Read Academic Papers
Enhance Your Technical Knowledge and Skills by Reading Differently
Academic papers have been there ever since, where scientists write about their own experiments starting from the beginning where they are trying to describe an issue and going through the process of trial and error to prove their theories about it until they reach the final output. Such a process allowed humanity to reach new levels where one try and others continue the search using the insights shared inside through the papers.
Computer Science in general (and software engineering in specific) are no exception from the academic field research but with the rise of the tech industry people shifted more from understanding the concepts and ideas behind the technology and focused on more on the implementations where some of those implementations are a mere advertisement but even though whenever an industry persona fill in trouble the academics comes to rescue and this might be the first reason why every software engineer should be interested in reading more academic papers (and even books).
In this article I’m sharing some reasons on why any software engineer need to start reading academic papers (or white papers) to level up their own game and be able to contribute in a better ways.
Benefits
As a software engineer you already know how the field is changing constantly and learning is a must but how you learn is what will sets you apart from others and that why you need different resources and academic papers are one of the richest resources if you knew how to use them.
Reading academic papers can grant you great benefits that are hard to get by the casual articles reading, those skills are considered some hidden gems that no one knows how to obtain but with a reading habit you should get to those gems quickly so let’s start talk about the benefits.
1. Enhance Your Technical Writing
Technical writing is a major skill for any software engineer but unfortunately software engineers always look for guidelines and this topic in specific does not have any guidelines and the only way to gain this skill is by reading more (whether it was books, papers, design docs, anything).
Reading is good but unfortunately with the rise of the internet people are losing structure and they are just sharing random thoughts in different forms which is great for quick discussions but not good for long term thoughts since nowadays books and articles are not well structured (a copies of Twitter threads at some point!) and that’s the first problem. The second problem is people forget that they need to share their knowledge about the issue with multiple layers of people (those who have background and those who don’t) instead of focusing on those who will promote them or just forget that they working with multiple people and not just those who already knows the problem so being a good writer is a must!
Now to understand why a reading academic papers is good let see what is the structure you will find generally in a paper:
- Abstract (Overview).
- Keywords.
- Introduction.
- Experiment (multiple sections).
- Conclusion.
- Acknowledgements.
- References.
The structure that academic papers have will force you to be a better writer from how you write the introduction to explain the issue and why it is worth solving to the simple sections that will ease the pain of understanding the paper like keywords and references that the research was built on and even the acknowledgement to the community to keep the work healthy (somehow!). All of this makes think better and express your knowledge better instead of just focusing on the solution and experiment that as software engineers tend to copy and paste sometimes without knowing why!
Academics knows how to tackle problems in a good way that we miss in the industry and one great example Leslie Lamport “State the Problem Before Describing the Solution” writing that I’ve been trying to follow recently.
2. Enhance Your Reading and Reviewing Skills
As a software engineer you always need to learn new things and shape your knowledge by sharing it with others through multiple channels like design and code reviews and those two things (reading and reviewing) are dependent on each other but where to start? Well, reading is the start of that loop in order to provide a good thoughts during any technical discussion like code reviews or design reviews.
Structured writing make reading easier and will make reviewing an approachable thing too, all you have to do is start reading and gather information until you get framework by your own on how to read and review like for me I always check the “Abstract/Overview” and “Introduction” sections in order to understand the problem and why is it important, this way I will be able to detect the quality of the document faster and will help people during reviews in a better way.
Reading papers can be intimidating at the beginning so there is always some tricks to read faster and maybe the most notable guideline, I can think about, on reading academic papers is the “How to Read a Paper” by Keshav Santhanam from Standford University so maybe it can be a good start for you.
3. Decrease the Gap Between the Industry and the Academic Field
Every years thousand and thousands of computer science students graduate across the world and they all have the same confusion of what to learn? should they keep learning what their professors said? or follow the industry trends to get a job easier? Well, the second option is the obvious one but students always get stuck by following without understanding why or how these industry trends work and guess what? some of them is ignorant enough thinking that the academic knowledge is useless and that is not the case.
Everything in technology is built with academic theories and concepts and the best engineers are those who are able to understand the academic theories and turn it into reality, it is hard at the beginning to map the industry trends and academic materials but once you are able to do that things will be easier. For example Node.js non-blocking IO has been a challenge to understand from the online posts where in the academic books it turned out to be the term used for async calls (the simpler form it could get but of course there is more details to read about).
Reading academic work will help you decrease the gap between the industry and the academic field and will make you realize how ignorant you were (unfortunately) along with being the hero for the new generation!
4. Learn From Others Experiments and Ideas
Everybody needs an inspiration in order to think of new creative solution but you won’t be able to do so if you are following specific resources about specific tools or approaches so you need to discover new things and academic papers can be a good source of crazy and cool ideas.
For example RPC frameworks were not trending when I started working (and probably still not) but some companies use them a lot and to understand them you need to discover a living example and the “Thrift White Paper” was more than enough to put me on track. Even in other topics academic papers where easier than books to start and I still remember how “Google’s Borg paper” was helpful to learn more about the topic and how to scale systems. Sometime you would just stumble upon some crazy cool thoughts like how the bitcoin mining is affecting the air pollution and we should think more about how the machines work in order to have a better understanding of the software we use.Borg design for distributed systems.
The above was just some simple example of my experience with academic readings to help you understand how helpful it is to start such readings.
Suggestions
For those who want to start reading you can find some of papers that I usually recommend to my colleagues as a start:
To stay motivated here is some resources curated by people who have the habit of reading academic papers (a lot):
Conclusion
Learning is a constant thing in life in any field and software engineering is not exception but there is a huge demand on keeping up due to the fast pace changes we are witnessing and the best way to stay updated is to learn right and focus more on the concepts to adapt fast to the industry standards and implementations and that’s where reading academic papers comes in hand for you as a software engineer.
Special thanks to the scientific community from the contributors and supporters for their continuous work to enrich the tech world, also to my friends (Mohammad and Muath) for reviewing this article.
Anyway since you reached here I hope you liked what you read and maybe you can give it a try and follow me for more.