Academic vs. Industrial Software Development

Academic vs. Industrial Software Development

‘Super Programmer’ is what they called me when I was pursuing computer graduation. From college programming assignments to semester projects, I felt I did extreme coding with the best of the logic. Carrying this self-belief, I thought working in the industry should be a cakewalk. With 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 natural world was 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 straightforward task of connecting machines using sockets; I made it too complex by using the language I was comfortable with – JAVA. Methods and classes unnecessarily lengthened the task. It was so easy using Python! And this is how my journey of learning Python started.

Inspired by the Japanese philosophy of ‘Kaizen,’ which implies continuous improvement, I now sail above and across my comfort zone. In 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 for software projects! Back in college, documentation was the last thing I did. Even if we did documentation, the validation could have been more present.

The 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 the architecture, pseudo-codes, and flow of data in the tool. For one of the projects, I was a new entrant. Due to fantastic documentation and thanks to the pseudo codes and the architecture diagrams in place, it was such smooth sailing for me. I could pick up everything right away!

As I learn the golden rules of documentation daily, 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 to make applications functional, using meaningful variable names and following coding standards always took a backseat during my college days. My whole happiness was solely dependent on executing the application successfully! In industry, it was not just about making code functional. I also learned how to write code adhering to coding standards, which can be contributed to and empowered by the whole team. The sincere realization is that you should develop a robust application that aligns 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 sensor data. I was able to make a system in less than the expected time. This worked in the best-case scenario, but it failed awfully during the first round of testing. It took me twice the time to debug the code than to write it to identify the bug.

As a beginner, I always needed to catch up on 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 the above points, the quality of the code, efficient planning and execution, and not trying to reinvent the wheel are a few more critical 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!