Knowledge of the system – worst reason to promote someone?
January 14, 2012 | Leave a comment
One of the reasons a lot of developers get promoted at work is due to “knowledge of the system”. They know how everything works for a project, company or similar and therefore can perform tasks that brand new developers can’t.
On the face of it this seems to suggest that giving promotions to developers with this experience would seem prudent. I have begun to witness instances where this may well not be the case. As someone who has been promoted in the past where experience is a factor I can see both sides.
Any problems with this approach seem to begin when someone is seemingly able to “make things happen” so they get recognition. Tasks that some developers take a day to achieve can be done in a few minutes by an old hand. Is this person doing the task as well as the other guy and is the system such a mess that only people who have experience know the way through the maze. In an ideal world everyone should easily be able to make most things happen. Maybe a system shouldn’t need one person who knows it all, maybe it should be more manageable. If a system has been well built and the code well maintained, in theory any competent developer should be able to work on a system. The first few weeks of any large system are not going to be the most productive but 6 months in this should be the case.
When you get a situation that a system has been constructed badly and is hard to maintain, the person who has been their a long time has had to have had a part to play, in some cases “blame”. Therefore to promote them is to possibly en-grain more bad practices and reduce chances of the system improving. Thus it could be the worst reason to promote someone?
The counter argument to this occurs when someone has been with a company for a long time and has been under immense pressure to get something out of the door from management and has had to make compromises to the standards they would have liked to maintain. Maybe they have now acquired the trust that is needed for them to argue for changes and be listened to. Maybe any new changes need a deep knowledge of the system in order to know the gotchas that will mean a restructure/refactor/etc is possible.
Thorough knowledge of the system also requires a very good memory, a skill not everyone has and is why you will meet some developers who have been with a company for a long time and don’t know anywhere near as much about a system. Often people who know systems have put themselves forwards to achieve tasks as well, another good feature.
I guess this post is going to provide little to no benefit to developers judging their peers but I hope someone who is having to make similar decisions from outside the development team, about a developer, might consider things a little more carefully.
Training Junior Developers
December 9, 2011 | Leave a comment
More recently I have been thinking through the best way I can work to get Junior Developer’s trained up and useful members of a development team. Especially with outsourcing as a consideration. I am not sure there is any silver bullet as experience really does tell. However trust, time and exposure to senior developers is important.
Firstly I think understanding what the junior wants to do is key. If they want to be a front end developer then focus on that rather than database skills. Round pegs don’t fit square holes and the learning will be much slower. It is still important that they value the surrounding skills but a little knowledge is enough, especially when they are starting out. You can’t learn everything.
The next most important thing for me is getting them to learn how to take responsibility for themselves. If a developer knows they sorts of things they are expected to be able to achieve, how they should get help and how they should get things checked, they have the skills to produce. Once a junior can produce something of value, they will get a boost in confidence. From here encouraging them to manage their own learning is key.
Senior developers and managers should definitely suggest things for a junior to learn but really a junior should manage this themselves. A mentor is a good option as it provides a focus for a junior developer to work with. A manager or mentor might seek agreement on what is going to be learnt, in order to be able to test progress but the junior has to want it. In truth study out of work is pretty key. Study might mean working on sample projects, open source projects or even paid side work.
In London we are very lucky to have a range of places hosting great conferences, talking shops, presentations etc. Get Junior developers along to these. They will show the range of skills and passion out there. Hopefully it will help light the fire.
I still believe we need to have some form of structure to help Junior Developers get a foothold in the industry but the usual people management techniques apply nonetheless.
The challenge is very acute in outsourcing. I think the only way it can work is if the Junior developer is colocated with good and open Senior Developers. As much as I have tried to motivate from across the internet, it is really all about the people you interact with on a daily basis that can make it happen. Basically I haven’t got this to work yet!
Tech companies getting vocal about school Comp Sci
November 28, 2011 | Leave a comment
Today there has been a lot of publicity about the announcement from many tech companies, including Google and Microsoft, about the poor teaching of Computer Science. The BBC reported it as such: http://bbc.in/txcz7a.
I really agree with the premise of this article, in that we don’t really teach the right things to our kids. I have long argued that teaching touch typing would be one useful starting point: http://www.artificialgold.com/blog/2010/11/16/touch-typing-cure-for-saving-front-line-service-in-government/
However teaching programming is an over simplified concept. I think teaching databases and some simple scripting is appropriate. However I would think that for most young students, they simply don’t have the appetite for programming whilst at school, even during their A levels. Getting Maths, English and Science is much more important. I didn’t really learn programming until I was 22, I had good exposure to it before then, part of my Maths Degree, including a very useful placement year as part of my degree but still didn’t get the fire.
I think that people do realistically need to be taught on the job, with better structures in place. There is definitely no harm in refining the school courses but I think the real problem exists with the path into work.
An accountant, lawyer, engineer, HR professional, purchasing professional, doctor etc all have a fully planned route into the profession. Programming is less defined and subsequently less suited to this structure but as a career is currently at the other extreme; read a book on your own and try and find a job. In fairness there are some graduate schemes and certain companies that really look to do this right. However I have been to quite a few talks by noted people in the London Tech Scene and none ever think about this as a key issue. Indeed at one talk by Fred George of Forward, on Programmer Anarchy, it was clear that a new developer would really struggle to survive. The definition of a junior developer was someone contributing to user groups or open source projects. They just wanted to leach the best programmers from other companies (and it would be tempting for most!).
I think we should consider formalising graduate progression into development but it wont be easy. A good start could easily be the great and the good at least spending more time thinking about this.
The reason it is not happening is that training someone up takes time and can be a distraction from the day job. However not doing it means you are going to have to do a lot more yourself. There are even things in the way we code that could make things easier. Actually adopting simpler coding architectures could be one (technical point I agree).
Overall, great to hear this initiative but I think we need more focus on progression into developer careers too. It is not an easy proposition though.
Continuous Delivery, key to success?
November 13, 2011 | Leave a comment
I was asked to reply to Paul Stack’s post here: http://www.paulstack.co.uk/blog/post/is-implementing-continuous-delivery-the-key-to-success.aspx
His question was whether Continuous Delivery is the key to success of an development project. It was an interesting point from a small business or project start-up perspective.
Read my comment on the post for a full opinion but basically I think all these types of approaches are important and start-ups should trust their technical experts when they advise investment in these things. However getting a something live is the key, and is really the main driver for Continuous Delivery anyway.
My beliefs on this sort of thing are pretty much driven by the Lean Principles. Getting, things used as early as possible is the key. Continuous Delivery can really help but for true start-ups it might not be that useful as the first thing to do, but I would suggest you keep it in mind and instill it as soon as possible.
Continuous Delivery
September 24, 2011 | Leave a comment
Recently we have been taking much more interest in Continuous Delivery. Working on early stage start up projects continuous delivery is pretty much assumed. You put code up the server all the time and don’t really think about it. Getting new features and early SEO traffic is more important than stability.If you don’t have a lot of traffic you can live with the downtime for a release and even be prepared to release a bug you didn’t find in testing. In these environments I often find releasing code up to live can happen at least once a day.
Not having much traffic at the start makes this risk pretty low. However you can’t really carry on like this forever. As soon as you have even a steady stream of traffic to your site you will want to have much higher up time and lower risk of releasing bugs. This is when Continuous Delivery becomes more of a challenge. I have recently read “Continuous Delivery” by David Farley and Jez Humble (http://amzn.to/qSrrgo).
This is a detailed book with many different topics but the key ones I think are most pertinent for small businesses are automated testing and continuous integration. Most projects now use Source Control but Continuous Integration is still not adopted widely enough.
Automated testing is, on the face of it, expensive for a business owner to sign off. But they really do stop the releasing of bugs being so easy and mean that you can more confidently put code up to live faster. As we mainly work on web projects, acceptance tests for us are all about automating the browser. We can get our main features properly tested and then run automatic scripts against them. This allows our developers to run these when they make changes to certain areas of the site and for our them to be run all the time against our code base. As soon as one fails, all the developers must stop to find out what has gone wrong.
Automated testing is hard to do right but once you have the right techniques and infrastructure in place it does get a lot easier. I have also found it is making me design pages in a cleaner way, if a page is becoming hard to test then it is probably doing too much.
Continuous Integration is more the software development manager’s dream. I can get our developers all working together and then be instantly aware when one of them has made a breaking change. I get an email and my dashboard goes red. Again sponsors of projects don’t get all that excited about this sort of thing and it can be a hard sell but any informed project sponsor should insist on this being in place. If code that wont build is committed then I know, if a unit test fails (suggesting something is coded wrongly) then I know, if automation tests are failing (suggesting the site functionality is broken or changed) I know. I can also add other checks in such as code cleanliness and so forth. It means I don’t have to micro manage my developers and also they know they need to work in such a way to get work to live.
There are many other areas of continuous delivery of interest but I am not going to cover them all now. I can only leave you with a recommendation to read the book!
Specflow for Restaurant Sale project
September 18, 2011 | Leave a comment
I have been interested in Web Automation for BDD in Web projects for some time. I have had exposure to Cucumber using Capybara in one .NET project but in truth I always found that running a team of .NET developers on a Ruby code project quite tough.
Recently I have been doing more with Specflow and Watin, specifically on our www.restaurant-sale.co.uk project. The benefit over Cucumber being that through our team we have very little Ruby experience. Indeed we even investigated recruiting .NET developers with Ruby exposure, that proved very difficult! With Specflow and Watin our existing developers have been able to get up to speed much easier.
Also as all our developers are familiar with .NET code, I have been able to enforce all the SOLID principles and comfortably get refactoring working well. Our normal Code Review process has enforced this. Notionally Specflow also seems to run faster than Cucumber with Caybara.
One other annoying thing about Caybara is the fact that you need to run older versions of Firefox. Watin works with IE and other browsers.
I am not saying that this approach is the best for all teams, more that if you have a team wanting to get up to speed with Web Automation for your acceptance tests, getting a .NET team to learn this concept AND Ruby at once is a tough ride.
Realising this is making me wonder about revisiting MSBuild rather than Rake scripts for my builds. That is another decision though!! I may just use IronRuby and .NET precompiled components.
One thing I will say though is that Web Automation is now more and more accessible to all teams, there are many options so get doing it!
Restaurant-sale.co.uk going live
June 15, 2011 | Leave a comment
Our latest project www.restaurant-sale.co.uk is now going live! It is a vertical based Business Sales website. It focusses on restaurant sales.
Restaurant Sales are a tough business for business agents and getting in front of a dedicated restaurant buying audience is key.
Artificial Gold are the sole developer and a minority shareholder in this project. The main shareholder is Neil Pearce, a business sales agent.
Together, hopefully, the business will be a success! We are the technical partner so I am happy to detail our technical details:
- MVC3 Website
- SOA structure
- Fluent NHibernate Data Access
- Unit Tested, Integration Tested (using Sql Lite)
- .NET 4.0
- Structure Map DI
- Rake scripts
- TeamCity
Future plans for the development suite include
- Cucumber Automated Testing
- Google Location Mapping and JQuery API
We plan to use location based searching for v1.1 of the site. We are aware of the sensitivity of exact locations for businesses for sale in terms of employee security and business reputation so we are going to address this concept with real sensitivity. We went down the route of a property type location search at first and this just didn’t fit the business. So we have ripped it out for v1 and after our research will attack it in v1.1
Any thoughts? Let us know!
Andrew
PS: Buying a domain name is so hard and took us ages to agree on, what are your thoughts!!
Recruiting overseas for specific skills
January 17, 2011 | Leave a comment
I am in another recruiting phase for a particular website. It has been a mixed journey so far. For technical types this will be a ASP.NET MVC website using TDD or BDD.
For cost reasons collocating in the UK would not have been feasible, I still think this is the most ideal solution if you have enough money. Therefore I have been trying to outsource the development.
I had started working with a company in the Philippines but their interest in the project waned when the necessity for TDD became a blocker, they had tried to recruit experienced TDD of BDD developers but seemed to have very little success. The next conversation was about training their existing developers but that proved too tough to pull off.
Since then I have advertised the job on odesk and had floods of applicants! This was not that surprising but showed the level of talent out there. The next challenge is working out the best value developer on the site to do the job, do you get what you pay for on here? At the moment I have some good candidates.
Another route I have taken is try to and find suitable candidates through linkedin.com. At the moment I have not had much response but I have been able to target the exact skills in certain of their groups. Recruiters have long targeted the groups I have been a member of and I will see how that route goes.
One other successful route I have taken, more for the design elements of the project, is my existing network. I am having the design done by an old employee in India. This is great as I know I can trust the level of work, however he is not able to work full time for me.
I guess this is not of much specific interest but hopefully will be of some interest to anyone looking to explore the different technical recruitment avenues available.
Do Developers really need to go to University
November 26, 2010 | Leave a comment
At the moment we seem to have student protests cropping up at the high price of tuition fees for the next batch of students. Whilst I understand their frustrations, I was in the first year of students who had to put up with the tuition fees when they replaced grants I think we have too many people going to University.
I entirely agree that we should be training our young to be as enabled as possible but often people go to University and end up doing the wrong sorts of things for the job market or have unrealistic goals.
Software development is so fluid and dynamic that on the job training is really a fantastic solution for so many people. Alongside a very tough, rigorous chartered software development Chartered qualification they would be up to speed very quickly. The Chartered qualification (like with ACA and CIMA for accountants) would need to encourage things like a grounding in some of the things you learn on Computer Science degrees in University.
All of this can be done by examination. Also their may need to be streams for different programming languages but the fundamentals are most important. Once they have a sound grounding in that it should be alright to move along.
Of course programming does not sit still so refreshers and possibly even some sort of annual “latest skills” assessment might be required.
It would be tough to get it going but it does seem it would help create a bigger pool of IT Talent and also give young aspirational IT professionals an option other than University.
Touch typing cure for saving front line service in Government?
November 16, 2010 | 1 Comment
This latest idea has been a gripe of mine for a while. Why don’t all businesses encourage, insentivise and ensure efficiency through making sure all staff can TOUCH TYPE!!!
It is surely the most obvious thing you can make any desk based (or at least staff regularly using keyboards) member of staff do to get them working faster. If you could type 20%? 30%? 50% faster? How would that save you money. Surely if someone is touch typing rather than plod typing (my abusive term for slow typists!!) they would be so much more efficient. Say they type 20% of their day. 20% of 20% is 4%. If even 25% of your staff were typing then you could make your company 1% more efficient.
1% may not sound like a lot but that is off the top end and will repeat each year and hopefully will increase as people get better.
Another factor is that people who can touch type are much more likely to learn other time saving skills on the computer. I will probably go on about keyboard shortcut in another post (rant!!).
Manchester Police have announced massive cuts today. If all their officers could process documents 25% faster this would be negated in one small way (if they only had to fill out reports once rather than up to 6+ times it would help more but that is another matter).
I am tempted to get people in Essex doing this with lessons by inviting people to bring their laptops to a room where I sit in front and literally put paper over their hands and tell them to type. After all that is the way I learnt.
I also raised this with 2 Headteachers in secondary schools over the summer. I had a false opinion that every kid could touch type now as they have grown up with computers, wrong. If they could type twice as fast, how much more homework could they do and therefore learn?
It took me 5 minutes to write this blog post with edits. How long would it take someone bad at typing?
@stack72 @stack72 @paulsharrington : Pretty bad here too. Only just got back from dinner! >>
2012/02/05
@stack72 I'll allow this: "about.400" ;) You'll have to check your own lingo whilst I'm in SF...Well done mate needs sharing about the team >>
2012/02/03
2012/02/03
RT @unclebobmartin: A non-developer's perspective on the criteria for hiring developers: http://t.co/6ZhLUezr >>
2012/01/20
Free hosting from Amazon Cloud: http://t.co/0BcMZNyR >>
2012/01/17
Is knowledge of the system the worst reason to promote someone?: http://t.co/td1byHKW >>
2012/01/14
Latest blog post on training junior developers : http://t.co/7tLrbVBl >>
2011/12/30
Register article on why APIs are so crucial : http://t.co/TPRI0R2d >>
2011/12/30
@stack72 : My network is pretty poor but hope I get you an answer!! This account is the company one albeit only I, of the 4 of us, who tweet >>
2011/12/09
RT @stack72: has anyone who uses psake ever managed to get all the unit tests results in a format that teamcity can report on? >> Not us!! >>
2011/12/09


