What I Have Modified My Thoughts About in Software program Growth
I actually like this quote from Jeff Bezos:
“Anyone who doesn’t change their thoughts so much is dramatically underestimating the complexity of the world we dwell in.”
These days I’ve been interested by what I’ve modified my thoughts about in software program growth. Listed here are the issues I got here up with:
Self-documenting code. I used to suppose that the names of the lessons, strategies and variables must be sufficient to grasp what this system does. No feedback must be wanted. Through the years I’ve realized that some feedback are wanted and helpful. Today I add feedback when there’s something notably difficult, both with the implementation, or within the area. Each time I got here again to code the place I wrote a remark, I’m glad that I took the time to do it. I’ve written extra about this in On Comments in Code.
Unit testing personal strategies. I wrote a weblog submit known as Unit Testing Private Methods, the place I argued that you just may as properly make them package deal personal, so you may simply write exams for them. Nonetheless, a number of individuals commented and argued that you would be able to take a look at the personal strategies via the general public interface. After a little bit of pondering, I ended up agreeing with them, and altered my method.
Utilizing an IDE. A few years in the past, I used to be utilizing Emacs when writing code. I used to be fairly pleased with that, and didn’t notably really feel that something was missing. Nonetheless, at some point my colleague Johan confirmed me what IntelliJ IDEA may do. I used to be offered, and by no means appeared again. The largest distinction is navigation – it’s so a lot simpler to maneuver round in a code base with one. These days, I can’t think about not utilizing an IDE. I’ve written extra on this in Programmer Productivity: Emacs versus IntelliJ IDEA.
Utilizing a debugger. I like trouble shooting using log statements and printf. It’s easy and efficient, and works in lots of conditions. Nonetheless, after I began writing Go code a number of years in the past, my colleague Erik confirmed me how good it’s to discover the state of this system when a take a look at case fails. I had used debuggers earlier than, however he confirmed me a fantastic use case for them.
Working remotely. Even in the course of the pandemic, after I was working from dwelling full time, I used to be skeptical of working remotely. Nonetheless, I’ve modified my thoughts, and I now suppose working from house is nice. The draw back continues to be that I miss the face-to-face interactions. However working remotely permits me to work for firms I beforehand couldn’t work for. Not having to commute is a one other large plus. On stability, I believe the benefits outweigh the disadvantages.
Utilizing ChatGPT. When ChatGPT got here out, I used to be impressed with what it may do. Nonetheless, I used to be a bit skeptical of precisely how it might work in software program growth. However my colleague Filip saved telling me of all of the instances the place he used ChatGPT to assist with growth. So I made a decision to place some extra effort into seeing how I may use it. For me, the primary use has been for minor stand-alone duties. For instance, to generate a primary draft of a Python script, to put in writing a SQL INSERT/UPDATE set off, or giving me a sed common expression that removes the preliminary time stamp (when current) from log strains. In all these instances, it has been a good time saver.
Conclusion
Am I altering my thoughts about sufficient issues? I don’t know. However it’s undoubtedly worthwhile to from time to time study your beliefs about learn how to develop software program. In most of the above instances, it took any person else to indicate me, or persuade me, of different methods of working. My conclusion is that collaboration and pair programming is vital for spreading good concepts.
What have you ever modified your thoughts about in relation to software program growth? Let me know within the feedback.