• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Programming |OT| C is better than C++! No, C++ is better than C

injurai

Banned
So I want to learn C and then C++. I bought 4 books I thought would be good, what does GAF think about them?

The C Programming Language 2nd Edition
C++ Primer Plus 6th Edition
Beginning C++ Through Game Programming 3rd Edition
Accelerated C++

Well the first is surely a mainstay. Other than that I know that C++ Primer is highly regarded while Primer Plus is not so much and unrelated to the former.

That third book seems interesting I may check it out myself now, and the last I hear good things about too.

Macros are quite powerful. Here's a variant that looks almost exactly like your proposed version (though it can only be called once per function--as far as I can tell, there is no way to quite get NEW_LABEL to do what we want, since even the GNU extensions that allow for declaring local label variables require them to be defined within a block):

Doing stuff that way isn't really recommended though :p

neat stuff, i'd like to learn more about it but of course I say that about everything :p
 

Water

Member
I'm actually doing cross-platform development with VS 2012 and Clang right now and I noticed a feature missing from Clang that worked in VS 2012 (the put_time() function, which is part of the standard library and is still missing from the libstdc++ implementation) Apart from that, Clang as of version 3.3 or so supports all of the C++11 standard and I believe they already started on some of C++14's features.
You are confusing the compiler and the standard library implementation. Clang supports all of C++11. libstdc++ does not. For that matter, Clang's "natural" standard library implementation is not libstdc++ but libc++, which at least on OS X is C++11 feature complete, including put_time. Not sure about the Windows and Linux ports; the "latest" test results from the libc++ homepage are ancient. You might want to check them out.
^^ Yeah, I've started and stopped learning functional programming a few times in the last few years, but I think now it finally clicked with me, mostly because I did the functional programming course with Scala on Coursera. When you port an application over to Scala from C++ and some of the functions are just oneliners instead of 25 lines long, that's pretty awesome.
I did the Coursera course too. Good stuff. Not 100% positive about the language though. It feels like there's a good bit of ugliness below the surface since it tries so hard to be Java compatible and because it has to run on JVM. I'd like to eventually try Haskell or re-visit some Lisp variant (I have done some school work with Scheme).

I dig functional programming a lot. Even when coding C++ I always lean towards functional and generic, not object oriented. Check out slides 50-52 on this presentation from Stroustrup for a beautiful (albeit cherry-picked) example of what proper generic algorithm use can accomplish:
http://ecn.channel9.msdn.com/events/GoingNative12/GN12Cpp11Style.pdf

Some things in C++14 will further ease generic and functional coding in C++. That said, it will never be as good as D at functional stuff.
 

Chaos

Member
So I want to learn C and then C++. I bought 4 books I thought would be good, what does GAF think about them?

The C Programming Language 2nd Edition
C++ Primer Plus 6th Edition
Beginning C++ Through Game Programming 3rd Edition
Accelerated C++

Im going to do the same and will be using -

For C -

C Primer Plus ( More aimed at beginners than the classic C book )

C++ -

C++ Primer Plus
C++ Primer

C++ Primer Plus is not men't to be as good as his pratas C book but a lot of folk recommend to read it first before C++ Primer.

And also can watch free programming videos on http://www.wibit.net/
 

Jokab

Member
So I want to learn C and then C++. I bought 4 books I thought would be good, what does GAF think about them?

The C Programming Language 2nd Edition
C++ Primer Plus 6th Edition
Beginning C++ Through Game Programming 3rd Edition
Accelerated C++

Not that it matters, but did you just buy four books and then ask for opinions? I'd thought the better way would be the other way round.
 

Keyouta

Junior Member
Not that it matters, but did you just buy four books and then ask for opinions? I'd thought the better way would be the other way round.

Definitely not, I looked them up and researched them before buying, I just want to know what GAF's thoughts are on these books.
 

Water

Member
So I want to learn C and then C++. I bought 4 books I thought would be good, what does GAF think about them?

