Live data from Hacker News

Ask HN: Hot & Useful software skills for novice converts?

news.ycombinator.com

1–10 of 25 posts

Ask HN: Hot & Useful software skills for novice converts?

#1
I have a couple of friends who for different reasons (valid to them) would like to get into software development. One of them has a Master's degree (economics) and the other has a PhD (Biology). While both of them would love to first get into school (under-grad/grad) to get a solid foundation in Computer Science, they can't as they need to keep making money. They are fine working at the entry level in the industry. They have asked me for the skills that they should learn that will help them contribute to their future employers in a meaningful manner and thus earn their pay.

While I have my own ideas, I would like to know what the smart and pragmatic people on HN have to say.

To start the discussion: * Which programming languages: Java, C#, Ruby, Scala, C++ ... * Which application domain: Web, Desktop, Mobile etc * What are the skills that are in the demand most as per your experience? What kind of skill set you are looking for in the entry level programmers when you hire? * What are the skills that will be valuable in the long run?

Re: Ask HN: Hot & Useful software skills for novice converts?

#3

Regular expressions. They don't take a long time to learn, and can save you endless work in a wide variety of domains.

Indeed that is a useful little skill to have.

I am looking for skills at a somewhat higher level than regular expressions though. For instance, like some of those mentioned in the question above.

Re: Ask HN: Hot & Useful software skills for novice converts?

#4
Their prospects are going to kind of suck at first.

If I were to do a crash course, I'd say:

    Java/C#
    Code Complete/related software engineering books
    Eclipse/Visual Studio
    svn/cvs
You'll notice that there's nothing overly exciting there. I think it's most important for them to get the standard set of skills that'll give them the best chance of working in software development. That means the boring stuff that most people here would be "too good for." Everyone's a code monkey for some portion of their lives, the lucky ones just get it out of the way early.

And they might also consider the QA -> Engineering route. QA sucks (I can attest), but it's a good way to start working with software. If you're lucky, you can even move into regression tests, regression frameworks, etc.

Re: Ask HN: Hot & Useful software skills for novice converts?

#5
Languages: start with one of (Ruby, Python). At some point learn: C, Java. Also fool around with Erlang/Scala. That's the short version.

The economics guy could probably do well with R and some stats stuff... there's apparently beginning to be a big market for that kind of thing.

I think web stuff has a lot of jobs, and there's lots of room to get in at an entry level and work your way up. Something like mobile probably requires more skills at the get-go.

Re: Ask HN: Hot & Useful software skills for novice converts?

#6
post #3

Regular expressions. They don't take a long time to learn, and can save you endless work in a wide variety of domains.

Indeed that is a useful little skill to have. I am looking for skills at a somewhat higher level than regular expressions though. For instance, like some of those mentioned in the question above.

They make a nice, organic entry point into a lot of higher-level programming concepts, including some of the languages you list. I believe it makes more sense and is more motivating to start by solving problems rather than learning software development in the abstract.

You can solve a lot of problems with pattern matching, and the ones you can't solve will then lead you to other interesting places.

Re: Ask HN: Hot & Useful software skills for novice converts?

#7
Okay, so here again is an opportunity for me to talk about my company, but I will try to avoid it.

Here's the deal. The web is the future. So for application domain -- the web is where it is at. And the web includes mobile. Mobile devices are web devices. The whole point of the web was to enable mobility in a standard protocol -- mobility of information, digestion of information and communication of information between any device, whether that device is a computer with a browser, or a cell phone, or a car, or a refrigerator.

So, that is the main issue. If you except that premise, the premise that the web is the future, then I can't help but recommend you learn technologies that are fundamental to the future of the web: the technologies that are part of almost any web application. Those technologies are: HTML, CSS, JavaScript, and SQL. XML is good too.

The problem here is that it is difficult to start in the web domain, because in order to really create anything of value, you have to learn more than one technology. HTML by itself is just a flat web page. To be awesome you have to create that HTML dynamically and in order to do that you have to learn a lower level language like .NET, PHP, Java, or an opinionated platform like Ruby on Rails, or mine: Qrimp.

