They say anyone can code, and that's more or less true, but there is a large gap between people who can do it and people who can do it well
I've recently been trying to brush up on my coding skills, both because I haven't had as much time as I did in the past, and because I'm considering software engineering as a potential next step in my life. I've always loved to program, and have had many times when I thought I would make the shift, but I always got cold feet or thought 'It's not for me'. This time, though, I'm jumping into the deep end and putting my all in it. I cannot expect my knowledge from college and hobby programming to be enough, I need to do more.
With this in mind, I decided to reach out to some friends of mine that are software engineers to see what they recommended I do. There were a few major agreements:
- Just program! Recruiters like to see that you've been working on something even if you don't do it for a living.
- Try out a coding site like HackerRank or LeetCode. These show you some problems that could be similar to those seen in technical interviews and are good practice in general.
- Find a good book to read and try solving problems 'by hand'. Specifically the book that was recommended to me was "Cracking the Coding Interview" by Gayle Laakmann McDowell.
These resources have been great help for brushing up on CS topics I haven't seen in a while. They've also shown me how far I still need to go. It's a great feeling to take a problem from the "Cracking the Coding Interview or coding websites and figure out a solution that works and is not the brute force method (although sometimes just knowing I can figure out the brute force can feel like a success story). The 'issues' come when trying to find the most optimal solutions. You see that some of your test cases have timed out or you look at other's solutions and see how much better/faster they are than yours. It's not the best of feelings, but seeing these other solutions is also something I can aspire to with practice and dedication.
Take for instance the sudoku project I've been working on (see my last post). Even though I have a solution (that works for most puzzles, although I haven't tested it on every puzzle ever...) it's probably far from optimal, so it'll be fun trying to improve it and take my learnings from the exercises I've been doing.
The only feedback I have about looking at other programmer's solutions, is that they write them for other programmers, not 'laymen'. If we want to bring more people into the field of computer science we should make sure we use variable names and comments that you doesn't need an expert to understand what is going on. That said, some topics in software development are pretty complex, and no variable names or comments will really be able to explain what is going on.
Image Note: Getting help writing clean code
Image credit: "Code washing" by Ezu is licensed under CC BY-NC-ND 2.0