Advice for Fall 2011 CS Graduates
It’s been a long time since I’ve posted an update. I’ve worked at my job, Cleversafe, for almost three months. In that time frame I’ve learned a ton, some things I wish I would have known going in. So, as a recent graduate that was lucky enough to find work in this terrible economy, here’s a short list of things that might help you find a job and start the path to becoming a valuable member of the your team.
- Learn and use version control software. Haven’t heard of this before? I recommend learning git by playing with GitHub – it’s free and has a fairly large and welcoming community. GitHub requires you to have your source exposed unless you pay for the service, so if you’re not comfortable with that or plan on using this for homework (do this), try Kiln, a Mercurial version control software brought to you by FogCreek Software. Either is sufficient and will help you learn the joy of distributed version control systems. Learn the lingo associated with it. Learn to use it on the command line with ease. Make mistakes and then take the time to fix them using the VCS tools instead of just copy-and-pasting code and starting over (trust me, this will an attractive option once you encounter your first really ugly merge or commit the wrong code). As a side-benefit, having an active GitHub repository can be an awesome addition to a résumé as potential employers can easily see your passion for development.
- Learn Linux. This applies to people who don’t intend on going into a Windows-based development environment (you’ve probably already decided since you use C# or develop exclusively in .NET environments. Learning Linux will make your life so much easier if you’re developing in a Linux or even OS X based environment. Knowing how to use tools like awk, sed, and grep are so invaluable they will pay for the investment in time learning them thousands of times over within your first months of actively using them. Never scroll through a log file again looking for something because you know grep. The same goes with editors in Linux. Learn vi(m) and Emacs. Love one, learn both. You don’t need to be both a vim guru and an Emacs god, but knowing when to use the right tool at the right time is so important it’s not even funny. There’s literally no excuse to not be able to sit down at a bash terminal and not be able to edit a file because your favorite editor isn’t installed or you can’t use the mouse. The easiest way to learn to use Linux is to install it. Do you have a good reason for having Windows installed on your computer? Could everything you do on a regular basis be accomplished in Linux with or without the use of a Virtual Machine (the only reason I still have Windows on my desktop is for PC Games)? Install your favorite variant of Linux and start using it. Solve your problems as you encounter them. Try different distros. Trust me on this one, learning Linux again made my life a lot easier.
- Learn to use the major IDE of your language. Do you program in Java? You better know Eclipse. This is something even I’m still working with. Before I was employed, all of my projects were small, I could easily handle them by using text editor like TextMate. I would execute off the command line. My form of debugging was reading stack traces and inserting status messages into my code (at least in Java). Now that I’m working on a project that is thousands of Java files and has a list of dependencies a mile long, I need these tools. I don’t understand all of our code base (it would be unreasonable to think that someone could understand it all in under three months), but since I use an IDE, I can work within it. Just a few days ago, another developer showed me some tricks with Eclipse’s debugger that helped me solve some problems I was having in a fraction of the time it would have taken me before. Using a tool like Eclipse with a bunch of other tools like Emma and Maven makes it easy to keep your project running without a lot of hassle. IDEs are also good for your health. Since you made a choice to become a software developer, you should understand the risk of RSI is pretty much 100%. IDEs offer a lot of keystroke saving tools that might help postpone or avoid your inevitable carpal tunnel surgery.
- Learn unit testing. Practice it in every piece of software you write that is anything more than a quick script. Anything that you would submit as homework or submit for production deserves a unit test. You will catch errors you didn’t even think of when writing the tests and avoid errors when modifying the code in the future. When and how to write tests is a highly debated topic and you should read into it. I really wish this was taught to you in school. Writing tests has changed they way I program and has made my code so much better than it was before I tested, I’m almost ashamed of anything I released or submitted prior to testing my code. If you aren’t testing now, start. Go grab JUnit (or whatever major framework is used for your language of choice) and write some basic tests. Run them often. Run them every time you make a some code changes. You’ll feel the same way I do, and I’m still learning how to do it better.
- Don’t stop learning after you graduate. I made it my personal goal to not stop learning. If the thought of graduation means “no more homework” to you, you’re in for a world of pain. This time the professor is you, and the due dates are the most dangerous kind, the ones you set. Try to learn new programming languages and paradigms. Have you only coded in an object-oriented manner? Try learning a functional or procedural language. Read books to learn, but don’t avoid books for pleasure. Read one of each at the same time (I recently finished the A Song of Ice and Fire series while reading a few Pragmatic Programmer books). Go to meetings, meet-ups, and hang out with other nerds (ChiPy deserves a shout-out here). Have personal projects. Have hobbies outside of programming (I enjoy cooking). Do whatever it takes to keep your mind active, as boredom will quickly lead to depression.
- Once you start working, evaluate your situation. This might be the most important advice I can give. If you’re unhappy with your job after three months, leave. If you don’t find yourself thinking about the project you’re currently working on outside of work, get a new project. If you don’t completely enjoy what you are doing within the first three months of doing it, find something else. Change things up. Find what you want to do and do it. I got lucky. I found a place where the product is extremely interesting and the team of people I work with are extremely intelligent. I learn something new every day. When I go home at night, I find myself thinking about work in a positive manner. I don’t come home and complain about work. When I wake up in the morning, I’m eager to get into work. I think that’s a good sign that I’ve found the right place and right career path.
Filed under: Programming, Work by Adam
2 Comments »