Then, to use whatever programming language, or platform you choose, you also need to power it with a database, so you have to learn SQL. Then you need to make that web page do cool things in the browser, so you have to learn JavaScript.

So I would recommend, if you are going to start somewhere to program choose either SQL or JavaScript. You are going to need those, regardless of whether you ultimately go with Ruby on Rails, Qrimp, PHP, .NET or J2EE.

So, to narrow it down even more, go with JavaScript. It's a lot like Java, which is a lot like C# (.NET). Reasoning: Keep your doors open. Start with the broadest technology that can be applicable in the most places, then narrow yourself down toward rock-stardom in your niche.

That being said, SQL is part of almost any information system, even outside the web domain. It's also one of the most difficult to wrap your mind around, so go there. You can actually create HTML with SQL if you want to. Most veterans don't recommend it because you are mixing the presentation layer and the data layer, but the point remains...

If you look at this breakdown: http://demo.qrimp.com/TechJobsCharts You'll see that the most requested skill set among technology jobs are HTML and SQL -- for good reason -- the reasons I listed above.

Re: Ask HN: Hot & Useful software skills for novice converts?

#8
Databases and SQL, everyone developer needs to know about them. They are easy to learn, incredibly ubiquitous and actually quite fun to work with. Have them start out simple by downloading MySQL and reading, say, W3" rel="nofollow">http://www.w3schools.com/>W3 Schools tutorials.

Regular expressions. Very useful no matter which area (desktop, web, mobile) you specialize in.

HCI, usability, interaction design. They should atleast know enough about usability and design to appreciate its importance and avoid The Usual Mistakes (TM).

Using and administering web server software. Learn about Apache and the most common modules (e.g. mod_rewrite) because the odds are pretty high that you'll have to set up a web server in the future.

Re: Ask HN: Hot & Useful software skills for novice converts?

#9
post #3

Earlier quoted context omitted.

Indeed that is a useful little skill to have. I am looking for skills at a somewhat higher level than regular expressions though. For instance, like some of those mentioned in the question above.

They make a nice, organic entry point into a lot of higher-level programming concepts, including some of the languages you list. I believe it makes more sense and is more motivating to start by solving problems rather than learning software development in the abstract. You can solve a lot of problems with pattern matching, and the ones you can't solve will then lead you to other interesting places.

idlewords is right. You may think regex is too low level, but like i said in my comment, you want to learn things that you can use anywhere. Almost every programming language has regex support.

Plus, regex is hard for a lot of people -- even programmers. Most developers copy/paste regex into their code, rather than write it.

And his other point, that it teaches you problem solving is important too. That's what software development is, solving problems. Learning a language won't help you solve problems.

You have to ask yourself, "what problem do you want to solve?"

The first thing I ask people when they want to start learning to program or build systems is: What kind of system do you want? You have to want a solution to a problem to really get good at programming. You have to create a problem and then solve it.

Regex is good at that because when you understand regex, it's easy to find problems that it solves. Imagine wanting to find all files on your computer that contain phone numbers or email addresses. Something like that is very useful and you can do it quite easily with regex.

Re: Ask HN: Hot & Useful software skills for novice converts?

#10

Their prospects are going to kind of suck at first. If I were to do a crash course, I'd say: Java/C# Code Complete/related software engineering books Eclipse/Visual Studio svn/cvs You'll notice that there's nothing overly exciting there. I think it's most important for them to get the standard set of skills that'll give them the best chance of working in software development. That means the boring stuff that most peo…

I'm a QA at a startup and I don't think it sucks. I really enjoy my job and I think it requires variety of skills. In order for you to really excel at QA, you need to know a thing or two about programming, databases, client-side scripting( JavaScript in my case), usability, TDD and etc. This whole combination makes it really interesting. Can you share your experience or opinion on why you think it stinks?
Post reply on HN