Your Ad Here

Expertise for a Software Engineer

Contents

  1. Educational Degree
  2. General
    1. Problem solving
    2. Object oriented design
    3. Good communication skills
    4. Good in multithreading
    5. Good data structures
  3. Language
    1. Good in Java, JSP, JDBC
    2. Experience with SQL
    3. Oracle DB expertise
    4. Experience with MySQL
  4. Additional Support
    1. Re-factoring of large projects
    2. Scripting languages and frameworks

What most of the companies need in an employee for Software Engineering...

1. Educational Degree

First and foremost requirement companies post is a Degree from any reputed institution. Desired degree could be any one or a combination of B.E., B.S. or B.Tech. or M.E., M.S. or M.Tech. or PHD.

2.1. Problem solving

Whatever the requirement is, problem solving, analytical skills, puzzle solving are always on top of the requirement. Any top order post in engineering seeks these skills.

2.2. Object Oriented Design

Most of the popular current and future programming languages like, Java, C++, Ruby on Rails, PHP, Python, Scala are object oriented in nature. The cleanest, maintainable and scalable implementation of larger applications in these languages is attained by Object Oriented approach. Java Design Patterns.

2.3. Good communication skills

Good communication is not required in development, however, a better communication helps in making better design proposals, faster and appropriate issues escalations, accurate and on time communication with marketing and other business peoples.

2.4. Good in multithreading

Thread is more likely a play with Operating System rather than programming language and data structure. One should have good knowledge about threads and its properties, Thread states, wait, yield, memory consumption, locks, semaphores, threading models(e.g. Pre-emptive or Cooperative), synchronised, volatile, its way of interaction in Operating System, difference from process. Multi threading implementation. Java provides java.util.concurrent, java.util.concurrent.atomic, java.util.concurrent.locks package and java.lang package for almost all thread based implementation. Mapreduce is used to get the parallel way of processing under data structure. See the link for threading concepts in Java Memory Model.

2.5. Good data structures understanding

Data structure is the backbone of any software, bigger or smaller. Better the understanding of data structure one has, better and crisp code is expected from that individual. A wide range of APIs have been invented with time based on the requirement. Most important and widely used are Tree(Height, Depth, DFS, BFS, AVL tree, Red Black Tree, 2-4 Tree), Sorting(Insertion, Quick, Merge), Searching(Binary, External), Trie, LinkedList, Stack, Deque, Queue, SkipList.

3.1. Good understanding and implementation in Java, JSP, JDBC

With numerous properties, Java and its kin(JDBC, JSP, Servlets) has covered most part of the industry. Understanding all packages of java could take infinite time, because everyday enhancements in Java makes the learning list longer and longer with time. Most of the time expertise required under this section are Java Collection, Java Threads, Java IO, Java Lang, Java Sql and Jsp tags.

3.2. Experience with SQL

Whatever a software does, it needs a storage/DB and ways to maintain data in the DB. Although database is costlier than the language and number of databases are usually less in numbers to that of servers, a strong SQL expertise may not be needed. However, one should have an awareness of terminologies used in the SQL and databases along with better understanding of terms, SELECT, INSERT, UPDATE, DROP, JOIN, DELETE, TRUNCATE, PRIMARY KEY, FOREIGN KEY, GROUP BY, EXISTS, WHERE, IN, AND, OR, HAVING, ORDER BY, DISTINCT, DECODE, NVL, DESC, ASC, SEQUENCE, INDEX, etc.

3.3. Experience with Oracle Database

Oracle is the most used nonfree database. Its unbeatable reliability, scalability, security and other database characteristics makes it a required expertise in an engineer.

3.4. Experience with MySQL

Whatever the size a company comprise of, it must take help of free database MySQL. Its database characteristics matches with that of Oracle. MySQL, however is not that reliable for tables with huge size.

4.1. Re-factoring of large projects

Languages and tools used in an application are being upgraded regularly. The upgraded version possess more efficient solutions and many deprecated as well. To clean the code and to make it more efficient, re-factoring is required which improves overall application performance. Re-factoring large projects are not simple and therefore this ability adds value.

4.2. Scripting languages, technologies and frameworks such as JavaScript, Mootools, JQuery, Prototype, etc

Almost every company has an UI for it. These UI could be for internal or external purpose. In both conditions efficient, good looking UI is appreciated. Query languages such as Javascript adds many such efficiencies, however using javascript frameworks such as Mootools, JQuery, Prototype, etc further improves the query code and efficiency. Ajax is another technology that is used heavily in the industry. Almost all the frameworks support Ajax, and so knowing anyone of them adds immense value of the candidate.