The C Programming Language 2nd Edition
C++ Primer Plus 6th Edition
Beginning C++ Through Game Programming 3rd Edition
Accelerated C++
Accelerated C++ is a classic. It doesn't attempt to cover a ton of language detail or library features, but discusses the core very logically and occasionally deeply. All the depth isn't even C++ specific; for instance in chapter 2, as they are introducing loops for the first time, they reason about their code using invariants. Even though the book covers C++ from the ground up, I think you need to have either a little bit of previous programming experience or a Spock-like attitude to fully enjoy it. Definitely worth reading, and if it gets too heavy first time around, worth returning to after coding for a while. I wish I had read it closer to when I first picked up C++.
 
Definitely not, I looked them up and researched them before buying, I just want to know what GAF's thoughts are on these books.

What's the point if you already bought them?

Tip: You don't learn programming languages by buying books. If anything in CS almost any other resource is better than books due to the speed things get deprecated.
 

Sharp

Member
What's the point if you already bought them?

Tip: You don't learn programming languages by buying books. If anything in CS almost any other resource is better than books due to the speed things get deprecated.
I would generally agree with this. Programming books are rarely a good investment. However, books that deal with theory or algorithms can be extremely helpful.
 
I would generally agree with this. Programming books are rarely a good investment. However, books that deal with theory or algorithms can be extremely helpful.

For sure, I just think that for that kind of knowledge Knuth's books, any online class and a simpler language like Python would be better.
 

Water

Member
For sure, I just think that for that kind of knowledge Knuth's books, any online class and a simpler language like Python would be better.
Come on. You are seriously suggesting Knuth's books to people new to programming? They are so heavy, the majority of professional programmers would be in over their head with them.

There are indeed good free online classes available these days from Coursera, Udacity and others. And it's a lot better to start with Python than with C, C++ or another low level language. But good books do help. Learning to program takes thousands of hours of time; paying for a book or a couple is totally insignificant.

It's not just pure theory books that have legs. The third edition of "The C++ Programming Language" which came out in 1997 stayed perfectly valid for over a decade. Of course some "ScriptNETEEBeans with XLOLML 2013 Learn It In 45 Minutes You Dummy (with AgileRapidIDE 9.02 beta screenshots and tips)" title is history pretty fast.
 
Looks like I have some reading to do. I'm guessing I'll need a class solely dedicated to handling a clock and/or dealing with the framerate stuff.

In case you want to use a clock, don't write your own (unless you want to, of course), there's a SFML built-in sf::Clock or the new C++11 <chrono> header (which is pretty nice, I'm using that at the moment).

You are confusing the compiler and the standard library implementation. Clang supports all of C++11. libstdc++ does not. For that matter, Clang's "natural" standard library implementation is not libstdc++ but libc++, which at least on OS X is C++11 feature complete, including put_time. Not sure about the Windows and Linux ports; the "latest" test results from the libc++ homepage are ancient. You might want to check them out.
Yeah, that's what I meant. I should probably give libc++ a try, if it didn't already come with the clang package on Ubuntu.
I did the Coursera course too. Good stuff. Not 100% positive about the language though. It feels like there's a good bit of ugliness below the surface since it tries so hard to be Java compatible and because it has to run on JVM. I'd like to eventually try Haskell or re-visit some Lisp variant (I have done some school work with Scheme).

]I dig functional programming a lot. Even when coding C++ I always lean towards functional and generic, not object oriented. Check out slides 50-52 on this presentation from Stroustrup for a beautiful (albeit cherry-picked) example of what proper generic algorithm use can accomplish:
http://ecn.channel9.msdn.com/events/GoingNative12/GN12Cpp11Style.pdf

Some things in C++14 will further ease generic and functional coding in C++. That said, it will never be as good as D at functional stuff.

I really enjoy programming in Scala. Going back to Java after programming in Scala for a while is painful. I think the way it handles OOP and FP is pretty cool. I also think it's easier for a beginner to start with something that allows you to fall back to a more imperative style every once in a while. I think that makes it easier to get to a working piece of non-trivial code quicker. As my first real project I ported over a small application I made in C++ for rendering and evaluating L-Systems and if I had only been allowed to program in a purely functional style (like Haskell) I don't think it would have gone anywhere. I ended up at first porting over most of the stuff in an imperative style, but with time I was able to come up with functional solutions for almost everything.
 

