Academic vs Industrial Software Development
About Sharvari Natu
‘Super Programmer’, is what they used to call me when I was pursuing graduation in computers. From college programming assignments to semester projects, I felt I did extreme coding with best of the logic. Carrying this self-belief, I thought it should be a cakewalk to work in the industry. With a shining armor (!), I was ready to take on the real world.
After spending excruciating time learning and working on some of the top-notch projects at Ellicium, I felt that my idea of the real world was a too naïve. I felt like buzz lightyear from toy story! Thanks to great mentors at Ellicium, I got a glimpse of what it means to do coding for business problems. Here is a list of differences between fairy world academic learning and the real world of execution!
“Comfort zone is a nice place, but nothing ever grows there”
During one of the projects, I had the very simple task of connecting machines using sockets, I made it too complex by using the language that I was comfortable with – JAVA. Methods and classes unnecessarily lengthened the task. It was so easy using Python! And this how my journey of learning Python started.
Taking inspiration from the Japanese philosophy of ‘Kaizen’, which implies a continuous improvement, I now sail above and across my comfort zone. In the context of proposing a solution, the approach should define considering appropriate technologies rather than solely basing it on known technologies.
“Ink is better than the best memory! – Documentation is vital!”
As the black box is for planes, documentation is to software project! Back in college, documentation was the last thing I did. Even if we did documentation, the validation was non-existent.
First thing I learned at Ellicium was the importance of documentation and its necessity in project evolution. It was such an eye-opener to go through the process of documenting an architecture, pseudo-codes, and flow of data in the tool. For one of the projects, I was a new entrant. Due to amazing documentation and thanks to which the pseudo codes and the architecture diagrams in place, it was such a smooth sailing for me. I could pick up everything right away!
As I am learning golden rules of documentation every day, I can’t imagine working on any project without it.
“Any fool can write code that a computer can understand. Good programmers write code that humans can understand.”
In the quest of making application functional, using meaningful variable names and following coding standards always took a backseat during college days. My whole happiness was solely dependent on executing application successfully! In industry, it was not just about making code functional. I also learned how to write a code adhering to coding standards, which can be contributed to and empowered by the whole team. Sincere realization here is, you should develop a robust application that is in line with the functional requirements.
“To code is human, to debug is divine!”
While working on my first IOT based assignment, I was supposed to build a rule evaluation engine for data coming from sensors. I was able to build a system in less than the expected time. This worked in the best case scenario but during the first round of testing, it failed awfully. It took me twice the time to debug the code than to write it to identify the bug.
As a beginner, I always missed the trick of debugging the code. I relied on the first instance of the result. Now I firmly believe that along with programming logic, debugging is an important skill to become a ‘Super Programmer’!
Along with above points quality of the code, efficient planning & execution, and not trying to reinvent the wheel, are few more important learning I had in the past few months at Ellicium.
As they say, it is about the journey, not the destination. I am enjoying every bit of this quest to become better!