I’ve just come to the end of my first week as a software development intern, and it’s been even better than I expected. The whole team has been so supportive, I’ve been able to work on tickets that are challenging but not impossible and I’ve had multiple people checking in throughout each day to make sure I wasn’t stuck or getting too frustrated. I can’t imagine a better first week, though I could have done without my computer throwing hissy fits every few hours and having to reinstall things over and over again. Ah well!
I found a lot of the skills that were most useful this week weren’t directly coding skills, but they were closely related. I thought I’d put together a list of the things I feel have been really helpful in making things run smoothly this week. I’ll save the Ruby/Rails specific skills for another post, the things I talk about here will be hopefully be relevant to a whole range of programmers. Being on top of these will help you feel more comfortable working in a dev team, and will help you focus on writing the best code you can!
Get Going with Git
I know that while learning to code you can’t go more than a few minutes without being told to learn Git and version control – but here it is again – learn Git! This is an amazing tool to use individually, but once you start working in a team it’s absolutely critical. I can’t say I’m an expert but make sure you learn enough to get by. There’s plenty of resources around, but the best way to learn (as with anything) is to try it out. At a bare minimum you should understand these concepts:
- creating a git repository (local and remote)
- committing and pushing
- making pull/merge requests (these are the same thing but just different names for it)
You will use most of these multiple times a day, and even if you don’t have all of the commands memorised you should at least know them well enough to do it with a quick google to check the exact wording. Check out my posts on Git basics here and here, or have a look at my resources page for some interactive tutorials.
Be in Command of the Command Line
The command line is the gateway to being in control of your computer, and you will end up spending a lot of time using it. This isn’t something you’ll be able to master in a few hours, but you can at least be confident in the basics. If you’re running Mac OS your main Command Line Shell (program) is terminal, if you’re on windows you can use the Command Line program or Powershell. There’s plenty of tutorials out there to help out with there – make sure you follow one for the operating system you’re running, otherwise the commands will be slightly different and will make you pull your hair out.
The command line lets you navigate around the files and folders (directories) in your computer, much the same way as you can in Finder of Windows Explorer, but gives you a heap of extra control and lets you run commands that you’ll need frequently as a developer. Make sure you know how to:
- create and delete files and directories
- move between directories
- list the files and folders within a directory
- open and edit files
- change file permissions
- kill processes
Pick up the Slack
If you haven’t used slack before, now is the time to try it out. Slack is an instant messenger app that you can run on your phone, download as a separate program or simply run in your browser. There are different slack ‘teams’, and within each team there are a heap of channels people can join. You can chat with people in these themed channels or direct message anyone in your team. There’s not too much to learn here, but a lot of teams will use Slack, and being at least a little familiar with it can only help! Here are some suggestions for slack channels that are great for newbies, you might find them a great place to ask for help on any coding problems you run into too!
All of the Acronyms
Without going into too much detail on these, there are a LOT of acronyms that people will throw around. Some of these concepts are useful to learn in more detail, some will be more or less relevant depending on the technologies you work with, and some it will just be helpful to not need to ask ‘what does that stand for?’ every few minutes! Here are a few I’ve run into a lot
- IDE: Integrated Development Environment – a program that allows you to do most of your coding without switching around between programs. They usually contain a source code (text) editor, a debugger and automation tools. A lot will also have clever auto-completion when writing your code. Most IDEs are for a particular language – for example RubyMine is for Ruby and Rails. Some other popular ones are Visual Studio and Eclipse.
- OOP: Object Oriented Programming – a programming paradigm where everything is an object. Eg. a string is an object, a user would be an object etc. Really important in OOP based languages such as Ruby. Definitely one to learn more about if you’re working in the back-end.
- SEO: Search Engine Optimisation – making sure a website is optimised to be as visible as possible to search engines.
- TDD: Test driven development – the idea that you should know what you want your code to do before you write it, and that you should write tests before you write your code. This way you can easily tell when your code it doing what you want it to do. Another one to really focus on if you’re hoping to be a back-end or full-stack developer
- SQL: Structured Query Language – You’ll sometimes here this pronounced as ‘sequel’ but more often just spelt out as its acronym. It’s a language for creating and accessing information in databases.
- UI/UX: User Interface Design/User experience. A field of tech which focuses on designing websites to be visually clear and easy to interact with for users. Particularly relevant if you work with front-end technologies but also worth considering if you’re purely focused on the back-end.
- CI/CD: Continuous Integration/Continuous Deployment – separate but closely related concepts which ensure that code is being regularly merged into a central code base and, in the case of Continuous Deployment, changes are updated on the live application regularly.
I’m sure there’s hundreds more you could come across, but those are some great ones to start with.
Keeping Up with Keyboard Shortcuts
Using a mouse more than you need to is one of the surest ways to slow down your coding. Most code-specific text editors and IDE’s have a heap of built-in keyboard shortcuts to help you, and there’s probably a lot of general shortcuts that work across many programs that you’re not using. Look at the list of shortcuts for your IDE/Text Editor of choice and make yourself practice a few new ones that you might use regularly – the more often you use them, the more they will get embedded in muscle memory and you’ll be amazed how much time it saves.
How long can you go without using your mouse for any of the following:
- switching between windows and tabs
- opening a new tab or window
- moving your cursor to the address bar of your browser
- opening a program
- searching for a word in your current program
You’ll be surprised by how many shortcuts work across all of the programs you regularly use!
Going Ga-Ga for Google
Possibly the most important skill for any programmer is the ability to use google (or other search engines) effectively. No-one knows how to do everything, or magically knows how to fix every error they come across. But what they do know is how to read error messages, how to skim documentation for the important bits and how to search for the information they need. Being able to find the critical piece of information in a long and detailed error message means you can search online to see how other people have solved the problem in the past. Trust me, you’re probably never going to be the first person to encounter any particular error message, and there’s a good chance the question has been asked and answered somewhere you can find it too!
Hopefully at least some of these will be helpful for you, and will make that transition into your first programming role that little bit easier. Is there anything you think I’ve missed? Let me know in the comments below!