Water

Member
I really enjoy programming in Scala. Going back to Java after programming in Scala for a while is painful. I think the way it handles OOP and FP is pretty cool.
Frankly, I think Java is painful no matter what you compare it to.
I don't deal much with OOP but clearly Scala is one of the better languages to do that in. I also agree that it manages to mix OOP and FP quite nicely.
I also think it's easier for a beginner to start with something that allows you to fall back to a more imperative style every once in a while. I think that makes it easier to get to a working piece of non-trivial code quicker.
I kind of disagree. A beginner who starts with a functional language, like with the legendary SICP course, has no problem doing non-trivial things with it because they have no bad imperative instincts to fight. Arguably, allowing mutable state makes a lot of things harder because you must keep track of how the computation proceeds over time.

The thing I like the least about Scala is its lack of functional purity. Frankly, purity should be the default, and deviations from it explicitly requested by the programmer. Scala does not do this, and it doesn't even have a mechanism to mark functions as pure and have the compiler verify it. As far as I know, the only reason for this shortcoming is to not scare away bad programmers.

Despite being low level and very high performance, D verifies purity for functions marked as such. And it's smart about it: you can use mutable local state inside pure functions to run some algorithm that is best implemented with mutable state, and the function stays pure.
Grafting Functional Support on Top of an Imperative Language: How D 2.0 implements immutability and functional purity
 

Sharp

Member
SICP is amazing, by the way (in case anyone here wasn't aware or hasn't read it). If you're looking for introductory programming books, it's a stone cold classic.

And yeah, programming in Scala feela vaguely dirty, almost like C++ at times. "It's Java, but with first class functions!"
 
UPDLOCK blocks on update. Based on http://msdn.microsoft.com/en-us/library/ms173763.aspx (your query is set to READ COMMITTED), my guess is that there are individual row locks interfering between the two transactions. Are you positive that concurrent updating is really going to improve efficiency if you select all the same rows? SQL Server has to acquire locks on the physical pages of the hard disk when it writes to them so unless the table is spread across multiple disks it may not be possible to physically commit the data to disk simultaneously. See http://blog.sqlauthority.com/2011/0...latch_sh-pagelatch_up-wait-type-day-12-of-28/. SQL Server is extremely complex and I strongly recommend you get a DBA at your company to take a look at what you're doing.

You've never worked at a small company have you? I practically am the DBA, sadly.

Anyway, the deadlocks are caused by lock incompatibility on the index basically. Each thread requests a shared lock on the index, and then they fight over obtaining an exclusive lock on the index to actually do the update and that's where it is deadlocking. From what I can tell there were some solutions such as configuring the database to allow for snapshot isolation. I decided rather than to change the isolation settings I would simply reduce the amount of concurrency happening. Some concurrency still happens when necessary and I've just handled the deadlock events.

Edit: I should note, the switch from a conditional Insert/Update to a Merge actually increase performance to the extent that it mostly negated the performance problems that made me look for a concurrent solution in the first place.
 

Sharp

Member
You've never worked at a small company have you? I practically am the DBA, sadly.

Anyway, the deadlocks are caused by lock incompatibility on the index basically. Each thread requests a shared lock on the index, and then they fight over obtaining an exclusive lock on the index to actually do the update and that's where it is deadlocking. From what I can tell there were some solutions such as configuring the database to allow for snapshot isolation. I decided rather than to change the isolation settings I would simply reduce the amount of concurrency happening. Some concurrency still happens when necessary and I've just handled the deadlock events.

Edit: I should note, the switch from a conditional Insert/Update to a Merge actually increase performance to the extent that it mostly negated the performance problems that made me look for a concurrent solution in the first place.
Ah, cool. Yeah, merge is really nice--it's always surprising to me how little it's used. And you're right, I've never worked at a small company :p
 

IceCold

Member
Which Lisp dialect do you guys recommend? Common Lisp, Scheme, or Clojure? I'm leaning towards either Common Lisp and Clojure but I'm not sure which one to choose.
 

jon bones

hot hot hanuman-on-man action
just discovered spring.net dependency injection & resharper for visual studio

