Is proficiency in Java enough to get you placed in good company?
I'm a graduate student(MS Computer Science) and I'm gonna be graduating in a year and a half and I wanted to know if there is any skill that I must have besides Java. I would like to know what are the other programming languages/skills that any employer can expect from a potential employee with a masters degree. #computer-software #career #software #software-development #development #java #android #personal-development #career-details #job-application
Proficiency in Java, huh? It's a great start. But, with respect, you should be prepared to tell your interviewers what you've done with it.
These days, lots of Java development is for "line-of-business" applications. Many of them are developed in-house for companies who sell products other than software. Those software projects often use database management systems along with Java. So, you might be wise to get yourself some JDBC and SQL chops to go with your Java skills for those jobs. Those projects are all about turning the company's data into useful actionable insights. So you need to be able to get to the company's data. SQL.
Android phone apps, at least some of them, are written in Java. Again, there are Android-specific skills you can add to Java to prepare for those jobs. Phone apps are about the user experience.
Over the span of your career, you can expect the programming language you use to change completely three or four times. So, whatever you do, don't decide you're a Java guy. Decide you're a skilled programmer who's capable of working with a variety of tools, and continually learning new tools.
To my experience for a preparation an individual should prepare w.r.t Core Algorithms, Data Structure, Clean Coding, SystemDesign as mandatory. Languages doesn't matter much unless and until we know any one of them.
I worked for a company that is a Java/Windows shop and I have worked for companies that do not specialize in Java. Mixed shops (Windows/Linux/Unix/Mainframe) usually specialize in many languages.
At the very least, I would learn another type of language used by many companies like Python. Remember it takes hundreds of hours to really learn a language. Being older than you I started with Perl the predecessor to Python. The stages I went through are: beginning Perl, programming Perl, advanced Perl, mastering Perl then mastering Perl/TK and mastering Regular Expressions. As you can see there were many hours studying Perl mostly from books although today the Internet is a great way to learn all levels of a language.
If you are going to work with software at any position in the Software Development Life Cycle (SDLC) you should learn the Continuous Development (CD) and Continuous Integration (CI) applications. Jenkins is an excellent open source /corporate CD application and Puppet is an excellent open source /corporate CI application.
Read more about it at:
Actually, how fast this software environment is moving GitLab is now considered by many to be the best CD/CI application and I have not used it. Yet!!! Although I have used Git on many occasions.
Leon recommends the following next steps:
Hi Thompson -
Congrats on your upcoming graduation! It is an admirable accomplishment.
As a Software Engineering Manager, I interview a lot of candidates in various stages in their careers, including early career engineers like yourself. When evaluating an engineer as a potential fit for my team, I definitely like to hear about technical accomplishments and proficiencies, but I also like to hear a lot about soft skills. These may include:
- Experience working with groups or pairing
- Evidence of turning technical or team obstacles into opportunities
- Examples of positive experiences either mentoring others or being mentored
In general, I'm looking for ways to add exponential value to the team (outside of "just another" engineer).
That said, if I were hiring, I would expect a software developer with an MS to be fluent in one language, but also have conversant in others. I would also expect a general knowledge of other areas of the field. You should have basic knowledge about project management, hardware, operating systems, basic UI design, databases, etc.
I'd say a bare minimum would be Java and SQL to get you considered. My #1 piece of advice for every college student: Learn SQL. Everything is database driven these days, from simple phone apps to IBM's Watson, and while NoSQL databases are rising in popularity, they are often a complement to, rather than a replacement for, SQL databases. Regardless of what your core language is: Java, C++, Python, or something else, you will have to interact with SQL.
I've hired quite a number of programmers, and things I look for on a resume are:
1) Do they have the core skills I need: a UI language (something like Swing or HTML/CSS), business logic language (Java, Python, PHP), and back-end (SQL).
2) What have they done with those core skills? Did you actually build an application, or did you just sit in a classroom and pass a test? If you list Java on your resume, but have never produced an application with it, I wouldn't consider you. That application can be a side project, class project, or actually at a business - where you built it doesn't matter.
3) Which business area did your application target? If I need a web developer, I'd be looking for HTML/CSS experience instead of Swing. Conversely, if I need a desktop developer, I'd be looking for AWT/Swing instead of HTML.