Recently I've moved to new project the The Job, and into the 21st century with respect to development environments - Eclipse, Subversion, Maven, But as I am learning the ropes for this new stuff, I'm finding a curious lack in what is considered state-of-the-art. There does not seem to be any way to collect a set of actions into a bundle for repeated use - no scripting.
I'll wager I could write a set of scripts that would give me all the necessary functionality that Eclipse is providing, AND be scriptable so I could build on it as I needed
Developing software in the Real World is different from all the theory. I'll attempt to explain my insights into this process, based on 25+ years in the industry in a number of different companies.
Saturday, April 11, 2015
Tuesday, March 31, 2015
Giving a little Notice back
Not too much going on that I am able to post about at the moment, but I wanted to share out a little notice - I found out that Dustin's blog mentioned my post on developer passion and its pitfalls not long after I wrote it. SO let's give a hearty "Hello!" to Dustin,everyone!
Sunday, July 27, 2014
Third Time's The Charm?
So the Big G contacted me recently and it seems I look good enough for another round of interviews. Maybe this time I will be deemed worthy?
============
update, much, much later
I was not deemed worthy.....:(
============
update, much, much later
I was not deemed worthy.....:(
Saturday, May 31, 2014
Surviving the Transistion to an Agile Methodology, Part 2
So your organization has decided to go Agile, and everyone is onboard, and you've started holding Scrum meetings, and coding in sprints, and everything's going to be just fine, right?
For Sale: One bridge in Brooklyn
One of the biggest problems is the tendency from members of management to decide that "just this once" you need to circumvent the Agile rules, and (add work to the sprint in the middle|work without a Product Owner|pull your one expert on Technology X "for just a few days")
There is usually one manager who continually subverts the plan. S/he will never say they are not doing Agile, but they will never really get with the program.
On the flip side is the manager who is perfectly fine with doing Agile development, but wants the metrics to keep improving, since they will be measured by the metrics, even if the metric is explicitly not a performance metric (like team velocity). So this manager will be gaming your estimates so that their team looks like it is always improving.
Another pitfall is the gradual falling away of the sprint planning rules - that the team should make the estimates, that the stories need to be broken up into tasks, and that tasks should be self-assigned. You gradually see managers trying to re-assert their traditional roles and hand out work based on their own ideas of effort.
Finally, the big Agile-slayer might show up - field support. Nobody knows how log it will take to handle field issues, because the level of information can vary greatly. Often you have customers that have political agendas keeping them from giving you good info, or sometime it's just really clueless support people.
For Sale: One bridge in Brooklyn
One of the biggest problems is the tendency from members of management to decide that "just this once" you need to circumvent the Agile rules, and (add work to the sprint in the middle|work without a Product Owner|pull your one expert on Technology X "for just a few days")
There is usually one manager who continually subverts the plan. S/he will never say they are not doing Agile, but they will never really get with the program.
On the flip side is the manager who is perfectly fine with doing Agile development, but wants the metrics to keep improving, since they will be measured by the metrics, even if the metric is explicitly not a performance metric (like team velocity). So this manager will be gaming your estimates so that their team looks like it is always improving.
Another pitfall is the gradual falling away of the sprint planning rules - that the team should make the estimates, that the stories need to be broken up into tasks, and that tasks should be self-assigned. You gradually see managers trying to re-assert their traditional roles and hand out work based on their own ideas of effort.
Finally, the big Agile-slayer might show up - field support. Nobody knows how log it will take to handle field issues, because the level of information can vary greatly. Often you have customers that have political agendas keeping them from giving you good info, or sometime it's just really clueless support people.
Saturday, December 07, 2013
Surviving a transition to Agile methodology - Part One, Defining the Problem
Greetings all,
There are tons of books, courses, blog posts, and probably YouTube videos about how to convert your organization to Agile, but I don't recall seeing many (any?) that talk about how to deal with the pitfalls of such a transition and how to survive them.
The most common issue is that many conversions to Agile are driven from below, as the developers decide that they need to stop doing things the Bad Old Way and get on this Agile train, and this means that they have to convince Upper Management to convert.
This typically fails.
If your Upper Management does not buy into Agile, they will drag their wingtip-shod feet at every point, question every Agile tenet, and resist.
However, this is not my topic - I'm assuming that your Upper Management has either agreed to convert the organisation, or perhaps is insisting that the organization convert - one of the C-levels probably read about Agile in the trade press and wants to get ahead of this new thing.
While this might seem good, it is still dangerous. The parts of the organization that deal with customers will have to sell the concept to the customers, and that leads into a swamp of problems - the customer doesn't want to allocate resources to work daily/weekly on the scrums; the customer does not want to agree to anything less than a full solution in X months, bound up in a bulletproof contract with penalties for late delivery; and so on.
Then you find that most of the non-development part of the organization doesn't want to spend all of its time thinking about the stuff currently being made, and would rather move on to the next thing, so you can't get the answers you need, or they want to keep using the old waterfall process documentation ("Just write the whole thing out, and you can modify it if you run into anything that changes")
Next in line is typically the old chesnut that Agile will let the organization develop code faster. Management sees the promise of a faster acceptable product as meaning faster coding, ignoring the parts that mention writing test code, spike solutions, refactoring, and all the rest of the things that mean you will not be writing anything faster from a code perspective.
Moving along, we come to the Misuse of Metrics, in which Upper Management starts to use the team metrics (velocity, number of user stories completed, etc) as part of the performance review process for the developers. This is usually fatally toxic to Agile adoption, in that the developers naturally become more concerned with saving their jobs by tweaking their teams' numbers to look good.
And tagging along at the caboose of this trainwreck is the expectation that it will go smoothly from the start. Upper Management, after a sprint or two will realize that often the forward progress is slower than before, so they will begin to "help" by changing things up - reorganizing teams, taking personal interest in the prioritizing of User Stories and tasks, etc.
Now, it's fairly common knowledge in the Agile world that organizations can have pockets of resistance to the conversion, but much of the remedies are on the order of "Give your CTO a stern look and tell him that's not how Agile works", which is hardly helpful at either changing the organization or staying gainfully employed.
In part two, I'll explain some of the things a good Software Ninja can do to survive the whole mess.
There are tons of books, courses, blog posts, and probably YouTube videos about how to convert your organization to Agile, but I don't recall seeing many (any?) that talk about how to deal with the pitfalls of such a transition and how to survive them.
The most common issue is that many conversions to Agile are driven from below, as the developers decide that they need to stop doing things the Bad Old Way and get on this Agile train, and this means that they have to convince Upper Management to convert.
This typically fails.
If your Upper Management does not buy into Agile, they will drag their wingtip-shod feet at every point, question every Agile tenet, and resist.
However, this is not my topic - I'm assuming that your Upper Management has either agreed to convert the organisation, or perhaps is insisting that the organization convert - one of the C-levels probably read about Agile in the trade press and wants to get ahead of this new thing.
While this might seem good, it is still dangerous. The parts of the organization that deal with customers will have to sell the concept to the customers, and that leads into a swamp of problems - the customer doesn't want to allocate resources to work daily/weekly on the scrums; the customer does not want to agree to anything less than a full solution in X months, bound up in a bulletproof contract with penalties for late delivery; and so on.
Then you find that most of the non-development part of the organization doesn't want to spend all of its time thinking about the stuff currently being made, and would rather move on to the next thing, so you can't get the answers you need, or they want to keep using the old waterfall process documentation ("Just write the whole thing out, and you can modify it if you run into anything that changes")
Next in line is typically the old chesnut that Agile will let the organization develop code faster. Management sees the promise of a faster acceptable product as meaning faster coding, ignoring the parts that mention writing test code, spike solutions, refactoring, and all the rest of the things that mean you will not be writing anything faster from a code perspective.
Moving along, we come to the Misuse of Metrics, in which Upper Management starts to use the team metrics (velocity, number of user stories completed, etc) as part of the performance review process for the developers. This is usually fatally toxic to Agile adoption, in that the developers naturally become more concerned with saving their jobs by tweaking their teams' numbers to look good.
And tagging along at the caboose of this trainwreck is the expectation that it will go smoothly from the start. Upper Management, after a sprint or two will realize that often the forward progress is slower than before, so they will begin to "help" by changing things up - reorganizing teams, taking personal interest in the prioritizing of User Stories and tasks, etc.
Now, it's fairly common knowledge in the Agile world that organizations can have pockets of resistance to the conversion, but much of the remedies are on the order of "Give your CTO a stern look and tell him that's not how Agile works", which is hardly helpful at either changing the organization or staying gainfully employed.
In part two, I'll explain some of the things a good Software Ninja can do to survive the whole mess.
Wednesday, October 09, 2013
Faster, Prototype! Kill! Kill!
Recently at The Job, the upper management types have been talking about Agile as a way for us to get to market faster. The problem is that they keep addressing it towards the developers, implying that they will be finishing development faster under Agile.
However, one of the big things about Agile is that developers are often writing more test code, and spending time writing spike solutions, which means that there is more code overall to write.
Sure, the focus in Agile on automated testing removes the later debugging hassles, but those are not the "Concept to Deployment" bugs that are getting pre-emptively squashed, but the field issues. We developers still need to write the fully functional code, and refactor it. Agile limits the amount of code needed per release, but requires more releases to reach the desired feature set of a full product
So we're facing an executive team that thinks Agile will cut development time in some grand way, while we face all the usual headaches of transitioning to Agile, as well as the actual development time.
However, one of the big things about Agile is that developers are often writing more test code, and spending time writing spike solutions, which means that there is more code overall to write.
Sure, the focus in Agile on automated testing removes the later debugging hassles, but those are not the "Concept to Deployment" bugs that are getting pre-emptively squashed, but the field issues. We developers still need to write the fully functional code, and refactor it. Agile limits the amount of code needed per release, but requires more releases to reach the desired feature set of a full product
So we're facing an executive team that thinks Agile will cut development time in some grand way, while we face all the usual headaches of transitioning to Agile, as well as the actual development time.
Wednesday, October 02, 2013
The Paradox of the Human Condition
I'm going to wax a bit philosophical here, in contrast to my usual technocentric rants, so bear with me.
I was struck with a realization yesterday that the two traits that allow us humans to do such great things are the same traits that allow us to do such horrible things.
The first trait is the ability to sublimate our personal needs to that of a grater cause. This leads us to do such things as give up a comfortable life to travel to an undeveloped land and help the local people improve their condition; to fight against injustice in the face of personal attacks; to jump onto a grenade to save our comrades. We can identify with a cause larger than our own lives, and work towards furthering that cause at the expense of our own well-being.
But is also leads us to harm those who do not share our history; to pilot planes into buildings; to attempt to eliminate entire peoples because they are different. It is the adoption of an greater goal that removes our sense of kinship to the rest of humanity.
Conversely, the second trait is that selfishness that drives us to excel at collecting wealth that can be used to do great good. The billionaires that fund disease-eradication efforts, or publicize tragedies in far-off countries; the driven individuals that want to build rockets, or non-polluting cars - they expect to get rich from it, along the way.
But this leads to the seduction of power. Once one has enough money, one becomes accustomed to using that money to influence the rest of the world, and then that distorts the political process in the local governments - either directly through bribery and outright force, or via indirect means - funding 'policy groups' and industry councils that present an individual's view as a public opinion or social good. Soon any deviation of society from the personal preferences is decried as a bad thing.
So we must learn to walk the middle way, somehow, avoiding the extremes of selflessness and of selfishness, and tempering our personal view with that of society's.
I was struck with a realization yesterday that the two traits that allow us humans to do such great things are the same traits that allow us to do such horrible things.
The first trait is the ability to sublimate our personal needs to that of a grater cause. This leads us to do such things as give up a comfortable life to travel to an undeveloped land and help the local people improve their condition; to fight against injustice in the face of personal attacks; to jump onto a grenade to save our comrades. We can identify with a cause larger than our own lives, and work towards furthering that cause at the expense of our own well-being.
But is also leads us to harm those who do not share our history; to pilot planes into buildings; to attempt to eliminate entire peoples because they are different. It is the adoption of an greater goal that removes our sense of kinship to the rest of humanity.
Conversely, the second trait is that selfishness that drives us to excel at collecting wealth that can be used to do great good. The billionaires that fund disease-eradication efforts, or publicize tragedies in far-off countries; the driven individuals that want to build rockets, or non-polluting cars - they expect to get rich from it, along the way.
But this leads to the seduction of power. Once one has enough money, one becomes accustomed to using that money to influence the rest of the world, and then that distorts the political process in the local governments - either directly through bribery and outright force, or via indirect means - funding 'policy groups' and industry councils that present an individual's view as a public opinion or social good. Soon any deviation of society from the personal preferences is decried as a bad thing.
So we must learn to walk the middle way, somehow, avoiding the extremes of selflessness and of selfishness, and tempering our personal view with that of society's.
Subscribe to:
Posts (Atom)