Even though I have only been developing software “professionally” for around two years, there is a ton of information that I can pass on to fledgling developers and hackers. Learning how to program is just the beginning of learning software development and actually becoming awesome at it. If you are taking computer science or MIS/CIS courses at a university, I can imagine that you are learning technical aspects, system design, programming languages, computer logic, and maybe even a little user interaction design. The problem is that with any technical field, there is almost too much to learn. So, here are the top 5 things that every new developer needs to know to prepare themselves for the “real world” of software development.
You can’t please everyone all the time. So don’t.
When it comes to designing and implementing new software and systems, you will inevitably have some system users. Also, you tend to have more than one type of user for a system, like an administrator, data-entry user, and reports users. With all of that user interaction you are going to hear a lot of “I need this…” and “yeah, but…” when it comes to different features and implementations. The problem is that you can never please all of these users. Ever. So, learn how not to people please and learn to say no more than you say yes to new features and ideas. Don’t be a butthole, but don’t be mister nice buy either. Try to implement only a handful of features at a time that will give your users the most bang for their buck. Then iterate.
Make learning a top priority
The reason I got into software development was because I loved learning new things and solving problems. In fact, that’s all I do all day, every day. So, when it comes to learning new languages, operating system technologies, platforms, etc. you have to always be on top of your game. You can get a really great series of tutorials for learning about some awesome technologies like Ruby programming, iOS game development, designing responsive web sites, and even Photoshop over at Lifehack Deals right now. These types of “packages” are an easy and effective way to learn new things quickly. I remember when I was just getting into Ruby on Rails development and I purchased the infamous Ruby on Rails Tutorial package. I created a sample application in about a week and had a great base knowledge of the Rails framework to build off of. You will never learn it all, so take advantage of learning as much as you can as fast as possible.
Know your limits
Another thing that you have to learn early on is what you can and cannot do when it comes to development and different technologies. Just because you could solve problems in college classes does not mean that you can do anything when it comes to the “real world”. When I was first working at an insurance company as an intern I was amazed at just how many moving parts there were to an old, complicated system. I remember lead developers explaining things to me that completely went over my head. I felt like I had no clue what I was doing. That’s because I really didn’t. It was a wakeup call to say the least. I learned very quickly that I can solve every problem, every time all by myself. You have to understand that your knowledge has limits. When you reach the edge of your limits, it’s time to reach out to others that know more than you do.
Get users involved
Remember me talking about how users can be a pain? Well, they can be your best ally if you put them in their place! Seriously though, users are the ones that are going to be using the thing that you are creating so it’s important to know what their job is, what annoys them, and how to delight them. If you understand your user’s basic needs, then you have made a great step forward in creating a usable and wanted system for them. Try to ask users for their input about features and how something should work. Remember not to promise anything though; just get an understanding of what makes the person that uses your system tick.
Don’t just lock yourself in a room and code. Learn business stuff.
There was a guy in school that I knew that was a crazy hacker type. You could give him any problem and he would have it solved in C using vim in no time. That was cool and everything, but he was a total nerd, couldn’t really hold a conversation, hated everything that was “mainstream”, and didn’t care about “business” at all. But, he was good at programming. Although coding is a super important skill to a new developer, you have to understand business processes, business politics (I hate them), why a system needs to be the way it is, and also be able to communicate technical ideas to users and sponsors of your project easily. So, yes, learning to program is important (and you can do that easily with great tutorials like the Learn To Code Bootcamp Bundle at Lifehack Deals), but there is way more to being an awesome software developer.