Note: The following content was contributed by our editor rvireday:
This is the first of two discussion threads, SW Professionals Updating Their Skills. A second thread will be about Non-SW Professionals adding some Software skills.
Summary
Questions I've been asked at Meetups and online basically boil down to:
- What languages/tools should I be targeting?
- What do employers want?
- What Certifications do I need?
- Misc. Code Schools
- Tools
What Do Employers Want?
In general, there seem to be a few top-level trends right now.
- Python for Scripting, vs. Perl or other scripting languages
- .NET for Windows development
- Node.js for Javascript development
- C/C++ still important for most application development
- Ruby on Rails for Web Development
- Open Source Tools in general - Eclipse, Libraries
- Building Apps on Android and iPhone
- MySQL development is mostly migrating now to MariaDB (Linux)
- "Full Stack" is a loaded phrase. Been hearing it a lot lately. See below. Basically, do you have the skills to build and get our Product all the way to market.
You will have to ask someone AND look at specific job listings, to see what a company thinks is most important. For instance,I have a company I'm looking at, and they are very big with Microsoft and .NET right now, but also want to get into the IoT space which is lots of Linux. If I got that job, I would then be influencing that new direction. But they may not be fully aware of that tech trend.
TIP: Remember, if it is a replacement position, it is usually written with the last person who held that job in mind. Sometimes you are competing against a ghost. (-:
TIP: When I am interviewing for a position even within a company, one of the things I ask is "What is your Tool Chain? I'm just looking for an overview". When it is the Developer Manager or a Developer, they can usually answer you in depth. If they can't, that might be a red flag! This is also the time to really evaluate THEIR competency.
QUESTION: What do others on this list feel are the top SW Trends we should be aware of?
Full Stack Definitions
"The term full-stack means developers who are comfortable working with both back-end and front-end technologies. To be more specific, it means that the developer can work with databases, PHP, HTML, CSS, JavaScript and everything in between, also, venturing as far as converting Photoshop designs to front-end code."
For a time (allegedly) Facebook only hired full-stack engineers. ..... Once you become a goodsoftware engineer you can learn languages and their best ...
A full-stack programmer is a person who is comfortable working with all the technologies required to get an idea to a finished product. This guy is familiar with all the layers of software development. He has fair knowledge of Networking, Database, User Interface , API, Security etc.
Certifications
Two guys asked me on May 24 Meetup, "What do I do when Recruiters ask what Certifications I have? And I have no answer for them!"
First, don't lie. If you have none, say none. I have none.
Second, ask back what Certifications are they looking for right now? 9 times out of 10, they don't know. Understand that Recruiters are trying to match tabs to slots, and having some specific Certifications will help the Recruiter do matches on their job search engines.
If they do have a specific Certification for a job, then you might have something in your experience that is equivalent. The two guys who were talking to me, both had extensive Red Hat experience, just not the RHEL Certs. I told them to emphasize that in their resumes, that the experience was equivalent to some specific RHEL Certs. Maybe summarize that by looking at existing Certs and taking their titles to describe your experience.
IMHO, Certifications are the latest version of the "Bring Me A Rock!"*** game. Unless your employer has paid for the Certifications, don't go out and pay for them yourself.
Certifications are also used by companies as additional revenue, usually tied to specific products or product lines, and usually have a life span good only until the next version change or the product EOLs.
That said, I don't devalue any training. I've learned and forgotten lots of tech in my career, and it is all useful if it taught you something. A new abstract way of looking at a problem, teaching the background of an underlying technology, finding workarounds to tough problems. I believe that all knowledge is useful, but then I'm also a Liberal Arts undergrad! We are indoctrinated to believe all knowledge is useful!
***USA Cultural metaphor. Two people need a rock. One person keeps bringing rocks over and over, and the other keeps rejecting the rock as being not right for some particular feature, but never specifies what except thru trial and error. Alternative versions include placing furniture in a room with your Significant Other, or that classic: Feng Shui.
Misc: Code schools
I have no idea about these, whether they are good or not. They are listed as being at the June 1 Job Fair, so caveat emptor. Anyone on the list have experiences with these?
Tools
- Do you have and use Notepad++? Is it on your USB key? If you are doing stuff on Windows, you need it. I especially like that it can preserve Linux line-breaks. I also use the Compare plug-in, which can diff two files. Useful for me.
- I have my own bin.win32/ and bin.linux/ directories. Scripts, tools and other stuff I've collected over the years. I basically copy them into whatever system I am long-term on, and I've got my basic toolkit ready to rock.
- Code Snippets and Formulas - Do you have them in a file/spreadsheet/db that you can access? Honestly, I am always looking up a for loop on Bash, Windows and Perl. The syntactic sugar is often close, but not right for each. Don't get me started on digging up workable examples from the MySQL documentation.
/bin/sh
for x in *.whatever ; do echo $x ; done
Perlforeach (keys %lease) {...}
foreach (sort keys %lease) {...}
foreach (sort {$a<-> $b } keys %lease; numeric sort
foreach(sort{$hash{$a} cmp $hash{$b}} keys %hash);
dir/s/b *.inf > list.txt
for /F %a in (list.txt) do pnputil -I -a %a
for %a in (*.inf) do pnputil -I -a %a
Python?
-
- Other Tools ???