Good selection of technical skills?

danhodge

In Runtime
Messages
324
Location
UK
Hey guys. So, I can't remember if i mentioned this when it happened, but a while back my lecturer made the claim with the follow list that "I bet most of you can program in 3 of these max - if you can become fluent in all of them, you can double your salary". I thought that was ridiculous, seeing as the list is very similar languages - but feel free to tell me if i'm wrong:
C#, C++, Java, Python, Ruby, Perl, PHP.

However, it did make me curious as to what I should be learning on the side to try and round out my list of technical skills that I've acquired over my time at/before uni. So any opinions would be fantastic - feel free to assume it's for either a games programming or software engineering role.

Here's my current list:
C#, C++, HTML, CSS, Javascript/JQuery, SQL, Prolog, Haskell, VB.

The most obvious thing to me that's missing is Java - but I feel like that would be easy enough to pick up with my knowledge of C#.

And I know this is a tad pointless for most jobs (I'm assuming) since i'll never need to use more than 2 of those at once (i doubt i'm going into web development), but I'm really interested in what would build the perfect skillset.

Thanks!
Danny
 
I would venture to say that his claim that it would "double your salary" is in regards to how many more job opportunities there would be and the likelihood of them paying more because of a bulkier resume.

Looks like you're on a roll so far though great job!
 
Hey guys. So, I can't remember if i mentioned this when it happened, but a while back my lecturer made the claim with the follow list that "I bet most of you can program in 3 of these max - if you can become fluent in all of them, you can double your salary". I thought that was ridiculous, seeing as the list is very similar languages - but feel free to tell me if i'm wrong:
C#, C++, Java, Python, Ruby, Perl, PHP.
Honestly, learning the language itself isn't all that important. It's learning the logic behind the language and how to structure applications properly is what's most important. You can know a language, but if you write bad applications, you won't be doing very well in moving up within jobs. Learn what makes languages tick, their underlying structure, and as you're doing that focus on a particular language and learn it's feature-set. Once you've learned the important stuff behind programming, that's your foundation. You'll be able to pick up just about any language with just a little bit of effort in learning the syntax.

However, it did make me curious as to what I should be learning on the side to try and round out my list of technical skills that I've acquired over my time at/before uni. So any opinions would be fantastic - feel free to assume it's for either a games programming or software engineering role.
Honestly whatever interests you the most. I'm a .NET guy personally, so I focus on the .NET stack (C#, and focusing on web with MVC; know some WinForm / WPF, as well as starting to learn .NET Core).

The most obvious thing to me that's missing is Java - but I feel like that would be easy enough to pick up with my knowledge of C#.
Correct - there's some differences, but if you go into a Java job saying you know C# very well and are able to pick up languages easily, then it wouldn't take much to learn it.

And I know this is a tad pointless for most jobs (I'm assuming) since i'll never need to use more than 2 of those at once (i doubt i'm going into web development), but I'm really interested in what would build the perfect skillset.

Thanks!
Danny

I didn't think I'd do web development either...but that's where most applications are going (outside of games and mobile development). Especially company applications (either internal or customer accessible).

Like I said above, focus on learning logic over a particular language. Learning concepts and frameworks is also important; e.g. MVVM (Model-View-ViewModel) and MVC (Model-View-Controller) approaches are super important in modern application development. Same with basic project structure; i.e. separating your app into the main 3 layers: Presentation Layer (UI), Service Layer (business logic, or core logic), and Data Access Layer (repository, where your CRUD operations interact with your backend data store).
 
didn't think I'd do web development either...but that's where most applications are going (outside of games and mobile development). Especially company applications (either internal or customer accessible).

Do you think that's still true with the massive rise in use of containers (e.g docker being the most famous I guess)?
 
I would venture to say that his claim that it would "double your salary" is in regards to how many more job opportunities there would be and the likelihood of them paying more because of a bulkier resume.

But is that true? Would a bulkier resume open up higher paying jobs, even though I program at the same level for all of the languages on there? Because that seems silly to me :p

Like I said above, focus on learning logic over a particular language. Learning concepts and frameworks is also important; e.g. MVVM (Model-View-ViewModel) and MVC (Model-View-Controller) approaches are super important in modern application development. Same with basic project structure; i.e. separating your app into the main 3 layers: Presentation Layer (UI), Service Layer (business logic, or core logic), and Data Access Layer (repository, where your CRUD operations interact with your backend data store).

Okay this is all very useful. All we did for program structure was UML - i've never heard of any of this. I'll look it all up :D
Anything else along these lines you think any software engineer ought to know?
Thanks!
 
UML diagrams are mainly for modeling your classes/objects (the properties they have, as well as their data types), and any relationships between classes/objects that may exist. Can be useful to get started on translating requirements to objects.

Layered application is most important IMO; would make that your first priority in learning how to properly separate the UI layer from your logic (in theory, then you could put your Service layer to a whole new UI or even web vs desktop app with minimal effort). It makes maintenance/refactoring down the road on applications easier to do if there's a slightly more "expensive" up front cost in time separating out.

Then would be the different concepts I stated (such as MVVM and MVC).

Containers are an interesting thing to look into as well, but adoption varies by company.

If you really want to get $$$....learn an old language like Cobol/Natural/etc. and then find a job converting a company's applications from old to new frameworks. Not sure how many places over the pond have companies with apps stuck on old programs (such as mainframes), but if a company is wanting to convert from old to new, their older-app programmers are most likely looking to retire soon (if not already have).
 
But is that true? Would a bulkier resume open up higher paying jobs, even though I program at the same level for all of the languages on there? Because that seems silly to me :p


I think its kinda true. Its like a ladder of proving your market value as a worker. You'll get a job at 25$/hr work there while applying for other jobs at 30$/hr. You'll get a job there and work while applying for other work at 35$/hr, each step on the ladder is proof that you're worth that amount to an employer and by having a nicer looking resume it might make each step on the ladder a little bit easier to take.

Time is the variable I think the expression "double your income" fails to make a promise on. You CAN double your income - but it depends on how well you know what your resume says you know, what the job market is like in your area, and how motivated and aggressive you are in search of higher income.

I so I can see some truth behind it, at least.
 
Back
Top Bottom