this shit is blowing my mind, b
 

IceCold

Member
I guess it depends on what you are trying to do. Clojure is really popular right now.

I don't know yet. I just want to learn Lisp. I've used Common Lisp a bit 2 years ago so I'm fairly used to the syntax but I want to learn it properly now. I also know Java very well so Clojure interests me too.
 

Sharp

Member
Which Lisp dialect do you guys recommend? Common Lisp, Scheme, or Clojure? I'm leaning towards either Common Lisp and Clojure but I'm not sure which one to choose.
I haven't used Clojure, but Common Lisp has some weird issues (e.g. lack of mutually recursive tail call optimization) so I would go with Scheme over it.
 

Wichu

Member
Looks like I have some reading to do. I'm guessing I'll need a class solely dedicated to handling a clock and/or dealing with the framerate stuff.

I know it's been two days, but as a fellow SFML programmer, your question caught my eye.
sf::Window has a setFramerateLimit(uint) function that automatically sleeps for the correct amount of time when you call display(). It's always good to check library documentation first ;)

EDIT: sf::Window also has setVerticalSyncEnabled(bool) which (as the name suggests) turns on/off vsync.
 
I like Javascript (well... jQuery) and the Maps API :(

Tell me how to create links for custom panoramas after navigating to one via a <select> component instead of navigating from the EntryPanorama (that creates the link when "links_changed"-event is triggered by using "getPanoramaByLocation". I can't get getPanoramaById to work for my life

please

I am begging you
 

Chris R

Member
Tell me how to create links for custom panoramas after navigating to one via a <select> component instead of navigating from the EntryPanorama (that creates the link when "links_changed"-event is triggered by using "getPanoramaByLocation". I can't get getPanoramaById to work for my life

please

I am begging you

Do you have any code to look at? I've never done anything with the StreetView stuff but it shouldn't be that hard to figure it out.
 

Kalnos

Banned
I just received a job offer from a large company after multiple phone interviews (but no in-person interview...?) and it feels really strange. Anyone else ever been offered just off of phone interviews?
 

Tamanon

Banned
I just received a job offer from a large company after multiple phone interviews (but no in-person interview...?) and it feels really strange. Anyone else ever been offered just off of phone interviews?

For a programming position, I'm not entirely sure that you can glean too much more from an in-person interview than you can with a phone interview. Sounds a little odd, but can easily be legit. Especially since many large companies have no idea how to hire a programmer and it would require someone from that department to do the interview instead of a hiring department.

Much easier for them to do it by phone.
 
So I realized my deadlock issues was because of a logic error. Lovely.

I had it batching commands based either on a batch size, or a timer. So when the batch reached 1000 or 5 seconds had passed, execute the next batch. My timer logic was broken cause of dumb logic error and it caused the batches to be dispatched non-stop. Occasionally you'll get multiple messages in a row with the same id and my guess is because so many threads were running concurrently it was deadlocking because of race conditions. Fixed my logic and fixed my deadlocks.

I suppose if I'd actually looked at my code for five minutes instead of looking up database optimization for five hours this would have been less of an ordeal. But every master programmer knows he is above simple logic errors and they never happen so there's no point in looking there. Right guys?
 
So how is the job market these days? I'm 2 years out of college at a job i don't dislike, very little micromanaging, and am respected. Got rated top 5% of company next year with a nice bump. Even there, i feel a little underpaid, and i'm working with a language that is quite old and very niche. I'm worried about getting pigeonholed if i stay here too long. Review time is coming up, and i'm left thinking about what to do if i'm disappointed this year.
 

usea

Member
So how is the job market these days? I'm 2 years out of college at a job i don't dislike, very little micromanaging, and am respected. Got rated top 5% of company next year with a nice bump. Even there, i feel a little underpaid, and i'm working with a language that is quite old and very niche. I'm worried about getting pigeonholed if i stay here too long. Review time is coming up, and i'm left thinking about what to do if i'm disappointed this year.
I'm in a similar boat, and this is my understanding of the situation based on research. And by research I mean talking to people, reading a lot of industry discussion, etc. So take it with a grain of salt. This is just my limited perspective.

The market varies by location, but overall it's pretty good. In the most general sense, if you're a skilled programmer then you have a lot of opportunities to change jobs and increase your pay. Some places want experience with specific technologies, but many will hire anybody who can pick up new tech quickly.

My friend (ex-coworker) graduated 2 years ago from an unranked school. He's smart, but doesn't have any specialized skills. He can't do UI or database stuff very well, and he doesn't have a blog. He has some personal projects on github (nothing anybody has heard of). He just got picked up by one of the big tech companies for 6 figures, almost doubling his salary. In the past year he interviewed at almost all of the big tech companies. They all turned him down except the last one.

If you read hiring posts by companies on various industry sites like hacker news, almost everybody is hiring skilled programmers year-round. They're very eager to hire programmers because they can get value out of them at many times their salary, and nobody can find enough of them. It's an applicants' market. Lots of sites have shown up like developer auction to try and take advantage of the need for good developers and the inefficiency of the traditional hiring process.

The strategy as an applicant is: have a portfolio of projects that demonstrate your ability (github, personal website), and a blog doesn't hurt either. Apply at many places and go to lots of interviews. Hiring the right people is hard, and great candidates are often turned down. Cast a wide net and don't be discouraged.

The actual best method is to have an "in" to companies you're applying. Either via an internal recruiter who noticed you, or a friend/acquaintance who will recommend you from the inside. But these methods aren't always available to everybody. Sometimes recruiters will only look at the top 100 schools or whatever, so you may have to just send cold applications.

Also, have some people look over your resume. And keep your LinkedIn updated. Sorry if this turned into general applicant advice that you might have not needed.
 
I'm in a similar boat, and this is my understanding of the situation based on research. And by research I mean talking to people, reading a lot of industry discussion, etc. So take it with a grain of salt. This is just my limited perspective.

The market varies by location, but overall it's pretty good. In the most general sense, if you're a skilled programmer then you have a lot of opportunities to change jobs and increase your pay. Some places want experience with specific technologies, but many will hire anybody who can pick up new tech quickly.

My friend (ex-coworker) graduated 2 years ago from an unranked school. He's smart, but doesn't have any specialized skills. He can't do UI or database stuff very well, and he doesn't have a blog. He has some personal projects on github (nothing anybody has heard of). He just got picked up by one of the big tech companies for 6 figures, almost doubling his salary. In the past year he interviewed at almost all of the big tech companies. They all turned him down except the last one.

If you read hiring posts by companies on various industry sites like hacker news, almost everybody is hiring skilled programmers year-round. They're very eager to hire programmers because they can get value out of them at many times their salary, and nobody can find enough of them. It's an applicants' market. Lots of sites have shown up like developer auction to try and take advantage of the need for good developers and the inefficiency of the traditional hiring process.

The strategy as an applicant is: have a portfolio of projects that demonstrate your ability (github, personal website), and a blog doesn't hurt either. Apply at many places and go to lots of interviews. Hiring the right people is hard, and great candidates are often turned down. Cast a wide net and don't be discouraged.

The actual best method is to have an "in" to companies you're applying. Either via an internal recruiter who noticed you, or a friend/acquaintance who will recommend you from the inside. But these methods aren't always available to everybody. Sometimes recruiters will only look at the top 100 schools or whatever, so you may have to just send cold applications.

Also, have some people look over your resume. And keep your LinkedIn updated. Sorry if this turned into general applicant advice that you might have not needed.

Thanks, I appreciate it. Like i said, last year i got noticed and received a bump over 25%, but with traditional raises, still a few years from 6 figures. Also using outdated language that isn't really helping my skills. After i receive my review, how would you go about slowly dipping into the market? just pick the top tech companies and apply to them, or hit up sites like dice?
 

usea

Member
Thanks, I appreciate it. Like i said, last year i got noticed and received a bump over 25%, but with traditional raises, still a few years from 6 figures. Also using outdated language that isn't really helping my skills. After i receive my review, how would you go about slowly dipping into the market? just pick the top tech companies and apply to them, or hit up sites like dice?
This part I don't really have an answer to. Some people I know get lots of attention from company recruiters on linkedin, which almost guarantees at least a phone screen. Other people have a network of people built up (from school or past jobs) where they can ask about positions.

I get the impression that without the above, it's much more difficult to get an interview. I don't know the best strategy. Thankfully, once you're at the interview it's mostly just your skills and luck that matter.
 
I'll take a look at this when I get home from work and see if I can't see what the problem might be.

The solution was ridiculously simple


Code:
function onChange(){	  
    d = document.getElementById("hamk_select").value;
    var  panoOptions = {		
    pano: d,		  
     };	  		
    panorama.setOptions(panoOptions);
 }

panorama.setOptions triggers the same "links_changed" event as the original one, but panorama = new google.events.StreetViewService obviously doesn't. Duh. What a waste of time.
 

Chris R

Member
The solution was ridiculously simple


Code:
	  function onChange(){
	  
		d = document.getElementById("hamk_select").value;
		
	    var  panoOptions = {		
		  pano: d,		  
        };	  
		
		panorama.setOptions(panoOptions);
	  
		
	  }

panorama.setOptions triggers the same "links_changed" event as the original one, but panorama = new google.events.StreetViewService obviously doesn't. Duh. What a waste of time.

Glad to see you got it figured out! I've only done map stuff with the API (Markers, polygons, ect). The Panorama stuff seems cool though.
 
Glad to see you got it figured out! I've only done map stuff with the API (Markers, polygons, ect). The Panorama stuff seems cool though.

Yeah we did a large project where we shot all the locations of our school (9 different places total) that resulted in around 200 panoramas which were made out of 8 pictures.

Currently finishing the code up and doing the some final adjustments / extra stuff like the select box-navigation there. I am usually doing OOP (Flex/AS3 mainly) so I am making dumb errors all the time with JavaScript.
 

Rapstah

Member
I'm almost certain that Visual C++ 2010 is wrong here and I'm right, but saying that usually leads to me looking like a fool when someone else points out how I've done something stupid. Here's a class I've written:
Code:
#include "reg8.h"

#include <stdint.h> // For sixteen-bit integers.

class Register16Bit {
public:
	// Default constructor.
	Register16Bit();

	// Creates a 16-bit register tying the two specified pointed 8-bit registers
	// together.
	Register16Bit (Register8Bit*, Register8Bit*);

	// Returns the 16-bit value that results from interpreting the lower and higher
	// registers as a single 16-bit register.
	uint16_t nGetValue();

	// Sets the internal value to nNewValue, splitting it across the lower and higher
	// registers.
	void SetValue (uint16_t nNewValue);

	// Increments the internal value by one, splitting it across the lower and higher registers.
	void Increment();

	// Decrements the internal value by one, splitting it across the lower and higher registers.
	void Decrement();

private:
	Register8Bit* m_r8_Lower;
	Register8Bit* m_r8_Higher;
};

Register16Bit::Register16Bit(Register8Bit *r8_Lower, Register8Bit *r8_Higher) {
	m_r8_Lower = r8_Lower;
	m_r8_Higher = r8_Higher;
}

[...]

There are further definitions in the file but they shouldn't have anything to do with the error I'm getting. (I'll look like an idiot again if they do.)

Visual C++ highlights the constructor in red and has this to say:
visualcpluspluserrorp4ara.png


I don't even know what that's supposed to mean, but what I'm reading is it thinks my (Register8Bit*, Register8Bit*) constructor is the (const Register16Bit &) constructor. Am I doing something obviously wrong here or is the program wrong?
 

tokkun

Member
Visual C++ highlights the constructor in red and has this to say:
visualcpluspluserrorp4ara.png


I don't even know what that's supposed to mean, but what I'm reading is it thinks my (Register8Bit*, Register8Bit*) constructor is the (const Register16Bit &) constructor. Am I doing something obviously wrong here or is the program wrong?

The (const Register16Bit&) constructor it is referencing is probably actually the compiler's auto-generated copy constructor.

Both of the constructors it is showing you in that box are the ones that are auto-generated by the compiler. Does the code actually fail to compile?
 

Rapstah

Member
The (const Register16Bit&) constructor it is referencing is probably actually the compiler's auto-generated copy constructor.

Both of the constructors it is showing you in that box are the ones that are auto-generated by the compiler. Does the code actually fail to compile?

It didn't compile because the issue was some sort of circular include problem in another file that included this one. Should probably have tried compiling first, thanks.
 

Kinitari

Black Canada Mafia
So I've been playing around with learning a javascript MV* framework, and finally settled on Angular because of the sheer amount of buzz around it, and let's be honest, I have a bit of a boner for Google.

I really really am impressed with it, and I am picking it up without too much of a hassle (maybe because of my experience with .NET, as I feel there are enough parallels that it's coming without too much of a hassle).

My backend ability needs a lot of work though, so I am going to put some time into PHP and Node.js, completely sidestepping Ruby (just because it seems like such a robust and deep framework that I would have to focus everything on learning it). However before that, I wanted to try Firebase - and HOLY FUCK.

This is pretty great. It took me a little while to wrap my head around it, but I'm finally making headway and it's pretty astounding how simple it is. They added a module for Angular.js that makes it soooo goddamn easy to get two way binding between a database and a view that I feel like a simple web app could be made from scratch in a fraction of the time.

I'm not plugging it or anything, don't work for them, but I was just really surprised how simple the whole process was. I think I'll still need to learn PHP/MySQL to be relevant, but maybe for my own pet projects, I'm going to rely on this combo more.
 
I'm in a similar boat, and this is my understanding of the situation based on research. And by research I mean talking to people, reading a lot of industry discussion, etc. So take it with a grain of salt. This is just my limited perspective.

The market varies by location, but overall it's pretty good. In the most general sense, if you're a skilled programmer then you have a lot of opportunities to change jobs and increase your pay. Some places want experience with specific technologies, but many will hire anybody who can pick up new tech quickly.

My friend (ex-coworker) graduated 2 years ago from an unranked school. He's smart, but doesn't have any specialized skills. He can't do UI or database stuff very well, and he doesn't have a blog. He has some personal projects on github (nothing anybody has heard of). He just got picked up by one of the big tech companies for 6 figures, almost doubling his salary. In the past year he interviewed at almost all of the big tech companies. They all turned him down except the last one.

If you read hiring posts by companies on various industry sites like hacker news, almost everybody is hiring skilled programmers year-round. They're very eager to hire programmers because they can get value out of them at many times their salary, and nobody can find enough of them. It's an applicants' market. Lots of sites have shown up like developer auction to try and take advantage of the need for good developers and the inefficiency of the traditional hiring process.

The strategy as an applicant is: have a portfolio of projects that demonstrate your ability (github, personal website), and a blog doesn't hurt either. Apply at many places and go to lots of interviews. Hiring the right people is hard, and great candidates are often turned down. Cast a wide net and don't be discouraged.

The actual best method is to have an "in" to companies you're applying. Either via an internal recruiter who noticed you, or a friend/acquaintance who will recommend you from the inside. But these methods aren't always available to everybody. Sometimes recruiters will only look at the top 100 schools or whatever, so you may have to just send cold applications.

Also, have some people look over your resume. And keep your LinkedIn updated. Sorry if this turned into general applicant advice that you might have not needed.

Here in Philadelphia the job market is on fire. I have my resume on my LinkedIn and on Dice.com, and despite it saying "Not currently seeking new employment" on my profile on recruiters from both places people won't stop calling me trying to get me go on interviews. From one recruiter alone I get an email a week with no less than 5 job openings. Now, I have some good bullet points on my resume (J2EE, Spring, SQL Server, UI and Architecture experience, etc), but I don't think it's solely that. People are calling me about jobs based on an old Monster.com resume I posted when I was right out of college, trying to get me entry level stuff.

My problem is a bit different. I love my job. I set my own hours (I work about 35 a week), get unlimited sick leave and 20+ days off a year. It's a small company so there's no BS. I get to work on an interesting project, and I'm basically the de facto Software Architect, which is great experience. But I don't feel like I get paid appropriately. I'm only getting $90K and I feel like if I left I could get well into six figures somewhere else. There's also no retirement plan/401k here, which is a pretty big deal to me as well.

I just don't know if I want to leave a cushy job for that. The other thing is that I am a 5% shareholder in this company, but my shares are revocable if I leave the company. I sort of feel like the company is on the verge of really taking off, but I've also felt that for the last two years and it hasn't happened yet. We work in government contracts and it's a long process to get new ones, even if we have prospects. It's hard to justify staying if I could make $20-30k more per year elsewhere. It's also such a small company that I can't get much management experience, which is my ultimate goal. I'm trying to climb up to a high management position at a large corporation in the future to try to rake in the big money and that's not going to happen if I can't get management experience.
 

Chris R

Member
I really need to get on making a few good portfolio projects that I could have on GitHub. I have a few ideas, just haven't spent time making it happen.

It would be nice if I could include the stuff I've worked on in my current job, but all of that is almost entirely internal so it doesn't transport well and isn't for public display :( n
 

Gamerloid

Member
The GAF's slogan should be: "There's an OT for that." This is pretty awesome and I was getting interested in the coding aspects of computers. I'm majoring in Electronic Engineering currently as I love the hardware and components, but software also has my attention.

Going to look at those resources in the OT. Python seems like the best language to start with.
 

injurai

Banned
The GAF's slogan should be: "There's an OT for that." This is pretty awesome and I was getting interested in the coding aspects of computers. I'm majoring in Electronic Engineering currently as I love the hardware and components, but software also has my attention.

Going to look at those resources in the OT. Python seems like the best language to start with.

Python is great if you want to do some simple application programming or use it for a hardware controller like the raspberry pi.

Since you are more on the electronics side it would be extremely helpful to learn how assembly works. If not to actively use it, to understand what is using your hardware. Also other lowish level stuff like C.

Depends I guess if you are dealing more with breaking out I/O with some sort of a controller (robotics etc.), or are trying to use programming really low level to the hardware. (cpu states, clock cycles)

It's just one opinion, but if you are mostly planning on working with electronics at the chip level and want your programming to compliment and reflect that, you should deal with some lower-level languages. Python is relatively high, and while you will be able to get to the point of making non-trivial stuff sooner you may be better off with C/C++.

Just my 7 cents. :D
 
Here in Philadelphia the job market is on fire. I have my resume on my LinkedIn and on Dice.com, and despite it saying "Not currently seeking new employment" on my profile on recruiters from both places people won't stop calling me trying to get me go on interviews. From one recruiter alone I get an email a week with no less than 5 job openings. Now, I have some good bullet points on my resume (J2EE, Spring, SQL Server, UI and Architecture experience, etc), but I don't think it's solely that. People are calling me about jobs based on an old Monster.com resume I posted when I was right out of college, trying to get me entry level stuff.

My problem is a bit different. I love my job. I set my own hours (I work about 35 a week), get unlimited sick leave and 20+ days off a year. It's a small company so there's no BS. I get to work on an interesting project, and I'm basically the de facto Software Architect, which is great experience. But I don't feel like I get paid appropriately. I'm only getting $90K and I feel like if I left I could get well into six figures somewhere else. There's also no retirement plan/401k here, which is a pretty big deal to me as well.

I just don't know if I want to leave a cushy job for that. The other thing is that I am a 5% shareholder in this company, but my shares are revocable if I leave the company. I sort of feel like the company is on the verge of really taking off, but I've also felt that for the last two years and it hasn't happened yet. We work in government contracts and it's a long process to get new ones, even if we have prospects. It's hard to justify staying if I could make $20-30k more per year elsewhere. It's also such a small company that I can't get much management experience, which is my ultimate goal. I'm trying to climb up to a high management position at a large corporation in the future to try to rake in the big money and that's not going to happen if I can't get management experience.
How many years of experience do you have? I'm 2 years out of college, expect to make about 75 this year. Like you, I work about 35 hours. Also in the Midwest, the money goes further. Have a good 401k in a large growing company. Wonder if I should just appreciate my job. I could always move to another position and work on more current technology, but they work the developers hard there.
 
Top Bottom