Saturday, November 3, 2012

Advice for undergrad students


  1. First read Teach Yourself Programming in Ten Years. This is one of the best articles for freshers. Every advice given in that article is priceless and applicable to not only to programming, but to any other profession.
  2. You may be interested in programming competition or research sort of thing. But whatever you do, learn at least one programming language very well and also its advance features. If you don’t have proper language skill, then you can’t know for sure your algorithm is going to work. Yes, you can learn any language you want, but to keep pace with software industry learn at least one object oriented language. C++, Java, C# would be great choice as they are widely used and have great libraries.
  3. Although there are many programming paradigms, object oriented paradigm is the dominant paradigm in software industry. Almost all the popular languages support object oriented paradigm. You should have knowledge how to design classes, assign responsibilities and properly sew them together to produce reusable, readable and testable code.
  4. You should learn at least one dynamic language for scripting. You may be a fan of static typing, but there’s some scenario where dynamic typing really comes in handy. Python, Ruby and Perl are great choice. Dynamic languages are also very popular in web development. If you really feel interested, you can learn one functional programming language. Functional programming is gaining popularity due to the rise in parallel and multi-core programming. F# which is supported on .NET and Scala on JVM are two great options for learning FP.
  5. Develop one great academic project to awe your future employer. It doesn’t necessarily have to be a big project. But keep your code clean and make your design elegant. And it should be developed in an OOP language. Remember, as you don’t have any industry experience, these sort of projects really come in handy to prove your coding skill.
  6. Use source control to keep track of modification of your source codes and keep backup of your codes. Although Subversion may be still very popular. But if you haven’t any prior experience with subversion, then you should start with distributed version control system. Git and Mercurial are two most popular distributed version control system. You can start with any of them. By comparison mercurial is somewhat easier than git.
  7. Keep your academic projects hosted in any online code hosting site.It serves multiple purposes. You have a safe backup storage, you can access your code anytime anywhere, provided that you have a decent internet connection and anyone (including your interviewer) can have a look at your code. There are several popular code hosting sites, among them github is the most popular one which uses
  8. Learn about refactoring and code smell. For writing clean, readable and maintainable code, they are extremely important. We usually code our academic project in hastily and haphazard manner with no code organization. We do this, because no one is going to read our source codes apart from us and no one has to maintain our academic projects. This sort of throw away coding may be acceptable for some scenarios in academia. But in software industry, this is simply unacceptable. Because, industry projects aren’t just for few months development and maintenance. Many projects are being actively developed and maintained for decades. Term projects or assignments have tiny codebase and industry projects have much more bigger codebase. If they aren’t written cleanly manner, it would be next to impossible to develop and maintain these projects. So focus on code readability.
  9. Many CS students aren’t familiar with testing. And many of them don’t even think testing is an important part of development. Writing testable code properly is an essential skill of a software engineer. Be familiar with software quality assurance and different kinds of testings - acceptance testing, regression test, integration test and most importantly unit test. You have to work with SQA engineers side by side. So if you don’t have any idea about their task, you may face some difficulties.
  10. Unit testing has become industry standard nowadays. And writing unit test isn’t testers’ responsibility, it’s programmers’ responsibility. At any software farm which maintains code quality, you have to write unit tests for your own code and make sure that every unit test passes. Unit testing isn’t all about testing per se, it’s about designing your code properly and making sure your individual module works in every probable scenario.
  11. Learn about software development methodology. Agile software development is currently the most popular one. Learn how projects are developed and delivered to the client using agile methodology. You can start with scrum which is widely used, a variant of agile methodology.

No comments:

Post a Comment