Is the gap between "good developers" and "bad developers" getting wider?
At one end of the scale we have people like my former colleague Glenn ( http://vanderburg.org/Blog ) who are doing such esoteric software stuff that I am not even sure what he is talking about anymore... things like "domain specific languages" i.e. to solve the problem, first write a new programming language optimised for that problem domain... okay...
and at the other end we have the vendor who coded this:
Select column1 from table1 where userid=varLoginUser
Select column2 from table1 where userid=varLoginUser
Select column3 from table1 where userid=varLoginUser
Select column4 from table1 where userid=varLoginUser
Select column5 from table1 where userid=varLoginUser
which took 140ms to run when "Select column1, column2, column3, column4, column5 from table1 where userid=varLoginUser" took 15ms...
Sure, rubbish code has always been with us but i just have the sense that the gap is getting wider not narrower... that despite the fact that we have a wealth of coding standards, patterns and practices at our finger tips (just Google it) and that languages and development environments are more powerful than ever that power is delivering more dross not less.
What do you all think?
Is the gap between "good developers" and "bad developers" getting wider?
Somehow I have been conned into doing a Charity Cycle from Buck Palace to Windsor Castle... a bum-numbing 45mi (72Kms)!
The standard “blurb” is below but if you could click on the link and donate something, however small, that would be good, as the Prince’s Trust is a great cause (despite Prince Charles being loopier than a rollercoaster... oh well!).
I'm taking part in this year's Palace to Palace bike ride and cycling 45 miles from Buckingham Palace to Windsor Castle to raise money for The Prince's Trust.
Please support me by visiting my fundraising page and making a donation. Click on the link below:
thanks & all the best,
So what else does Operations do?
Well, there is a whole organisation run by the UK govermnent to help answer that question!
ITIL, or the IT Infrastructure Library, is a library of best practice information that basically tells you everything you need to do to run an IT department. Similarly developers have development methodologies such as RAD, JAD, Agile/XP, and Project Managers have PM methodologies such as Prince 2, PMBok etc to cover off their areas in more specific detail.
ITIL breaks it down into 7 key areas:
- Service Support - deals with the actual provision of IT services such as the service (help) desk, incident management, problem management, release management etc
- Service Delivery - deals with ensuring that you can continue to DELIVER the service support functions with things like contigency planning, capacity management, service levels etc
- The Business Perspective - helps to ensure that the IT function is aligned with the organisation's business strategy and that how to best integrate CHANGE within IT and the Business together.
- ICT Infrastructure Management - handles all the plumbing like networks, servers, workstations and how to manage all of these elements across the enterprise
- Application Management - covers software development (aka the "SDLC" Software Development Lifecycle), software testing and quality assurance etc
- Security Management - provides best practice on how to do all of the above whilst ensuring the confidentiality, integrity and availability of your organisation's information assets. Given that 90% of the value of modern companies are "intangible" assets (e.g. patents, customer data, brands etc) the security aspect cannot be neglected!
- Planning to Implement Service Management - provides guidance on how to implement all the elements of ITIL service management.
So what does that all mean to the lay person reading this blog?
Well, consider your PC sitting on your desk at work.
Someone had to work out what was suitable PC hardware for all the different job roles within your organisation - some users may have faster processors and more memory for crunching big spreadsheets or bigger screens for doing graphic design work. Some people might have a different keyboard or mouse for ergonomic reasons.
Similarly, your PC's runs lots of different applications, including the operating system, your office productivity software (word processor, spreadsheet, presentation software), not to mention systems software such as anti-virus, personal firewalls, software asset management agents etc.
Someone had to work out what software was best to use, and how to configure it and distribute it to your workstation!
Your workstation is almost certainly connected via a network (wired? or wireless?) to a server... what type of network are you running, what operating system does your server run, how much space is on the server (and how do we know when space is running out!), how many user accounts are there, how do users get added/removed, how many printers are connected to the network, who puts the toner cartridges in them etc etc.
Somewhere on your network you almost certainly have financial systems (such as Oracle Financials), customer management systems, HR & payroll systems, intranets, email, web publishing, document management, asset management, online training, etc.
And more importantly, what's the help desk number you ring when it all stops working (and how many minutes is acceptable to keep you in a queue when you do ring?)
All of these systems need to be designed, implemented and then managed on a daily basis, 24 hours a day, 7 days a week, 365 days a year (just because you get evenings and weekends off doesn't mean the computers do... especially the web systems that external clients access constantly!).
And then there are all the other less techie things like "how much should we spend in each IT area?", "When is the right time to upgrade systems?", "which vendor should I use e.g. Dell, HP, IBM?", "should we outsource or offshore?", "should we build it ourselves or buy it off the shelf?".
These are the sorts of issues that your friendly neighbourhood Operations Manager has to deal with on a daily basis... and you wonder why we look so stressed all the time :-)
Since the title of my blog is "TheOpsMgr" I thought I should at least define what an "Ops Mgr" (Operations Manager) actually IS (or at least in terms of my current job).
Because I work for a small-ish online publishing company (about 200 people, with about 35 people in the Technology team) the Operations role is best defined as by a negative - "Operations is everything the Developers and the Project Managers DON'T do...".
Most people have a fairly instinctive grasp of what Developers and Project Managers do - developers "develop stuff" (that becomes the new websites in our case) and PM's "manage stuff" (the projects that the developers work on).
But what about the rest of the job of managing the day to day operations of the websites (or any other IT system)?
The Operations function that most users would be familiar with is the "help desk" (or service desk as it tends to be called these days) but this is only the visible tip of the Operations function - the other nine tenths of the iceberg is submerged where the users rarely see (or for the more cynical, rarely care unless it goes wrong!).
More on this later...