So, how does one work at all with multiple programmers and no version control?
Are you creating patch files and manually merging them (like Linux used to do)?
Or are you just using a shared FTP and keeping a spreadsheet of who is using which file at any particular point?
The amount of discipline and organisation required to use either of these methods would appear to be far higher than that required to sit down for a few hours to learn a basic VCS like Subversion using a graphical tool.
The first thing I do when starting a new project is get everyone on git. If the project is far along and is using svn, I can live with that ... sort of.
The next thing I do is explain that I will be spending more time for coding upfront because I will introduce testing into the project.
I'd be interested to know how you sell git to your clients.
I have listed all the positive benefits of version control in detail to my clients and still have the idea rejected due to it being an "unnecessary complication"...
If the opportunity arises, try the following approach: Tell your client " I use some very specific tools for my work as they increase my productivity and efficiency, and as part of the work i deliver to you, i'd like to continue using those tools to deliver to you. You'll receive multiple benefits as a result, and i can name them if you wish, but don't wish to bore you with technical details"
Just try it. Not making any promises, but i think you'll have better luck if you do.
Sounds like you're either framing things wrong, or allowing certain people to make the decision when it should be yours to make ;-)
I suppose it depends on if you're trying persuade another programmer or the end customer.
The way it is framed seems to suggest that they have an existing (probably solo) developer who is used to not using version control and is frightened by the thought of adding new tools and processes.
If you introduce such a person to version control it will necessitate them spending some time to learn the system which they may be defensive about since they see it as some outsider encroaching on their territory.
In such a case the best bet might be to follow their method until you hit some situation where there is a problem or significant reduction in productivity as a result (shouldn't take long) and then demonstrate the virtues of using source control.
If on the other hand it is a non technical person who is making specific dictates about source control then that might raise another set of red flags.
Yeah - When I was providing IT support services, we used to run into a similar kind of problem all the time. In the end we realised that we were going to execute in a way where they had no option but to use the tools that we wanted. We at all cost avoided getting into a debate with internal IT staff, and as for the client gave them only one option which was to do things the way that we wanted.
Your method of using appropriate timing to introduce new tools is also what we employed and works very well.
Clients don't really care what tools I use. I just tell them what I'm going to need to provide the guarantees we both signed in the contract.
Other developers can be trickier, but it's very simple to get logical people on the path of version control if you override their changes once or twice. (usually unintentionally)
Actually, the only time I've encountered zero version control, I simply refused to start working until git was introduced into the project.
They usually want me to fix old code ... exploratory tests are really the only way to do that.
It helps that I write integration/functional tests almost exclusively (unit tests are imho useful only for algorithms, which is not what I'm usually working on).
I mean, I can either spend 20min writing a test, or 5min clicking around the app every time I change something ...
I once started at a job where their last programmer had just quit. When I started, my new boss explained to me that I had to check out files by telling him which ones I needed and we updated the production server with me emailing him the modified files.
One person works on any one file at a time. To make sure you're working on the latest version you have to remember to download the latest copy from the live server.
No I'm not joking, and yes I know how unbelievably terrible this is, but it does happen.
I worked for a small company for the last few years, and although the company was small the codebase was quite big. Despite my many attempts out of desperation, they wouldn't listen.
And the irony is, I'm not even a developer - But i knew it was needed.
The excuse cited was always that version control was impossible with languages that compile (we were on .Net) - I'm sure there's a response to that, but I didn't know what the response was, and just decided to leave in the end (amongst hundreds of other reasons)
I'm not even close to understanding why version control is impossible with compiled languages. I use version control with Java/Groovy all the time.
Version control works best on plain text documents, but you can certainly check in binary assets to version control repos. I've done it even with CVS back 12 years ago, although IIRC it was a pain - SVN was somewhat easier, git is simple (re: binary files).
Software devs not using version control should set off as many alarm bells as an accountant that tries to keep everything in their head, or doesn't keep receipts. Obviously it set off those alarms for you - it's just sad that the developers themselves didn't see it.
Yes, it's usually best to keep compiled files out of version control unless you have a specific reason for doing otherwise. Most IDEs will generate seperate src and bin folders which makes this easy enough. Just initialise the repo in the src folder and it will have no knowledge that the compiled files exist.
Phrased another way, if compiled languages were indeed incompatible with source control then that would be a reason for discounting doing serious development in compiled languages altogether.
You can also point out that git was designed specifically for use in a compiled project (the linux kernel).
You're right. It did set off alarm bells at the time, but i kept having doubts since i myself am essentially a non-developer and was unsure if perhaps my argument was weak.
Now, especially after having read your response not only am I very relieved, but am realising that I had more admiration for these developers than they deserved.
What non programming skills have you found most useful for freelancing apart from general business stuff?
For example when I have looked at freelance web programming jobs, especially for smaller companies who don't have an in house team they seem to also expect you to do the design work.
Do you have other freelancers that you sub-contract out to, do some yourself or stick to strictly scoped (programming only) projects?
I explain very clearly that I am not a designer right from the start. Again I've lost projects to digital agencies because of this, which is sad, and is another problem I'd like to solve but haven't yet.
The biggest non programming skill I have, and something that I appear to be okay at, is in face to face meetings. I've not yet walked out of one meeting where I haven't then got a job.
There's probably a few things that have helped here.
1. It's easy to demonstrate my knowledge face to face.
2. I repeat in my head "be confident" throughout the entire meeting.
How do you explain the value add that you provide or do you stick mainly to marketing yourself in terms of selling a certain skill per hour?
I ask mainly because of recent patio11 posts about emphasizing value in terms like "I can increase sign ups by x% by doing Y". This would seem to require a lot of experience and analytical/stats knowledge that a programmer might not necessarily possess however.
When I say I'm not marketing myself correctly, it's exactly this point I'm talking about.
At the moment my value add for my clients is my previous experience and my communication skills. I try to reply to emails as fast as I can, that alone sets me apart from most other freelancers.
I would love to be able to sell myself in similar terms to the way patio11 does, but as you rightly state it takes a lot of experience that I for one don't have, yet.
That being said, I've read so much information about on-line conversions techniques, have run successful (profitable) affiliate PPC campaigns, got on the front page of hacker news multiple times and done other things that maybe 99% of other people on the planet have never done.
I'm sure there's something in there that I can sell as a value add.
Also, yes, your rates are still very low, Mr. Hollis, although I suppose it depends on how many days you worked on billable projects. I would expect to see more like £40k for six months given your CV.
I took a year out of Uni to do a placement / internship. Was paid 17k for that. Left uni and went straight to work at another consultancy for 34k. Lasted 10 months before going to a smaller company that are now paying me 44k.
Not a standard salary path I admit, but it is possible to play the market if you are a good technical and business person.
Edit: All salaries are in £ (pounds).
Edit: I am based in London:
Edit: I am not in banking.
I think some people have a natural "salesmen" inside them and when it comes to salary negotiation always do well. I don't feel I'm as fortunate, but am definitely working on it. :)
From my experience that's also the very very best graduates. I don't know of anyone who's gone in at that figure.
I was earning just less than £35k two years after graduating with a 2.1 ( not sure what the equivalent is in American university terms ). And at that point was earning considerably more than anyone else I knew who graduated at the same time.
I was earning north of 60k after ~three years experience with no degree (and mediocre grades in the courses I'd taken). London, non-bank-finance. I had literally nothing spectacular on my CV. Feel free to get in touch if you need pointers.
Banking/finance does seem to be the industry which breaks the standard, especially in London.
I think I've mentioned here before, but I know a friend of a friend who supposedly earns £50k a year as a Java developer for a bank, but didn't know what a constructor was.
I work in London and from the job interviews I have been to and the people I know working in London, £35k for a graduate is very high. As others have stated, jobs in finance/banking will be paying more and might be closer to £35k.
absolutely. you should look for work on jobserve. i assume you look for php work? it pays less than js, which pays less than java, but a quick look at php contracts in london shows them between £300pd to £450pd - so as above, £40k for 6m
Again this figure assumes that I've worked 9-5 Monday to Friday for six months. This has most definitely not been the case.
As for the jobs advertised on sites like jobserve. Most of these require you to work on site as a contractor which right now isn't something I want to do. Freelancing for me is a lifestyle choice, not necessarily a financial one.
Again this might change in a few years, I'm getting older and want to start a family, and so this lifestyle might not work for me then.
I just hope that my time spent freelancing is seen as a positive on my CV in future, if indeed I do need to make that jump back into full time employment.
Just to clarify something, you state that you would not want to work on site as a contractor. Have you been working from home on these jobs? If so, have you had to go on site to secure these jobs first? What has been the on site/remote ratio?
Mostly from home, some clients I've only spoken to via email, not even a skype call. Others I've had meetings at their offices, it all depends on the client.
It's an interesting, in fact it's a fascinating way of working.
Movie Theaters (http://bit.ly/SwedyD) shows info about latest movies and movie theaters which plays them.
I am not sure what will I be able to charge clients as I don’t have professional development experience, and also living in India doesn’t help things I guess.
My big question is, will I be a fool to try freelancing at this stage and with my experience?
You have an application with more than a million downloads in the Android market. And your Juicy Fun game looks very nice. I'd say you have a fairly solid portfolio.
Do you write all these applications all by yourself?
As someone looking to try freelancing in a couple of years (only been programming for about 2 years) it is reassuring to see that you can make a decent amount of money with almost no network.
How do you find freelancing vs ordinary job?
Do you have savings for harder times?
Freelancing has helped me understand just how much my previous job was paying me that didn't show up on my paycheck. Health insurance, matching 401k contributions, and various miscellaneous other perks are actually quite valuable. So you really have to take these things into account when you set your rates.
The other big difference is that a salaried job means a regular paycheck, no matter how busy you might be in any given month. But there can be a lot of downtime between billable hours freelancing so that's another potential dent in your income.
Personally I prefer to bid a fixed price instead of an hourly rate for a project. This makes it that much more important to consider your initial estimate carefully but it also eliminates a lot of micro-accounting and haggling over how much a single hour is worth.
You also have to be careful not to take on more work than you can handle. Unlike a regular job there's no hard ceiling on how much you can make in a month but it's easy to get in over your head this way.
So far I'm really enjoying the freedom and variety of freelancing but I think a regular job is easier in a lot of ways.
The OP is in the UK so thankfully health insurance is not an issue as it is state-provided out of your taxes (although some companies do provide subsidised private healthcare, which some people might value highly).
You're very right about the other things though - pension contributions, paid sick leave etc. which freelancing doesn't cover, so it's important to compare them carefully.
Healthcare is public, yes (although a private insurance is a popular benefit) but the tax that pays for it (up to 13% I think) is deducted separately. Ie. for your employer to give you a salary of £10000, he has to pay £11300. If you're self employed, you have to pay this, so it can bite you when comparing salary and contracting rates.
Thats not correct. PAYE (Pay As You Earn) tax for employed people and the equivalent Income Tax for self-employed, along with similar rates of National Insurance for both, go into the general tax pot which pays for healthcare and other government programs. Employers advertise pay rates from which the tax is deducted, so in that way they are the same as contracting rates (the tax is deducted from both). Employers also pay a small National Insurance contribution on top, which doesn't come out of your wages.
Yes, it goes in the general tax pot, but it's still called national insurance. Although you don't have to worry about coverage, you very much still have to pay.
> Employers advertise pay rates from which the tax is deducted, so in that way they are the same as contracting rates (the tax is deducted from both).
Yes, this is correct for income tax and the employees portion.
> Employers also pay a small National Insurance contribution on top, which doesn't come out of your wages.
The problem is that it's not a small contribution on top, it's 12.8% above a low threshold. For a £35k salary, it's just under £3,800 - see http://www.listentotaxman.com/. And as a contractor, you have to pay that for yourself.
National Insurance contributions are slightly more complicated than that, but the upshot is you generally won't be paying more personally as a freelancer than as an employer.
When you're employed, both you and your employer pay NI rates. If you're self-employed, you pay £2.65 a week plus 9% on profits over about £8k, which should work out fairly similarly to the rates you pay (out of your gross salary) when employed.
Not all companies in the UK will provide paid sick leave and many will impose a strict maximum number of sick days per year which crossing means automatic disciplinary.
I do now! :) I didn't when I started, in fact I owed a considerably chunk of money to my girlfriend and so priority number one was paying her back.
In terms of the lifestyle, I love it. I honest don't feel like I've "worked" in the conventional sense since I've been back.
There are a lot of things you have to deal with which are unexpected. Finishing a project and realising you might not see the people you've worked with again ( especially if they've been great people to work with) is depressing.
There are times when it can also be lonely. I'm fairly lucky in that I'm currently living with my parents and so there's normally someone around.
In the periods between finding work ( where technically you're unemployed ) it is easy to get depressed and wonder whether you're doing the right thing. Having something else to focus on at the same time, be it a side project, or indeed finding more work is a must.
The biggest benefit is the freedom. Yes I might have work to do, but I can ( for most clients ) do it from where ever I want to do it. If I need a break from the parents, no problem I move my office to the girlfriends for a week. If I want a change of scenery, no problem I just pack my laptop up and I'm good to go!
The second benefit is the amount you learn. I now a much greater understanding of business. Tax, VAT, National insurance, invoices, marketing, chasing payments and how companies operate.
Not to mention the technical benefits of freelancing. I've taught myself backbone.js worked with node.js. Played with Symfony, Silex entered ( and come second in ) coding competitions, taught myself some AWS basics. All things I probably wouldn't have had the ability to do if I was working for someone else.
All in all the last six months have definitely been a positive experience in my life!
It's great to get into the habit of saving some of your income ... not just to hedge against slow times but to build an emergency fund and nest-egg. The popular mantra of "pay yourself first" really works (and let's you run the rest of your life by the balance of your check-book).
"If I need a break from the parents"
Make sure your rate is high enough to provide you with independence too.
Congrats Alan, can I just say I like the look of http://whensgoodforyou.co.uk - I've had that on my pile of 'implement someday' but you've actually done it. Fantastic.
Are you creating patch files and manually merging them (like Linux used to do)?
Or are you just using a shared FTP and keeping a spreadsheet of who is using which file at any particular point?
The amount of discipline and organisation required to use either of these methods would appear to be far higher than that required to sit down for a few hours to learn a basic VCS like Subversion using a graphical tool.