Just a quicky I came across this morning:
If you get the above message when trying to do a Remote Procedure Call across linked servers in SQL Server, your server is not configured to do so.
To fix this execute the following commands:
exec sp_serveroption @server='myserver', @optname='rpc', @optvalue='true'
exec sp_serveroption @server='myserver', @optname='rpc out', @optvalue='true'
Discussions relating to Software Development. Other rants thrown in for free
Thursday, July 31, 2008
Tuesday, July 29, 2008
Adding more noise to the "Code Comments" debate
For the record, before I get started I have to state that despite where Jeff Atwood has gone lately in editorial terms, I have a great amount of respect for his blog and the work he's put into it over the years. As a contractor, I move around different companies quite a bit, but one of the constants has always been the frequent, thought provoking team discussions which have arisen as a result of one of Jeff's posts. But ever since Jeff typed the now immortal phrase "strong opinions, weakly held" the majority of people I have spoken to think he is ever-so-slowly losing the plot. It does seem that a lot of his posts lately have been triggered by some experience he's encountered during his work on StackOverflow.com, and while there is obviously nothing necessarily wrong with that, I do wonder if the bubble he has found himself working in is skewing his perspective a little.
The post which finally drove this blog to state its own position is this:
Coding Without Comments
Unlike some of his other posts, specifically the one about #regions, this one I've read all the way through several times, and made sure I read it through again before I writing this post. And basically the whole thing leaves me with such a bad taste in the mouth that I can barely believe what I've been reading.
Like it or not, Jeff is read by many developers across the spectrum of ability and experience. Young and new devs are sent links to Jeff's posts and are over time gradually eased into the Atwood Cult. I feel as though in this one post Jeff has potentially done some significant damage to the hard work that all of those people, like myself, who as part of my job try to encourage others to write clear code and write good comments. It has handed on a plate an excuse for those devs who are too lazy, or disenfranchised in their jobs (the job security excuse), to bother putting any comments in the code that they churn out.
To try to keep the rest of this concise, I'll list my views on this as bullet points:
We can't all code in utopia.
The post which finally drove this blog to state its own position is this:
Coding Without Comments
Unlike some of his other posts, specifically the one about #regions, this one I've read all the way through several times, and made sure I read it through again before I writing this post. And basically the whole thing leaves me with such a bad taste in the mouth that I can barely believe what I've been reading.
Like it or not, Jeff is read by many developers across the spectrum of ability and experience. Young and new devs are sent links to Jeff's posts and are over time gradually eased into the Atwood Cult. I feel as though in this one post Jeff has potentially done some significant damage to the hard work that all of those people, like myself, who as part of my job try to encourage others to write clear code and write good comments. It has handed on a plate an excuse for those devs who are too lazy, or disenfranchised in their jobs (the job security excuse), to bother putting any comments in the code that they churn out.
To try to keep the rest of this concise, I'll list my views on this as bullet points:
- I won't go too far into any of the examples in Jeff's posts as clearly they are carefully chosen to prove the point. What I will say though is that his refactoring of the SquareRootApproximation by extracting the method did not, as he says, make the code "perfectly understandable". He's made the use of the code understandable, but not adding comments, or breaking up the string of operations, is creating code that is probably difficult to maintain.
- We don't all work with our friends or with people we've worked with for years and so understand how they tick.
- Encouraging people to use better naming for variables and methods etc is an exceptionally good thing, and I think this is probably where the emphasis in Jeff's post should have been. The policy of this blog is that code reviews are king, and code that is written with a bias towards readability, and therefore more suited to review, should be encouraged even if this results occasionally in less than optimal implementation, and maybe produces slightly larger source files.
- There is such a thing as too many comments. I have a running joke with a particular developer I have worked with a couple of times that he over-comments his code. Taken to an extreme, comments which mindlessly state in verbose English the simple to understand operations that follow, do harm the ability to read and review code, as they add unwanted noise.
- In terms of the argument for better naming of constructs and members rather than comments, I strongly believe that it should not be a case of either/or it should and must be BOTH.
- Maybe Jeff can be forgiven for being US-centric but the overriding notion you get from his recent posts kind of implies that every team can and must be occupied by top tier, highly experienced and capable coders. If a team member isn't up to the task then it's in the team's interests to drop them and find another. This is a fine and noble sentiment but for a few flaws: Not every developer can be the best of breed. In general, especially in the UK, we have a skills shortage and in particular a shortage of high quality, experienced software developers. (The reasons for this are largely political and mainly due to the current government's attempt to destroy our IT industry, in favour of promoting the agendas of the large consulting firms, but that is a post for another day.) The net result is that the industry is filled with developers wholly unsuited to software development and have moved to careers in IT as an easy route. They are everywhere, both contractors and permies, and are writing ream after ream of code, with barely a consideration about how that code will be maintained or supported. These are the people who will use Jeff's posts to argue that comments in code are pointless.
- One of the big anti-comments arguments is that they can become out of date in relation to the code they comment. My response to this is that COMMENTS ARE AS IMPORTANT AS THE CODE and deserve the same level of attention during modification of code as the compilable stuff itself. The argument that comments quickly go out of date should not hold water.
We can't all code in utopia.
Friday, July 25, 2008
Apple v Windows - get over it
I like Apple products. They are well designed and engineered, and the user experience is second to none.
Do I like them blindly. No. Apple make mistakes, just look at Mobile Me and the issues with iPhone activations, supply and crashing. The continuation of the iPhone SDK NDA reeks of typical Apple arrogance. It's a, "You'll do what we tell you, and if you don't like it we don't care" attitude.
But in the fan bois eyes, Apple can do no wrong. It's starting to get annoying to me to be honest. Sure, enjoy Apple products, but don't turn a blind eye to their faults. Or worse, attack people who rightly point out the flaws.
I'm sick of reading in places like Mac Daily News, pieces about how crap Windows is, how stupid Balmer is, how Vista is crap and driving customers to Apple, because Apple is the chosen platform and all who use it are the chosen ones. I mean read the drivel in here.
OSX is a great platform - it's fast, responsive and a pleasure to use. But fan bois constantly running down Windows, feels a little like poor cousin syndrome to me.
I can guarantee that if Apple had to write an OS to perform, with the user base and different hardware base that Windows has, it would be just as prone to bugs and crashes as Windows supposedly is.
Just look at the iPhone. Great device, awesome hardware, but the new 2.0 software is buggy as hell. It crashes a lot. You could argue that it is the third party apps that are the problem - but surely if they are supposed to run in a sandbox mode, why would an app crash bring the system down? It's not 1995 after all.
So guys, get over it. Windows isn't for you, we get it. It's not for me either, but constantly bagging it is making you look like a cock, and by association, the rest of us too.
Do I like them blindly. No. Apple make mistakes, just look at Mobile Me and the issues with iPhone activations, supply and crashing. The continuation of the iPhone SDK NDA reeks of typical Apple arrogance. It's a, "You'll do what we tell you, and if you don't like it we don't care" attitude.
But in the fan bois eyes, Apple can do no wrong. It's starting to get annoying to me to be honest. Sure, enjoy Apple products, but don't turn a blind eye to their faults. Or worse, attack people who rightly point out the flaws.
I'm sick of reading in places like Mac Daily News, pieces about how crap Windows is, how stupid Balmer is, how Vista is crap and driving customers to Apple, because Apple is the chosen platform and all who use it are the chosen ones. I mean read the drivel in here.
OSX is a great platform - it's fast, responsive and a pleasure to use. But fan bois constantly running down Windows, feels a little like poor cousin syndrome to me.
I can guarantee that if Apple had to write an OS to perform, with the user base and different hardware base that Windows has, it would be just as prone to bugs and crashes as Windows supposedly is.
Just look at the iPhone. Great device, awesome hardware, but the new 2.0 software is buggy as hell. It crashes a lot. You could argue that it is the third party apps that are the problem - but surely if they are supposed to run in a sandbox mode, why would an app crash bring the system down? It's not 1995 after all.
So guys, get over it. Windows isn't for you, we get it. It's not for me either, but constantly bagging it is making you look like a cock, and by association, the rest of us too.
Reflections from the UK part 1
Now we're down to our last month(ish) in the UK, I am in a reflective mood.
I've enjoyed my time in the UK and Europe and the UK contracting scene has been kind to me so I have no real complaints. IT recruiters in the UK are about as trustworthy as a fox who has become self aware and started selling cars, but it's all part of the game and once you know the rules, it easy to play along.
I have done five contracts in the 18 months or so since I've been here. All doing C# or C++ in various guises. Four have been based in the Midlands and one in London. Travel has been from 25 minutes to 2 hours (each way) and pay rate has differed by 100 quid a day from the low to the high rate. The longest I have been out of work is 3 weeks, which included a week holiday.
So, like I said nothing to complain about really.
The market for contractors has dried up a bit in the last 18 months, and rates have definitely come back. Still there is plenty of work for the right skills, but I'm glad we came when we did.
I've met some tossers and some good bastards along the way. Some really good devs, some really shit devs and one freak (in terms of coding ability). I actually thought before I came that my skills might not cut the mustard, but save the freak and one maybe two others, I consider my skills to be superior to others I have worked with. I think that as Kiwi's we are early adopters and probably because of our smaller teams and budgets, have to get to know a lot more technologies and nuts and bolts than the guys here.
Companies here seem to be a little more conservative, backward thinking, and resistant to change. The majority of the companies I worked for still used Source Safe, and had old C++, VB or 1.1 code lurking around. C# 2.0 is used more often than not, but 3.0 isn't even being considered.
I was shocked at the lack of structure in a lot of places too. I'm not talking little companies here either, in a lot of cases we're talking large multi-nationals, or software used in high volume, mission critical places. Only one place had Unit testing, only one place had continuous integration and only one place used any sort of Agile practices. All of those were the same place! In my opinion a lot of the issues in companies like this is the middle management. To a company, the middle management are next to useless and create more problems than they solve.
A NZ company just wouldn't have the budget for PM's and Middle Managers, so management tends to take a more hands on approach and from my experience, is the better for it.
Next time on the muppet show I will discuss how I could fix roading issues in the UK in one easy step.
I've enjoyed my time in the UK and Europe and the UK contracting scene has been kind to me so I have no real complaints. IT recruiters in the UK are about as trustworthy as a fox who has become self aware and started selling cars, but it's all part of the game and once you know the rules, it easy to play along.
I have done five contracts in the 18 months or so since I've been here. All doing C# or C++ in various guises. Four have been based in the Midlands and one in London. Travel has been from 25 minutes to 2 hours (each way) and pay rate has differed by 100 quid a day from the low to the high rate. The longest I have been out of work is 3 weeks, which included a week holiday.
So, like I said nothing to complain about really.
The market for contractors has dried up a bit in the last 18 months, and rates have definitely come back. Still there is plenty of work for the right skills, but I'm glad we came when we did.
I've met some tossers and some good bastards along the way. Some really good devs, some really shit devs and one freak (in terms of coding ability). I actually thought before I came that my skills might not cut the mustard, but save the freak and one maybe two others, I consider my skills to be superior to others I have worked with. I think that as Kiwi's we are early adopters and probably because of our smaller teams and budgets, have to get to know a lot more technologies and nuts and bolts than the guys here.
Companies here seem to be a little more conservative, backward thinking, and resistant to change. The majority of the companies I worked for still used Source Safe, and had old C++, VB or 1.1 code lurking around. C# 2.0 is used more often than not, but 3.0 isn't even being considered.
I was shocked at the lack of structure in a lot of places too. I'm not talking little companies here either, in a lot of cases we're talking large multi-nationals, or software used in high volume, mission critical places. Only one place had Unit testing, only one place had continuous integration and only one place used any sort of Agile practices. All of those were the same place! In my opinion a lot of the issues in companies like this is the middle management. To a company, the middle management are next to useless and create more problems than they solve.
A NZ company just wouldn't have the budget for PM's and Middle Managers, so management tends to take a more hands on approach and from my experience, is the better for it.
Next time on the muppet show I will discuss how I could fix roading issues in the UK in one easy step.
Thursday, July 17, 2008
Uninstalling Resharper causes VS2005 intellisense to stop working
How about that heading for SEO eh?
Anyway, this appears to be a problem with those people who have uninstalled R# from 2005, but also have 2008 installed. In this case it appears R# leaves intellisense off when it uninstalls. To turn it back on again select Tools | Options menu and you will see this form:
(If you can't see the form (Blogspot was playing silly buggars when I checked this earlier) its under Text Editor | C# | General )
Just put the ticks back into "Auto List Members" and "Parameter Info" and your intellisense will be back.
Anyway, this appears to be a problem with those people who have uninstalled R# from 2005, but also have 2008 installed. In this case it appears R# leaves intellisense off when it uninstalls. To turn it back on again select Tools | Options menu and you will see this form:
(If you can't see the form (Blogspot was playing silly buggars when I checked this earlier) its under Text Editor | C# | General )
Just put the ticks back into "Auto List Members" and "Parameter Info" and your intellisense will be back.
Wednesday, July 16, 2008
Introducing....
After me needling him in a previous post, I have managed to convince Daniel Robinson, that he needs to be blogging, and also to join us here on "Software Development and stuff".
Dan will introduce himself properly later, but his specialist subjects include: ASP.NET, MVC and MVP patterns in Web applications, Biztalk and is always keen for frank and open discussions about software development!
So welcome Dan and over to you...
Dan will introduce himself properly later, but his specialist subjects include: ASP.NET, MVC and MVP patterns in Web applications, Biztalk and is always keen for frank and open discussions about software development!
So welcome Dan and over to you...
Tuesday, July 15, 2008
Visual Studio: what does that mean?
Ok, so sometimes in life things are called something and they are so much a part of your life that you don't give it a second thought. Car model names are the perfect example of this. I mean wtf is a Integra? What is a Corolla, or a Prius? Stupid names indeed.
I was looking at a retail box of Visual Studio on my desk today and a thought popped into my head. What a really really stupid name Visual Studio is.
If someone told you that they used something called Visual Studio as their tool of the trade, you would think they were into digital compositing, or photography or perhaps painting. A programmers tool isn't instantly obvious from the name. I mean back in the day when we (well some of us) were poking away at Dos, then using the word Visual actually meant something, but everything is "Visual" these days. Actually Visual Studio wasn't even the original name back in 96 or 97. It was Developer Studio, which event thought it may sound like something a camera tech would use, is a little better IMHO.
It's wasted air talking about it. MS are more likely to outsource their OS operations to Apple as they are to change the name of Visual Studio, but what would you call the tool you use everyday?
I've been trying to think while I have been writing this and I couldn't honestly come up with anything good, so with tongue in cheek, and using current Microsoft naming conventions, I think the new name should be "Microsoft Windows Development Studio for Microsoft Windows and Internet Information System 2008".
I was looking at a retail box of Visual Studio on my desk today and a thought popped into my head. What a really really stupid name Visual Studio is.
If someone told you that they used something called Visual Studio as their tool of the trade, you would think they were into digital compositing, or photography or perhaps painting. A programmers tool isn't instantly obvious from the name. I mean back in the day when we (well some of us) were poking away at Dos, then using the word Visual actually meant something, but everything is "Visual" these days. Actually Visual Studio wasn't even the original name back in 96 or 97. It was Developer Studio, which event thought it may sound like something a camera tech would use, is a little better IMHO.
It's wasted air talking about it. MS are more likely to outsource their OS operations to Apple as they are to change the name of Visual Studio, but what would you call the tool you use everyday?
I've been trying to think while I have been writing this and I couldn't honestly come up with anything good, so with tongue in cheek, and using current Microsoft naming conventions, I think the new name should be "Microsoft Windows Development Studio for Microsoft Windows and Internet Information System 2008".
Carphone Warehouse: Technically inept or lying bastards?
OK, so I was going to wait a few weeks until the potential rush for iPhones eased off before I decided to take the plunge, but after realising that my contract with 3 whom I have had three problem free years of service was ending on 11th July it occured to me that it was the ideal time to switch.
Anyway, it's the Thursday (1oth) and accepting that I'm probably in for a bit of a wait due to the stuff I'm reading on the net I say to myself, "I'll head over to the CPW website and see if they're still taking orders." I visit the site and to my surprise they have the 16Gb phone "IN STOCK"!
OK there's a note saying that orders received after 3:30pm will not be delivered on the Friday, which is fine for me, so off I go, calling 3 asking for the PAC code so that I can transfer the number. This code is valid for 30 days so obviously the clock is now ticking. (Incidentally, the stuff that 3 were offering me to stay with them was mindbendingly stunning and if I hadn't already committed myself to the iPhone I would have jumped at it, no details but basically any phone I wanted for free, and the sort of tarrif that would make an O2 iPhone subscriber's eyes bleed, including unlimited data) Anyway, I go through the buying process, at each stage the words "In Stock" are there so I'm ploughing on thinking it just might happen.
Finally I get to the last confirmation page still expecting the rug to get pulled and finally... I get a confirmation mail for the order. I do the order status page and it tells me that it will be delivered on the 12th (the Saturday) and I'm thinking "yay!"
Then, later in the evening I get a mail telling me that, to paraphrase: "hey valued customer, you just ordered something on our site, we took your order but now we can't get you what you wanted. Don't worry though, now we have your details we'll be sure to get around to sorting you out at some unspecified time in the future, of our choosing, tosser!"
Now I know how limited stock was, and I know how I'm not the only person to miss out, but the one thing, the ONLY thing that is pissing me off about this whole story is the fact that Carphone Fucking Warehouse had "IN STOCK" plastered all over the iPhone pages and were more than happy to accept my details and go through the charade of taking my order when in fact they in no way, shape or form had any capability or intention of matching up an ORDER with a fucking STOCK ITEM.
Is it just me, or in this day and age with the software and computer capabilities we have available to us is to beyond a large company like CPW to be able to in real-time, match orders with specific items they have in stock? Is it?
I don't fucking think so... although clearly that kind of service is either beyond them or they truly don't give a flying fuck about customers. Which is made self evident in the image below which is taken from their highly informative and useful order status page:
Translation: "You know when you ordered something and we told you it was in stock? Well we lied, but we know you'll sit around waiting so we'll try to do something about it when we can be arsed and you'll just have to guess when that might be. Oh yeah, and here's the date we lied about when we said we would get it to you, just so you can imagine what it would have been like to actually get the thing. Just to rub it in a little bit more!"
Anyway, it's the Thursday (1oth) and accepting that I'm probably in for a bit of a wait due to the stuff I'm reading on the net I say to myself, "I'll head over to the CPW website and see if they're still taking orders." I visit the site and to my surprise they have the 16Gb phone "IN STOCK"!
OK there's a note saying that orders received after 3:30pm will not be delivered on the Friday, which is fine for me, so off I go, calling 3 asking for the PAC code so that I can transfer the number. This code is valid for 30 days so obviously the clock is now ticking. (Incidentally, the stuff that 3 were offering me to stay with them was mindbendingly stunning and if I hadn't already committed myself to the iPhone I would have jumped at it, no details but basically any phone I wanted for free, and the sort of tarrif that would make an O2 iPhone subscriber's eyes bleed, including unlimited data) Anyway, I go through the buying process, at each stage the words "In Stock" are there so I'm ploughing on thinking it just might happen.
Finally I get to the last confirmation page still expecting the rug to get pulled and finally... I get a confirmation mail for the order. I do the order status page and it tells me that it will be delivered on the 12th (the Saturday) and I'm thinking "yay!"
Then, later in the evening I get a mail telling me that, to paraphrase: "hey valued customer, you just ordered something on our site, we took your order but now we can't get you what you wanted. Don't worry though, now we have your details we'll be sure to get around to sorting you out at some unspecified time in the future, of our choosing, tosser!"
Now I know how limited stock was, and I know how I'm not the only person to miss out, but the one thing, the ONLY thing that is pissing me off about this whole story is the fact that Carphone Fucking Warehouse had "IN STOCK" plastered all over the iPhone pages and were more than happy to accept my details and go through the charade of taking my order when in fact they in no way, shape or form had any capability or intention of matching up an ORDER with a fucking STOCK ITEM.
Is it just me, or in this day and age with the software and computer capabilities we have available to us is to beyond a large company like CPW to be able to in real-time, match orders with specific items they have in stock? Is it?
I don't fucking think so... although clearly that kind of service is either beyond them or they truly don't give a flying fuck about customers. Which is made self evident in the image below which is taken from their highly informative and useful order status page:
Translation: "You know when you ordered something and we told you it was in stock? Well we lied, but we know you'll sit around waiting so we'll try to do something about it when we can be arsed and you'll just have to guess when that might be. Oh yeah, and here's the date we lied about when we said we would get it to you, just so you can imagine what it would have been like to actually get the thing. Just to rub it in a little bit more!"
Monday, July 14, 2008
How I got started in Software Development (Shaun's Go)
OK, OK, I don't usually do these sorts of things and apologies if I get take a few liberties and ramble on a bit but here are my answers:
How old were you when you started programming?
Like James, I'm a bit uncertain about dates with this stuff really but I know that the first computer I owned and did coding on was a Commodore Plus/4. I certainly didn't appreciate how unusual the +4 was at the time. It must have been around 1984 as they discontinued it a year later and I know it was a new machine at the time so that would make me 9-10.
I don't think that was my earliest bit of coding though as I know that at least one of my friends had a new ZX Spectrum and a girl who lived next door to me owned an Acorn Electron. I suppose my earliest memories of coding was basically boring those friends to death and getting into big fights as they wanted to play the games and all I wanted to do was sit there and type in the code listings at the back of the manuals. That will have been 82-83 so 8 -9 years old.
How did you get started in programming?
As I said above, it was all born from a fascination of the fact that rather than stick a tape in the deck and wait for 5 minutes while a game loaded then play the game. I was more interesting in the fact that you could type stuff in and make the computer do stuff that I'd told it to. Obviously, at this stage I think my childish fumblings were fairly rudimentary as, not knowing anyone else interested in programming rather than playing games, I didn't really have any other sources of information on programming available to me so I kind of had to work it all out for myself. I found myself wondering lately how someone like I was at that time would turn out if they had all the information and resources available to them that we have today on the internet, but I suppose that's a whole post in itself.
I do seem to vaguely remember some magazines with code listings in them, but I can't remember any more details than that. What I do know is that the excercise of typing in seemingly endless lines of code and then typing "RUN" only to find that I had a "redimmed array" or other more difficult to track down bugs that were either my mistakes or typos in the mag almost killed off my desire to write code.
A while later I remember a "computer club" in high school where they had BBC Model Bs and I think there was even an old Commodore Pet which I played with, writing rudimentary text adventure games for others to play. Also at that time the teacher who ran the club introduced us to the idea of connected computers as he used a modem with an honest-to-god acoustic coupler to dial up to some "online" BBS service (I forget the name) and download games and programs etc. Cool!
It hung on in there though, through owning an Amstrad CPC464 then an Atari ST. I think I'd pretty much drifted away from the whole programming thing for a while until I got to 6th form college when I decided to do a computing A-Level, it was at this point where, using a DOS emulator on the Atari ST I would spend nights, going right into the early morning working on my course project application. This was probably the point at which I started to really get the buzz of putting in all-nighters to get projects done.
The path as a coder was finally set in motion fully when the course teacher, Tom Threlfall, whom I respected greatly, commented on my report card that I had a "natural affinity with computers and programming".
What was your first language?
Probably the same as James, various flavours of BASIC. Then at 6th form, I dabbled with some C but with only a single textbook and no other sources of information, it frightened the life out of me and I would stay clear of C for some time. After that, it was Turbo Pascal, Turbo C and Microfocus COBOL 97 as they were the mandatory course languages for the first 2 years of my degree. Then while others went to Dephi I went to Borland C++ Builder having decided that C++ would be the best career move.
What languages have you used since you started programming?
What was your first professional programming gig?
Hmm. During my "year out" before my final year at Uni, I spent some months at a measuring instrument servicing company owned by a friend's father. There I worked alone developing a new inventory management system based on Access and VBA. I managed to integrate this with their non-networked calibration software (the cal app used Access so I had no choice) I then got their machines networked and came up with some new processes to streamline their operation.
I know it sounds corny, but the fact that something I had laboured over for months, sometimes battling against both technical and human obstacles and producing a system which although not perfect, dramatically increased throughput and reduced the company costs and allowed them to provide a much more seamless service for their customers really gave me a buzz. Up until that point everything I had done was abstract, theoretical stuff. But this was a real world system, which made a real quantifiable difference.
If you knew then what you know now, would you have started programming?
This is a tricky one for me. It's kind of what my brain is hardwired to do, it's what I'm damned good at (so I've been told) and given the right project with the right people I can still get that buzz about coding that I had when I was younger. If the question was "would you advise your son to become a programmer" I would say no. Personally, I feel that although technically the industry is heading for some exciting times, IT and software development as a career in the UK has been killed off.
I think despite my reservations, I would still have to say yes, I've met some great people through this job and had some moments of pure joy when I've been part of a team that has managed to pull off the seemingly impossible just in the nick-of-time.
If there is one thing you learned along the way that you would tell new developers, what would it be?
Hmm, one thing? Well I have to say that no one major thing jumps out at me so I suppose to get away from all the other cliched suggestions and hopefully pass on something insightful I'd probably say the following:
The biggest and best thing I ever did was become a contractor, above and beyond the financial and other forms of independence what it has enabled me to do is to keep my enthusiasm for the job as fresh as possible. The very nature of what I do means that every few months or sometimes longer, I find myself at a new place with new challenges and new people.
I know many people, very, very good, highly competent coders who have basically planted themselves in a company for years and years and have basically let themselves fester and rot their careers away to the point where only redundancy can offer them any salvation.
If you stay at one place for too long, you basically end up being the "guy who knows about x" and you end up being the maintainer of legacy apps. I think the worst thing that could happen to a good coder is that they end up at a single place for so long that it's far easier to hang around and wait to retire than to go out and find new challenges. So the advice I would give to a new developer would be to keep moving, it doesn't have to be by leaving a company, but always be trying to work on new things because once you become "maintainer guy" it's very difficult to move.
How old were you when you started programming?
Like James, I'm a bit uncertain about dates with this stuff really but I know that the first computer I owned and did coding on was a Commodore Plus/4. I certainly didn't appreciate how unusual the +4 was at the time. It must have been around 1984 as they discontinued it a year later and I know it was a new machine at the time so that would make me 9-10.
I don't think that was my earliest bit of coding though as I know that at least one of my friends had a new ZX Spectrum and a girl who lived next door to me owned an Acorn Electron. I suppose my earliest memories of coding was basically boring those friends to death and getting into big fights as they wanted to play the games and all I wanted to do was sit there and type in the code listings at the back of the manuals. That will have been 82-83 so 8 -9 years old.
How did you get started in programming?
As I said above, it was all born from a fascination of the fact that rather than stick a tape in the deck and wait for 5 minutes while a game loaded then play the game. I was more interesting in the fact that you could type stuff in and make the computer do stuff that I'd told it to. Obviously, at this stage I think my childish fumblings were fairly rudimentary as, not knowing anyone else interested in programming rather than playing games, I didn't really have any other sources of information on programming available to me so I kind of had to work it all out for myself. I found myself wondering lately how someone like I was at that time would turn out if they had all the information and resources available to them that we have today on the internet, but I suppose that's a whole post in itself.
I do seem to vaguely remember some magazines with code listings in them, but I can't remember any more details than that. What I do know is that the excercise of typing in seemingly endless lines of code and then typing "RUN" only to find that I had a "redimmed array" or other more difficult to track down bugs that were either my mistakes or typos in the mag almost killed off my desire to write code.
A while later I remember a "computer club" in high school where they had BBC Model Bs and I think there was even an old Commodore Pet which I played with, writing rudimentary text adventure games for others to play. Also at that time the teacher who ran the club introduced us to the idea of connected computers as he used a modem with an honest-to-god acoustic coupler to dial up to some "online" BBS service (I forget the name) and download games and programs etc. Cool!
It hung on in there though, through owning an Amstrad CPC464 then an Atari ST. I think I'd pretty much drifted away from the whole programming thing for a while until I got to 6th form college when I decided to do a computing A-Level, it was at this point where, using a DOS emulator on the Atari ST I would spend nights, going right into the early morning working on my course project application. This was probably the point at which I started to really get the buzz of putting in all-nighters to get projects done.
The path as a coder was finally set in motion fully when the course teacher, Tom Threlfall, whom I respected greatly, commented on my report card that I had a "natural affinity with computers and programming".
What was your first language?
Probably the same as James, various flavours of BASIC. Then at 6th form, I dabbled with some C but with only a single textbook and no other sources of information, it frightened the life out of me and I would stay clear of C for some time. After that, it was Turbo Pascal, Turbo C and Microfocus COBOL 97 as they were the mandatory course languages for the first 2 years of my degree. Then while others went to Dephi I went to Borland C++ Builder having decided that C++ would be the best career move.
What languages have you used since you started programming?
- BASIC
- C
- Turbo Pascal
- Turbo C
- COBOL
- Borland C++(With OWL)
- Delphi
- C++ Builder
- MS Visual C++ (Visual Studio 97/6)
- VBA (I know!)
- C#
What was your first professional programming gig?
Hmm. During my "year out" before my final year at Uni, I spent some months at a measuring instrument servicing company owned by a friend's father. There I worked alone developing a new inventory management system based on Access and VBA. I managed to integrate this with their non-networked calibration software (the cal app used Access so I had no choice) I then got their machines networked and came up with some new processes to streamline their operation.
I know it sounds corny, but the fact that something I had laboured over for months, sometimes battling against both technical and human obstacles and producing a system which although not perfect, dramatically increased throughput and reduced the company costs and allowed them to provide a much more seamless service for their customers really gave me a buzz. Up until that point everything I had done was abstract, theoretical stuff. But this was a real world system, which made a real quantifiable difference.
If you knew then what you know now, would you have started programming?
This is a tricky one for me. It's kind of what my brain is hardwired to do, it's what I'm damned good at (so I've been told) and given the right project with the right people I can still get that buzz about coding that I had when I was younger. If the question was "would you advise your son to become a programmer" I would say no. Personally, I feel that although technically the industry is heading for some exciting times, IT and software development as a career in the UK has been killed off.
I think despite my reservations, I would still have to say yes, I've met some great people through this job and had some moments of pure joy when I've been part of a team that has managed to pull off the seemingly impossible just in the nick-of-time.
If there is one thing you learned along the way that you would tell new developers, what would it be?
Hmm, one thing? Well I have to say that no one major thing jumps out at me so I suppose to get away from all the other cliched suggestions and hopefully pass on something insightful I'd probably say the following:
The biggest and best thing I ever did was become a contractor, above and beyond the financial and other forms of independence what it has enabled me to do is to keep my enthusiasm for the job as fresh as possible. The very nature of what I do means that every few months or sometimes longer, I find myself at a new place with new challenges and new people.
I know many people, very, very good, highly competent coders who have basically planted themselves in a company for years and years and have basically let themselves fester and rot their careers away to the point where only redundancy can offer them any salvation.
If you stay at one place for too long, you basically end up being the "guy who knows about x" and you end up being the maintainer of legacy apps. I think the worst thing that could happen to a good coder is that they end up at a single place for so long that it's far easier to hang around and wait to retire than to go out and find new challenges. So the advice I would give to a new developer would be to keep moving, it doesn't have to be by leaving a company, but always be trying to work on new things because once you become "maintainer guy" it's very difficult to move.
Saturday, July 12, 2008
How I got started in Software Development
Nic tagged me from a meme started asking about how people got started in software development
So here are my answers:
How old were you when you started programming?
Timelines are a little hard to remember exactly, but pretty young. I saw my first computer an Apple II at about 8 and was instantly captivated. My elderly neighbour had an Acorn Electron which he used to let my brother and I use from time to time. We started by tapping away at type-ins from magazines about that time. Not really programming per se but that sort of knowledge must have filtered through. I guess I would have been 10 or 11.
How did you get started in programming?
An excitement for computers grew from the introduction to home computers above. My brother bought an Amstrad CPC 464 maybe a year or two later. I started coding on Locomotive Basic, doing type-ins and generally experimenting with what BASIC could do. After that I went 50/50 with my brother and we bought an Amiga 500 and I continued to hack away at Basic. My first introduction to real compiled languages was around 1991 when I bought my first PC at about 16. Rocking fast 386SX20!
What was your first language?
As outlined above, I used various versions of Basic for a start, but my first "real" language was Turbo Pascal. Can't remember the exact version but 4.0 seems to ring a bell. From there I got a copy of Turbo C++ and stuck with C for a few years until I found Delphi in about 1995. The thing to remember about those days is that there was no internet, and books and programming information were really hard to come across - where I lived anyway. You pretty much learned programming by teaching yourself and pouring over the help files. It's much easier now to get up and running. Anyway, I digress.
What languages have you used since you started programming?
In roughly chronological order:
Most of my profession career has been using Delphi for the first 5 or so years, a couple of years in COBOL and the last 5 or so years in C#, and recently the last year or so dabbling with Objective-C on the side.
What was your first professional programming gig?
I got hired to create some reservation tracking software on the Amiga 500 for a motel, but half way through the Amiga died, so I never got to finish it. I was about 17, after that I wrote some Car Dealer Management software for my brother-in-law, again never got paid, so I guess my first commercial gig was straight out of tech coding software for Gym's in VB5.
If you knew then what you know now, would you have started programming?
Yes. I can't imagine not programming. I sort of rebelled against it just after school - tried a few other jobs, but realised along the way I was best suited for software development as it was what I really wanted to do.
If there is one thing you learned along the way that you would tell new developers, what would it be?
Never stop learning. Computing evolves over time, and you should too. I have seen so many programmers who can't find work because they stuck with language or tech X and it has died and they haven't taken the time or been too stubborn to learn something new.
I know it says one thing, but I think the other bit of advice I can give new developers is this: there are NO EGOS IN SOFTWARE DEVELOPMENT. Always be open to suggestions, comments and criticism. Take a step back from your code and ask is there a better way to do this, and admit when you are wrong.
What’s the most fun you’ve ever had … programming?
Hmmm, that is an interesting question, one which I don't have an obvious answer. I've been involved with some interesting projects over the years, including writing and controlling automation gear for a Milking system, well before most people had heard about RFID. I also got to develop for the Palm OS early on in my career in the late 90's which was fun at the time - saw the first colour palm back then which we thought was ground breaking. Have been enjoying coding for the iPhone recently too.
Now, let’s tag someone else
Well, most of the people I would tag, have been tagged already or don't blog (Dan R and Tordon this means you), but Shaun Austin, who also posts here occasionally, over to you.
So here are my answers:
How old were you when you started programming?
Timelines are a little hard to remember exactly, but pretty young. I saw my first computer an Apple II at about 8 and was instantly captivated. My elderly neighbour had an Acorn Electron which he used to let my brother and I use from time to time. We started by tapping away at type-ins from magazines about that time. Not really programming per se but that sort of knowledge must have filtered through. I guess I would have been 10 or 11.
How did you get started in programming?
An excitement for computers grew from the introduction to home computers above. My brother bought an Amstrad CPC 464 maybe a year or two later. I started coding on Locomotive Basic, doing type-ins and generally experimenting with what BASIC could do. After that I went 50/50 with my brother and we bought an Amiga 500 and I continued to hack away at Basic. My first introduction to real compiled languages was around 1991 when I bought my first PC at about 16. Rocking fast 386SX20!
What was your first language?
As outlined above, I used various versions of Basic for a start, but my first "real" language was Turbo Pascal. Can't remember the exact version but 4.0 seems to ring a bell. From there I got a copy of Turbo C++ and stuck with C for a few years until I found Delphi in about 1995. The thing to remember about those days is that there was no internet, and books and programming information were really hard to come across - where I lived anyway. You pretty much learned programming by teaching yourself and pouring over the help files. It's much easier now to get up and running. Anyway, I digress.
What languages have you used since you started programming?
In roughly chronological order:
- BASIC
- Turbo Pascal
- Turbo C/C++
- Delphi
- Visual Basic
- Codewarrior C for Palm OS
- ASP Classic in VBScript
- C#
- COBOL
- Objective-C / Cocoa
Most of my profession career has been using Delphi for the first 5 or so years, a couple of years in COBOL and the last 5 or so years in C#, and recently the last year or so dabbling with Objective-C on the side.
What was your first professional programming gig?
I got hired to create some reservation tracking software on the Amiga 500 for a motel, but half way through the Amiga died, so I never got to finish it. I was about 17, after that I wrote some Car Dealer Management software for my brother-in-law, again never got paid, so I guess my first commercial gig was straight out of tech coding software for Gym's in VB5.
If you knew then what you know now, would you have started programming?
Yes. I can't imagine not programming. I sort of rebelled against it just after school - tried a few other jobs, but realised along the way I was best suited for software development as it was what I really wanted to do.
If there is one thing you learned along the way that you would tell new developers, what would it be?
Never stop learning. Computing evolves over time, and you should too. I have seen so many programmers who can't find work because they stuck with language or tech X and it has died and they haven't taken the time or been too stubborn to learn something new.
I know it says one thing, but I think the other bit of advice I can give new developers is this: there are NO EGOS IN SOFTWARE DEVELOPMENT. Always be open to suggestions, comments and criticism. Take a step back from your code and ask is there a better way to do this, and admit when you are wrong.
What’s the most fun you’ve ever had … programming?
Hmmm, that is an interesting question, one which I don't have an obvious answer. I've been involved with some interesting projects over the years, including writing and controlling automation gear for a Milking system, well before most people had heard about RFID. I also got to develop for the Palm OS early on in my career in the late 90's which was fun at the time - saw the first colour palm back then which we thought was ground breaking. Have been enjoying coding for the iPhone recently too.
Now, let’s tag someone else
Well, most of the people I would tag, have been tagged already or don't blog (Dan R and Tordon this means you), but Shaun Austin, who also posts here occasionally, over to you.
Friday, July 11, 2008
Programmers Font worth trying
Linq to SQL - Dynamic SQL vs Stored Procs
Linq to SQL (L2S) is an exciting technlogy released with Visual Studio 2008. It is more or less an Object Relational Mapper (ORM) that easily integrates Sql Server databases to your C# object models. It can either create the database from a model, or the model from a database, or you can retrofit you existing Plain Old C# Objects (POCO).
I intially rubbished it, but after revisting and doing some more reading, I have become a convert. Like most things in the software development world, it's not a magic bullet, but is a great tool to have on your belt.
The interesting thing with L2S, is that it can generate the queries for you at runtime, or you can invoke Stored Procedures.
Now, standard and historical rule of thumb states that Stored Procedures are the answer to almost any question, but with L2S this may not be the case.
For a start, parameterised stored procedures are no faster than dynamic sql. Before you flame me, read this. The other reason I beleive that L2S could be more efficient than SP's is that because it generates the queries on a per instance basis, it can retrieve only the data you need at that point in time. Take this scenario:
You have some customer data you want to retrieve. In this case you only need, custId, custName and orderStatus. You already have a stored proc that retireves all of the customer columns. In my experience, given a pool of 100 developers, at least 75 of these will just reuse the original SP and filter at the C# end. Under L2S you are already prefiltering at the C# end and only hitting the fields in SQL Server you need.
Updates are the same, L2S will only update the fields it needs to, whereas most of the time you will just use a generic update SP that will send back all the fields changed or not.
I would not rule out SP's entirely. A lot of the time it is good, having a central repository for data interactions, especially for larger applications. Also, if you have a good DBA on team, then SP's would probably be a better option.
The point is that with L2S you have options, and don't automatically rule out dynamic sql in your next application.
I intially rubbished it, but after revisting and doing some more reading, I have become a convert. Like most things in the software development world, it's not a magic bullet, but is a great tool to have on your belt.
The interesting thing with L2S, is that it can generate the queries for you at runtime, or you can invoke Stored Procedures.
Now, standard and historical rule of thumb states that Stored Procedures are the answer to almost any question, but with L2S this may not be the case.
For a start, parameterised stored procedures are no faster than dynamic sql. Before you flame me, read this. The other reason I beleive that L2S could be more efficient than SP's is that because it generates the queries on a per instance basis, it can retrieve only the data you need at that point in time. Take this scenario:
You have some customer data you want to retrieve. In this case you only need, custId, custName and orderStatus. You already have a stored proc that retireves all of the customer columns. In my experience, given a pool of 100 developers, at least 75 of these will just reuse the original SP and filter at the C# end. Under L2S you are already prefiltering at the C# end and only hitting the fields in SQL Server you need.
Updates are the same, L2S will only update the fields it needs to, whereas most of the time you will just use a generic update SP that will send back all the fields changed or not.
I would not rule out SP's entirely. A lot of the time it is good, having a central repository for data interactions, especially for larger applications. Also, if you have a good DBA on team, then SP's would probably be a better option.
The point is that with L2S you have options, and don't automatically rule out dynamic sql in your next application.
Thursday, July 10, 2008
New Zealand yells, Vodafone answers
It seems that you can get a 1Gb plan with their YouChoose 20 plan for $69.99 a month. This of course means no subsidy for the phone or $1000 but it's a start. Personally I don't talk much on the phone, so this plan would be fine for me.
Vodafone answers Q+A Here
I think they have been genuinely surprised at the negative reaction to their plans, and are trying to fight fires. Any goodwill has been lost at this stage I'm afraid. Drop the price of the phone to $350 for a plan, and say $700 on the YouChoose and it will be a start.
Vodafone answers Q+A Here
I think they have been genuinely surprised at the negative reaction to their plans, and are trying to fight fires. Any goodwill has been lost at this stage I'm afraid. Drop the price of the phone to $350 for a plan, and say $700 on the YouChoose and it will be a start.
Tuesday, July 08, 2008
VODAFONE - YOU ARE A BUNCH OF ARSEHOLES
or, How to ruin a platform and golden opportunity in one step. The pricing for the iPhone in NZ is ridiculous. Actually it's worse than that, it's daylight robbery. Nothing short of that. $559 on a TWO YEAR PLAN. $80 per month for a measily 250Mb plan, or $130 for 500Mb.
I'm glad I'm not back in NZ yet, because I would be very tempted to firebomb every Vodafone store I could find.
Everyone out there, seriously. DONT. BUY. AN IPHONE. I desperately want one, and in reality need to get one to test the apps I create, but we have to make a stand.
I'm glad I'm not back in NZ yet, because I would be very tempted to firebomb every Vodafone store I could find.
Everyone out there, seriously. DONT. BUY. AN IPHONE. I desperately want one, and in reality need to get one to test the apps I create, but we have to make a stand.
Friday, July 04, 2008
I love fixing bugs
I might be the strangest developer out there, but I love fixing bugs. Give me a list of things wrong with an app, and I will happily go through the list and fix the bugs one by one.
Most other developers I know, hate bug fixing. They grumble, moan and complain. I think the reason for this is, if their software comes back, then it is an afront to their skills as a developer. To them, a bug is like saying, "You're not as good as you think, here's the proof".
I have been in this game far too long to have an ego. Infact in my opinion, there is no place for egos in the world of software development. Egos get in the way of correct decision making. Like being under the influence of alcohol, an ego can cloud your judgement and make you do things you shouldn't.
To me a bug is as much a part of the game of software development as writing code. I get the same buzz with fixing a bug as I do when writing some gnarly code and getting it to work. Like I did today using DynamicMethods and IL to make use a faster way to get reflection info - more on that later. So don't fear bug fixing, just look at it as a problem solving exercise and start to enjoy killing those little bastards.
Most other developers I know, hate bug fixing. They grumble, moan and complain. I think the reason for this is, if their software comes back, then it is an afront to their skills as a developer. To them, a bug is like saying, "You're not as good as you think, here's the proof".
I have been in this game far too long to have an ego. Infact in my opinion, there is no place for egos in the world of software development. Egos get in the way of correct decision making. Like being under the influence of alcohol, an ego can cloud your judgement and make you do things you shouldn't.
To me a bug is as much a part of the game of software development as writing code. I get the same buzz with fixing a bug as I do when writing some gnarly code and getting it to work. Like I did today using DynamicMethods and IL to make use a faster way to get reflection info - more on that later. So don't fear bug fixing, just look at it as a problem solving exercise and start to enjoy killing those little bastards.
Subscribe to:
Posts (Atom)