Things a Software Developer Must Invest In
Devote (one’s time, effort, or energy) to a particular undertaking with the expectation of a worthwhile result.
0.) Your Health
It is a no-brainer that being a software developer is one of the most sedentary jobs out there. Sitting from 8 to 16 hours a day with minimal breaks in between is a sure fire way to build those fats around your belly. Obesity is a risk amplifier for other kinds of sickness and heart attack is the most infamous among them. This can be avoided by allocating time for exercise or if possible, by spending a little extra on a gym membership.
Prolonged typing in an un-ergonomic way also introduces developers to repetitive strain injuries like carpal tunnel syndrome. This can be prevented by stretching your wrists every few hours of typing and by investing on a wrist rest for both the mouse and the keyboard.
Staring at the monitor also puts strain on your eyes that is why it is advisable to invest in anti-glare lenses for your eyeglasses instead of the normal ones (assuming that you are wearing eyeglasses)
1.) Improving Your Math Skills
Math skills improve your logical thinking skills, problem solving attitude, and in many cases, your patience. While some math topics can directly be used in software development like discrete math, some can safely be forgotten depending on your field. For example, game developers make intensive use of physics and calculus but I struggle to find its applications in my line of work as an enterprise developer. In any case, math skills will make you a better person.
2.) Improving Your English Skills
All popular programming/scripting/markup languages use English and comments in open source projects like Linux are also in English. Developers around the world collaborate using the English language. Developers who work for international clients are forced to know English for them to be able to translate the business needs into a solution.
Get the point? English is to humans as binary is to computers.
3.) A Personal Domain + Website
Don’t you find it cool to have your own email address as compared to having a generic one like firstname.lastname@example.org or email@example.com? Having your own domain name helps you stand out among others at a very small annual fee. I bought my lambdageek domain for a measly fee of 13 USD. A personal domain also gives potential clients/colleagues an immediate sense of confidence and professionalism in your brand which is you – your self. This is assuming that your domain name is not hotmale-loves-chicks.com
4.) An Active Github Account
Portfolio is to artist as Github is to developer. Nuffsaid.
5.) A Go-to Machine
Did you hear about the developer without his own machine? Me neither. Being a software developer without having your own dev machine is like being a Jedi without his lightsabre. A good go-to machine as of this writing should have at least 4 GB of RAM (8GB to make it future-proof). I could simply recommend the 4000 USD Mac Pro but I reserve that for those exceptional cases with extreme needs.
6.) Fast Internet Connection
Internet is the oxygen of programmers. Being off the grid for a prolonged period of time is just like cutting my air supply and is simply unbearable. Having a stable connection gives you the privilege of learning from video tutorials, participating in forums, and even getting up to date with the latest articles in Hacker News.
7.) Reading Classic Computer Science Books
Some texts which I deem to be the scriptures of software development are:
- Structures and Interpretations of Computer Programs
- Code Complete 2
- Pragmatic Programmer
- Introduction to Algorithms (The MIT Press)
- Discrete Mathematics and Its Applications
- Mythical Man Month
8.) Bachelor’s Degree
A Bachelor’s Degree would greatly increase the odds of someone landing a job. This applies whether you are a fresh graduate or someone who just left his job and is looking for a new one. Just imagine the fact that: If millions of graduates fight tooth and nail against each other just to get hired, then how much harder would it be for an undergraduate’s resume to not land in the ignore pile?
9.) Certifications (optional)
Certifications test an applicant’s skill in a particular technology. Passing a certification means that a person is “certified” to have a deep understanding of something which might be of value to an organization. Some companies put a premium on certified developers by giving higher salaries while other companies don’t care about certifications at all (and for good reasons). For example, being a Certified Java Programmer means that you know the Java language in and out however, this does not directly translate to your ability to solve problems. Some companies value someone’s critical thinking skills over his/her expertise in a programming language since programming languages can easily be taught and learned but problem solving is not.