#1 – How to Write Code
I studied each new Java version, and I wrote code almost every day, but it wasn’t enough. As it turns out, there’s so much more to writing code than, well, writing code!
We also have to estimate work, pair, and work with VCS. Estimating how long something will take is challenging, and pairing is often encouraged for good reasons; two heads are better than one (and you can also learn all their IDE shortcuts). Writing code is a skill that is constantly evolving, especially with each release of Java.
#2 – How to Read Code
I didn’t read much code at University; I thought that was the lecturer’s job. I simply wrote the code and submitted it.
Arguably we need to be better at reading code than writing it in a lot of scenarios. It’s worth remembering that you probably learned to read in your native language before you learned to write it, and if you speak a second language, you’re probably better at reading that than writing it. When you dive into that code base for the nth time, remember that it’s a skill in its own right, and it takes time to master.
#3 – How to Debug Code
I love it when my code works, and I love it even more if I understand why it works. Of course, code that doesn’t work is equally frustrating.
Yet here we are; this is another skill that we really have to ramp up in any development role. Not everyone can walk into a situation where you need to maintain a completely open mind and systematically solve a problem, learning as you go. Debugging code is a skill in its own right and one where your development career is unlikely ever to cut you some slack.
#4 – How to Review Code
Reviewing code is one of those strange skills that I started to gain through osmosis by reading code, but of course, you don’t do much of that at University!
It’s worth remembering that all you can see is the code that has been implemented. You don’t have visibility to the other ways the developer tried and failed, nor can you see the thought process and reasoning that they went through to implement the code the way they did. Understanding someone else’s logic and decisions from a single written outcome is a skill you can grow over time.
#5 – How to Delete Code
The more I read about this thorny topic, the more it intrigues me. I wasn’t taught that code should have a life cycle, and I certainly don’t go through University deleting code that I, or someone else, had written.
Yet, somehow we find ourselves needing to delete code in a codebase, and our fight or flight response kicks off. As we sit there sweating profusely, the idea to comment that code out pops up. That feels safe, right? Well, kind of right, but also, that’s what source control is for! Getting comfortable deleting code and using VCS to your advantage is a skill that we naturally gain, but it’s not always comfortable.
Summary
Should I have learned these skills at University? No, not in my view. University prepared me well; however, I didn’t realise the huge gap between my studies and reality. Arguably I think boot camp graduates and self-taught developers learn more of these practical skills than those of us who came through the academic route. That said, there are, of course, advantages and disadvantages to any route into development. My point is less about the routes and more about recognising that these are all independent self-taught coding skills that we continue to learn and grow throughout our Java development careers.
Our skill sets are so much more than writing code!