Profilo di BryanBryan Hinton's spaceFotoBlogElenchi Strumenti Guida

Blog


21/07/2006

Tables in Excel

It is a common joke at Intel about how Excel is used to run the company - in my experience that often doesn’t seem to be very far from the truth. I have been evaluating Office 2007 recently and have found a lot to like about it. The new UI was expecially nice and it seemed in my limited use to make it “easier” to do things. The only downside was that while I love the enhancements to Outlook - the thing isn’t stable enough to use for long periods of time - at least for me.

Okay - back to Excel - in 2007 - they are introducing the concept of tables in Excel - this link has a great screenshot tutorial/overview of the capability. Basically the idea is that when building formulas and calculated columns you no longer have to use cell references, but you can use columns names outlined in a header row. So if you have two columns named Out_Date and PrevOut_Date - you could add a third column called Cycletime which took Out_Date - PrevOut_Date as the formula - no A3, B7, etc.. References.

 

Technorati tags:
14/07/2006

Intel’s Conroe processor blasts AMD

 Working for Intel has been a lesson in humility the past year or so especially as AMD has really kicked sand in our face. It was great to read Tom’s Hardware ‘s review of the soon to be released Conroe processor - http://www.tomshardware.com/2006/07/14/core2_duo_knocks_out_athlon_64/ . Now I realize the fight is far from over and hope that our chip designers (I develop software for the manufacturing side of the house) continue to crank sweet new processors out. But the bet the company made over the last two years to move to the Core architecture is starting to pay off. You combine that with a much needed repurposing (and resizing) and hopefully we’ll be better positioned to be the tech leader going forward.

 

 

Technorati tags: , ,
05/07/2006

Team Dynamics – the weak weed out the strong?

David Anderson has an interesting post about a book he recently read that suggests “In flat structures with highly empowered, self-organizing teams (Farson calls these highly participative teams) the team members will tend to attack and weed out the strongest (or stronger) member(s), often the leader. In hierarchical structures, with command and control structures, the members will tend to attack and weed out the weaker members.” David then makes some conclusions about what this would mean if it were true for Agile development teams (which tend to be more flat than hierarchical). He suggests that if the book’s author is correct than team membership would be better served to be grouped according to technical ability (with the groups being based on like ability) rather than spreading the weaker technical members around.

At Intel I am not sure how I see this playing a part – our culture is hierarchical by nature and so even in the Agile teams command and control structures exist. Also it becomes a little more difficult because you always have to factor in politics into team dynamics at companies as large as Intel. Weaker technical people may be much better at playing the politics and that muddies things because in a lot of cases weaker technical skills can be masked by playing a good political game.

 

Technorati tags:
27/06/2006

Version Control Strategy Recommendations for Team Foundation Server

Roy gives his opinion on how to handle versioning in the context of Microsoft’s new Team Foundation Server Source Control system. He describes when and how to use labeling, branching, etc… in the context of a versioning strategy.

A Simple Version Control Strategy Using Team System

 

12/06/2006

Incorporating Agile Methods - Tech Ed 2006

Peter Provost and Alan Ridlehoover from the MS P&P team talked Agile and how to introduce it while sharing their experiences in doing that at MS. The stuff in italics are some thoughts of mine pertaining to my projects related to the stuff Peter and Alan were presenting on. The notes are kind of rough - but stuff in Tech Ed 2006 comes pretty fast and so in order to keep up I am going to pass it along as fast as I realistically can.

  • Communication is King - the most important part of that is to Listen - Listen, Listen, Listen

  • Real-Time code reviews/Pair Programming

  • Get help when you need it - if you are blocked for 15 minutes on a problem (and even less if you are pair programming and blocked) go ask someone - get some help - communicate - a corollary (I think that is the right word) to that is that you have to be available to members on your team to provide help when needed

  • Peter Provost and Alan Ridlehoover talked about how they evolved their work at MS. They started out by booking a conference room for 3 months. After the admins complained and said they couldn’t do that - they each took a day and booked the room, after the admins complained again they worked through management and got things changed. They gave up their offices at MS (everyone at MS gets an Office) to get a team room where they could work

  • This made me wonder if we as a distributed team should push management to lets us get together quarterly. Perhaps two meetings a year with customers and customer focused (like our F2F in May) and then two a year that are dev focused where we get together and code together (and in this case perhaps we go away from home all of us and get the team together - so that we are at dinner together, etc… - strengthening our team bonds, etc…)

  • Give the team time to gel - don’t expect miracles in the 1st and 2nd iterations

  • Encourage continuous education

  • Avoid knowledge silos - the joke around this was that this was the “Hit by the bus” now called “Winning the lottery” (more politically correct) concept.

  • Get a coach or mentor - a coach will help keep you honest - gives you a different and perhaps more objective perspective.

    • We currently don’t have a coach - perhaps we should use the consulting money that potentially we might have to bring a coach in to help us?

  • Encourage questions - a team should question each other - for understanding and to make sure that we are doing the right things - it is okay to challenge people (although you should make sure you do this logically - I have worked with people that challenged everything and you quickly learned that they were just being difficult and rarely did their challenging help anything).

    • I would go even farther and say that if no one says anything they either don’t care, didn’t understand, weren’t listening, etc…

  • Work on the most important things first

  • Stack rank your work by its importance to the customer

  • Reevaluate the stack and the plan frequently

  • If a developer gives you an estimate longer than 3 days he is lying - he doesn’t know. Provost said that he was a terrible estimator even as long as he has been doing software development

  • Don’t, Don’t, Don’t Gold Plate - Don’t do what the customer hasn’t asked for

  • TDD, Refactoring, continuous integration, and emergent design

  • When you need to explain the refactoring cost to a user - don’t use refactoring with the customers - use soft technical language like - it will take me a couple of days to make room for it and a couple of days to add the feature

  • Came back to pair programming - code reviews, code reviews, code reviews

  • Reward individuals for behaviors that are team focused - how do we do this?? Represents a culture shift and while not a core Agile practice - as Agile methods proliferates this may come as a natural shift as the org values the team over the individual

  • Don’t encourage rock stars - encourage team players (we want everyone to be rock stars) - no cowboy coders

  • Remove roadblocks to success - that can mean a lot of things - he emphasized removing those who won’t play as a team. The slide initially said - fire those who won’t play along.

  • People work on features, they don’t own them - everyone does

  • Stick with it there will be hard - Constructive Confrontation is key - we need to be open and honest

     

    Technorati tags: , ,

  • 10/05/2006

    People are the key to software success

    I was led to this article by an internal mailing list at Intel that centered around Agile Development. Agile programming, particularly XP, is gaining popularity within Intel and many teams have started to find greater success using it rather than the other methodologies that had been practiced. I am sure everyone has their own explanation for why that might be so - and many of them may try to explain it by saying that the process is light enough to allow them to do their job. Others will focus on the increased emphasis on communication as the driver for success. Cockburn points to communication as a major driver, but for a different reason.

    Inconsistency

    Cockburn identifies the inherent inconsistency that we have as humans as being a major failure point with projects. He then identifies frequent communication as the factor in driving out that inconsistency.

    Being good at communicating and looking around counter inconsistency, leading to the prediction that methodologies can make good use of low-precision artifacts whose gaps are covered by personal communication. Project histories also support this prediction, subject to the normalization of an adequately skilled staff, including management.

    So the frequent and close proximity communication that XP promotes drives out the inconsistency in the project participants allowing for great success. In the article he talks about his struggle in trying to explain the success of projects and that he finally concluded that process was subordinate to people in defining the reason for success of a given project.

     

    Technorati tags: ,
    27/04/2006

    A view from a Team Foundation Server Dev team member on Requirements Management

    I thought this was an interesting thread on the Team Foundation Server forums about how MS does Requirements Management at least from a TFS perspective.

    http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=363629&SiteID=1

     

    Technorati tags: ,
    17/02/2006

    My Skype experience

    It is my daughter’s second birthday - I am in Tel Aviv and she is in Arizona. I check out of my hotel in Tel Aviv in the morning which is still the middle of her night, at 3pm in the afternoon I turn in the cell phone that work had let me borrow (still only 6 am AZ time). After leaving work not too much later I make a mad dash to Jerusalem to make a couple of last minute purchases that I hadn’t been able to get done previously. After losing and then finding my rental car keys in Jerusalem (another story in itself) I drive back to Ben Gurion airport to get there early enough to get through Israeli security (which in my mind is much more efficient and not as much a hassle as US security although I have heard others have differing opinions on that). So I am sitting in an airport 7,500 miles away (that is how many miles I get on my Continental OnePass account anyway) without a really good way to call and wish her Happy Birthday.

     

    Technorati tags:
    16/02/2006

    Trust in Project Management

    David Anderson has some great points on Project management - I am a regular reader of his blog - recently he posted about trust on project teams. While he deals with software projects I believe that the principle holds true whatever domain you might be in. In a recent blog he commented that in analyzing how agile a project was his one essential question was “How much trust is there in the room?” His contention is that “Documentation, contracts, reviews, memos, other non-verbal communication, verifications and validations are a reflection on the amount of trust involved

    I agree completely - years ago contracts and documents took the form of mere handshakes because people trusted each other enough that documentation wasn’t necessary. Obviously times have changed - you sign your life away anytime you do anything. Communication (and documentation is not communication) is key to forming trusting relationships. If you have worked on a project or in a group or even simply as pairs where a high amount of trust existed it is a very satisfying and rewarding experience and usually fairly productive!

     

    Technorati tags: ,
    31/01/2006

    The myth of cost when comparing Oracle Explain Plans

    The cost that shows up in Oracle Explain Plans has long been a source of confusion for developers. I can’t count how many times I have heard experience Oracle developers comparing the cost of Explain Plans between different queries.
    Now let me define different queries because I think that is often part of the confusion. Say you write a query to go get Lot History from Intel’s factory databases. As you go to write the query you realize that there are two ways that you could write it - perhaps the different ways involve different tables or different where clauses. If you then go get the Explain Plan for those queries they will show you the access paths that the database is taking to retrieve the data you want. Even though you are wanting to get the same data (so in that case the queries could be considered the same because they yield the same result set) the queries are different and as such you cannot use the cost information in the two Explain Plans to compare which query is more efficient or faster. Tom Kyte describes in detail why this is in a response on AskTom found here.

     

    Technorati tags: ,
    27/10/2005

    Oracle and Indexes - Some tips

    Tom Kyte is one of the best in the business when it come to Oracle and is the Tom that many people rely on at Ask Tom. Here is a link to an article that has him talking about some common myths about Oracle indexing. I get questions on these exact things often. I even have people who have worked with Oracle for years that try to tell me that some of these myths are true. I don’t always have time to provide them examples to back up my point so having Tom out there to come in and settle the dispute is nice.

    Here is a quick summary of his tips

    • Nulls are not completely stored in B*Tree indexes - (Null, Null) in one row is not the same as (Null, Null) in another row - by definition Null is not equal to another null. When you aggregate it thought they group together. Also - if you have an index that is based on all NULLABLE columns and you do a query looking where one or more of the columns are null - the index cannot be used
    • Views are indexed by indexing the base tables the view is based off of - the optimizer will break the view down and develop an execution plan based on the base tables
    • Unindexed foreign keys are the biggest cause of deadlocks that Tom sees - so index them!
    • 6 most common reasons your index is not being used - nothing earth-shatteringly new here, but great things to remember
    • Index space IS reused (always) and can be automatically reclaimed (under certain conditions)
    • The column with the highest selectivity (most distinct values) need not be the first column in the index - from a space perspective they use the same space - the most important thing to consider most of the time is HOW you query the table - without understanding the most common access methods - effectively indexing a table is difficult. Also he points out that indexes that go from least selective to most are more compressible, save space, and reduce I/O making the case if you are using Index Key compression to go that route for building your indexes.

     

    Technorati tags: ,
    05/10/2005

    Software Project Estimation

    Great article by David Anderson on project estimation - he is an agile guy so he tends to a be a little harsh on the traditional PLC estimating techniques - he talks about alternative methods to estimating based on Agile and FDD (Feature-Driven Development). My experience with project estimation is that most of the teams (myself included) don’t know how to do it really well and so we guess and then work ourselves to death because we always estimate optimistically (or get surprised by the extreme amount of process that gets in the way and slows us down). David speaks to the waste of effort from a customer perspective and a developer perspective in estimating effort because the end result is numbers that don’t mean a whole lot. On the other hand he says working the requirements and breaking them down into pieces that gives us a work detail as well as helps us in understanding more completely what the customer is asking for. So focus on analyzing the requirements and outputing information surrounding them rather than focusing on some number that your are supposed to give.
    There is one thing from what David says that I don’t understand in relation to Agile (specifically XP) development efforts - don’t you buy definition when you go through planning games - identify how many tickets (or whatever you call them) are available and how much each use case (feature) defined by the users will cost in tickets? To me that seems to be the same form of estimating that David is denouncing.
    I drill down into David’s previous post on agile estimating as well as the comments (which you should also read because it has some good stuff in it as well) - he expounds a little more that his estimating should be more lightweight and should deal in terms of number of bugs that someone can do in a specific window (what he calls velocity I think) with an accounting for variation in velocity. I suppose that maybe this speaks back to the goal of the FDD model and XP to break things down in pieces and interate quickly over the smaller pieces of work thus supporting a lighter weight estimating cycle. I am certainly not an expert on any of this - but I am learning more and more all the time which hopefully helps me long term - one of the challenges is changing the culture (or adjusting to use a less negative term!) to be more software oriented and leveraging the software development knowledge and best practices within the teams that I work on.

    Why Estimates are Muda

     

    03/10/2005

    Comparison of CVS versus Source Code Control in Team Foundation Server

    I am cleaning out my blog folder after getting quite behind in all the things I have been wanting to post - Here is some good stuff on the new source code system in VS2005 (Team System version) - I might add that MS now has two solutions - VSS and TFVC (Team Foundation Version Control)
    Comparison by one of the designers/developers of TFVC between TFVC and CVS - CVS and TFVC Comparison

     

     

    Technorati tags: , ,
    15/08/2005

    Anatomy of a Leader vs. Anatomy of Manager

    Great article - they aren’t the same thing even though it seems like a lot of organizations treat them as if they are.

    Getting leadership and management in your organization

     

    Technorati tags: ,
    08/08/2005

    Foray into Table functions - dynamically creating rows

     

    Today I ran into the challenge of having to dynamically create rows in a query - I wanted to take a set of rows and based on certain values in the each row turn it into one or more rows. So in a result set of 3 rows I might want to end up with 53 rows. In my scenario my result set was configuration parameters that describe how to set up my buckets. For example my config table might have 3 rows

    Row#         Duration                  Bucket_size
    1               168                        4
    2               80                          8
    3               24                         24

    Row 1 I want to become 42 rows representing 42 buckets of 4 hours each - row 2 I want to become 10 rows representing 8 hours each and row 3 becomes 1 row representing 24 hours. Now I racked my brain trying to figure out how I might do this using connect by or some other logic, but couldn’t come up with a way - that method depends on you having all the rows you need and just linking to them by certain criteria - I needed to create rows based on the content of the specific row. I knew that I could always take the parameter data (shown above) and create the rows in temp tables or something like that using PL/SQL - but that required a processing routine and the storage of the data and I really wanted to be able to do this in one SQL statement. That is when I turned to Tom Kyte’s books - We have largely been an 8.1.7.x shop for a long time and are just beginning to move systems to 10g. I am fortunate enough to be able to work on a project using 10g and all the new features so I had some more options at my disposal to solve the problem.

    Table functions were the answer - if you haven’t seen or heard of table functions I recommend looking at the Oracle docs or even better Tom’s books which explain them much better than I ever could - I will however give you an example of how I used it.

    First I created the Table function (Tom’s examples were key in helping me come up with this)
    TYPE refcur_vt IS REF CURSOR RETURN P_PARAMETERLIST%ROWTYPE;
    TYPE virtual_table_type is table of number;
    FUNCTION createVirtualTable(p_ParamTable refcur_vt) return virtual_table_type PIPELINED;

    FUNCTION createVirtualTable(p_ParamTable refcur_vt) return virtual_table_type PIPELINED is
    l_vt_type virtual_table_type := virtual_table_type();
    in_rec p_ParamTable%ROWTYPE;
    num_of_buckets number;
    bucket_counter number := 0;
    BEGIN
    Loop
    fetch p_ParamTable into in_rec;
    exit when p_ParamTable%NOTFOUND;
    num_of_buckets := round(to_number(in_rec.prm_level1_value)/to_number(in_rec.parameter_value),0);
    for i in 1..num_of_buckets loop
    l_vt_type.extend();
    l_vt_type(l_vt_type.count) := bucket_counter + (i * to_number(in_rec.parameter_value));
    PIPE ROW(l_vt_type(l_vt_type.count));
    end loop;
    bucket_counter := bucket_counter + (num_of_buckets * to_number(in_rec.parameter_value));
    end loop;
    close p_ParamTable;
    return;
    END createVirtualTable;

    What happens here is you pass into the function a result set representing the parameter table (those three rows listed above) - I fetch the row - based on two values in that row I figure out how many rows I need to create and iterate through - creating them and adding them to the collection - note that the function is pipelined so I return NULL at the end of the function, but as I generate the new values for the collection I send them back to the client (effectively returning them) using the PIPE ROW call - The way I think of that to make sense out of it is it is like reading one of the rows from disk and returning it back to the client while you go get the next row (or in our case generate the next row). So that is the logic to create the rows - now lets see how we use that function in a SQL statement to get what we want.

    select
    sysdate + (to_number((lag(column_value,1,0) over (order by to_number(column_value))))/24) as Begin_Date,
    sysdate + (to_number(column_value)/24) as End_Date,
    to_number(column_value) - to_number((lag(column_value,1,0) over (order by to_number(column_value)))) as Bucket_Size,
    rownum as Bucket_Number from
    table(mypackage.createVirtualTable(
    cursor(select * from parameter_table where parameter_name = 'My Parameters' order by to_number(param_order))
    ));

    The Table function part can be found in this section - table(mypackage.createVirtualTable(
    cursor(select * from parameter_table where parameter_name = ‘My Parameters’ order by to_number(param_order))
    ))
    . It shows up in the from clause - you put table({stuff}) and inside that you put the function you are calling - in our case the function takes a cursor as a variable so we use Cursor({sql statement}) to grab a cursor of the stuff we need (in this case the parameter table) and pass it to the function - the return is a set of rows with a single column with the heading column_value. In the query above I do some manipulation to take the buckets after I have created and then put a start_date and end_date associated with them to give the bins a date value. Below I copy both the simple output (just the single column output from the table function) and then the output from the query above with the data values.

    COLUMN_VALUE
    4
    8
    12
    16
    20
    24
    28
    32
    36
    40
    44
    48
    52
    56
    60
    64
    68
    72
    76
    80
    84
    88
    92
    96
    100
    104
    108
    112
    116
    120
    124
    128
    132
    136
    140
    144
    148
    152
    156
    160
    164
    168
    176
    184
    192
    200
    208
    216
    224
    232
    240
    248
    272
    BEGIN_DATE	END_DATE	BUCKET_SIZE	BUCKET_NUMBER
    09-Aug-2005 1:17:53	09-Aug-2005 5:17:53	4	1
    09-Aug-2005 5:17:53	09-Aug-2005 9:17:53	4	2
    09-Aug-2005 9:17:53	09-Aug-2005 13:17:53	4	3
    09-Aug-2005 13:17:53	09-Aug-2005 17:17:53	4	4
    09-Aug-2005 17:17:53	09-Aug-2005 21:17:53	4	5
    09-Aug-2005 21:17:53	10-Aug-2005 1:17:53	4	6
    10-Aug-2005 1:17:53	10-Aug-2005 5:17:53	4	7
    10-Aug-2005 5:17:53	10-Aug-2005 9:17:53	4	8
    10-Aug-2005 9:17:53	10-Aug-2005 13:17:53	4	9
    10-Aug-2005 13:17:53	10-Aug-2005 17:17:53	4	10
    10-Aug-2005 17:17:53	10-Aug-2005 21:17:53	4	11
    10-Aug-2005 21:17:53	11-Aug-2005 1:17:53	4	12
    11-Aug-2005 1:17:53	11-Aug-2005 5:17:53	4	13
    11-Aug-2005 5:17:53	11-Aug-2005 9:17:53	4	14
    11-Aug-2005 9:17:53	11-Aug-2005 13:17:53	4	15
    11-Aug-2005 13:17:53	11-Aug-2005 17:17:53	4	16
    11-Aug-2005 17:17:53	11-Aug-2005 21:17:53	4	17
    11-Aug-2005 21:17:53	12-Aug-2005 1:17:53	4	18
    12-Aug-2005 1:17:53	12-Aug-2005 5:17:53	4	19
    12-Aug-2005 5:17:53	12-Aug-2005 9:17:53	4	20
    12-Aug-2005 9:17:53	12-Aug-2005 13:17:53	4	21
    12-Aug-2005 13:17:53	12-Aug-2005 17:17:53	4	22
    12-Aug-2005 17:17:53	12-Aug-2005 21:17:53	4	23
    12-Aug-2005 21:17:53	13-Aug-2005 1:17:53	4	24
    13-Aug-2005 1:17:53	13-Aug-2005 5:17:53	4	25
    13-Aug-2005 5:17:53	13-Aug-2005 9:17:53	4	26
    13-Aug-2005 9:17:53	13-Aug-2005 13:17:53	4	27
    13-Aug-2005 13:17:53	13-Aug-2005 17:17:53	4	28
    13-Aug-2005 17:17:53	13-Aug-2005 21:17:53	4	29
    13-Aug-2005 21:17:53	14-Aug-2005 1:17:53	4	30
    14-Aug-2005 1:17:53	14-Aug-2005 5:17:53	4	31
    14-Aug-2005 5:17:53	14-Aug-2005 9:17:53	4	32
    14-Aug-2005 9:17:53	14-Aug-2005 13:17:53	4	33
    14-Aug-2005 13:17:53	14-Aug-2005 17:17:53	4	34
    14-Aug-2005 17:17:53	14-Aug-2005 21:17:53	4	35
    14-Aug-2005 21:17:53	15-Aug-2005 1:17:53	4	36
    15-Aug-2005 1:17:53	15-Aug-2005 5:17:53	4	37
    15-Aug-2005 5:17:53	15-Aug-2005 9:17:53	4	38
    15-Aug-2005 9:17:53	15-Aug-2005 13:17:53	4	39
    15-Aug-2005 13:17:53	15-Aug-2005 17:17:53	4	40
    15-Aug-2005 17:17:53	15-Aug-2005 21:17:53	4	41
    15-Aug-2005 21:17:53	16-Aug-2005 1:17:53	4	42
    16-Aug-2005 1:17:53	16-Aug-2005 9:17:53	8	43
    16-Aug-2005 9:17:53	16-Aug-2005 17:17:53	8	44
    16-Aug-2005 17:17:53	17-Aug-2005 1:17:53	8	45
    17-Aug-2005 1:17:53	17-Aug-2005 9:17:53	8	46
    17-Aug-2005 9:17:53	17-Aug-2005 17:17:53	8	47
    17-Aug-2005 17:17:53	18-Aug-2005 1:17:53	8	48
    18-Aug-2005 1:17:53	18-Aug-2005 9:17:53	8	49
    18-Aug-2005 9:17:53	18-Aug-2005 17:17:53	8	50
    18-Aug-2005 17:17:53	19-Aug-2005 1:17:53	8	51
    19-Aug-2005 1:17:53	19-Aug-2005 9:17:53	8	52
    19-Aug-2005 9:17:53	20-Aug-2005 9:17:53	24	53
     
    Technorati tags: , ,
    22/07/2005

    Software Development - Back where we started?

    Great post by Tom Kyte (well-known Oracle guru and author of Ask Tom) - No Silver Bullet - he reflects back on an article that he read in 1987 that there is no Silver Bullet in software development and made some predictions about the future. I was 10 at the time that was written and more interested in GI Joes - my family had likely purchased our first computer maybe a year before or so (Tandy 1000 SX - 8 Mhz - 640k (that was with the more memory my Dad had purchased) - and two 5 1/4 floppy drives - no HDD). Almost 20 years later the author was amazingly accurate. Despite all of the advances today in languages, IDEs, standards, etc… software development is still a very inexact science.
    A brand new freeway is being built not too far from my house and I often marvel at how much detail goes into such efforts - same with buildings (the BOB in Phx for example) - tons of intricacies - you have the rough infrastructure involved as well as the smallest details. I can see a lot of similarities with building software. Builders seem to have the same challenges as software engineers - being on time is a challenge. Thankfully software engineers for the most part don’t have to deal with weather variability - I don’t know how those builders get anything done when it is 110+ here in the Valley of the Sun!
    One note from Tom’s post and the article that I thought was particularly insightful

    My first proposal is that each software organization must determine and proclaim that great designers are as important to its success as great managers are, and that they can be expected to be similarly nurtured and rewarded. Not only salary, but the perquisites of recognition office size, furnishings, personal technical equipment, travel funds, staff support must be fully equivalent.

    Great designers, not coders. People who can put it all together. I think he got that right (but we still arent there yet).

    There were some great comments on this as well - I can’t say AMEN to this loud enough!!

     

    Technorati tags:
    11/06/2005

    On my way home

    Well - it is 6:15 am Orlando time and I am sitting in the airport connected to a data jack because there are no other internet options - so far so good - but 50 Kbps is not the optimal option. Some would argue that was the speed/reliability of the TechEd wireless network during the week though!!! :) The last couple of days were spent kicking the tires if you will of the various technologies. By Friday afternoon my brain was fried. The Designer tools in VS 2005 are really cool - the fact that they integrate back into the code so well was great. Many of the labs had a variety of problems though that sometimes made it difficult to get through it. One example is the C# lab I did - it covered the new enhancements like Generics, Partial classes, iterators - since syntax changed from Beta 1 to Beta 2 - the solutions for the labs themselves wouldn’t even compile - it was cool though to be able to go to the people working on the language and ask why this didn’t work and have them explain the reasons for the changes between Beta 1 and Beta 2. The yield keyword is an example of that - you use it with iterators to return values to the caller as you loop through the list - it used to be yield , but is now yield return . I expected Generics to be cool and they were - I had used them slightly in C++ (I think they are named differently in that language…can’t remember).
    Now the challenge is taking this all back to my managers and selling them that we need to start using this stuff. I can definitely see some distinct advantages from moving this direction. Encourages better planning and designing by allowing those steps to move you towards your end goal of delivering the product. The Team System has a lot of nice pieces to support team collaboration if we buy into it.
    But for the next few days I will be in San Diego trying to relax and refresh and stay away from computer talk as much as possible. I am sure that my twin brother and I will stray down that path once of twice, but doing it on the beach while relaxing doesn’t sound so bad. After that it is up to Scout Camp for a couple of days and then on to Utah for my little brother’s wedding. I am not sure how all this counts as vacation because it sounds busy enough to me.
    Until then - Bryan

     

    Technorati tags:
    09/06/2005

    My wife replies

    I have been telling my wife all week to check out my blog and she finally did - and came up with a pretty snappy response. She is definitely a good sport allowing me to get my technology fix especially since today (it is now past midnight) is our anniversary - six wonderful years - she is the best!!!!!! I love her so much and can’t wait to see her on Saturday!!!
    Here is what she had to say - ain’t she awesome!!!
    I was just sitting here all alone thinking, “hey, I really need a handyman, yard man, protector, babysitter, provider of income, counselor, companion, confidant….oh, yeah, and a best friend!” Wait, that’s you Bryan Hinton and where are you? Eating 15,600 ice cream bars in Florida!
    Hope you enjoy every minute….cuz there’s a LOT for you to do when you get home!!!! :)
    Love ya,
    Noel
    (wife, cook, daycare provider, accountant, housekeeper, and best friend!)

    07/06/2005

    Where have all the testers gone….

    In my organization today everybody does everything - if we started using Visual Studio Team System today we would all have to use each piece because everyone does everything. I am not quite sure why either. Every class I take, conference I go to, my whole Computer Science education talked about division of labor and establishing roles. Industry as a whole didn’t really start to be productive until what… the good old assembly line - focused roles so that people could become good at what they did and increase output and quality. Some might argue that roles end up limiting growth, etc… I would disagree. Roles give people a choice - they can choose to become very proficient in their core competency and if they choose they can stay there and provide great value to the company on a continual basis or at some point they could under guidance by their manager, find a mentor in a role that they want to grow into, learn and work towards that goal. This also would promote and facilitate appropriate career growth. At least that is my take on it -
    Now if I could only find an architect, or a business analyst, or a project manager, or a developer, or a tester, or an implementer, or a support rep - oh wait that is me…

    01/06/2005

    Random Thoughts on Planning

    Planning
    Never was something more key to an organization’s success! Some would argue that there has been successes out there that just sort of happened. I was talking to my Dad the other day as we were driving up to a family wedding and he gave me a real life example of a company whose success just kind of happened - sadly a few years later their demise also just kind of happened. Could it have been avoided…. Yeah probably - that leads me to the two types of planning that I see.
    Now as I drone on I should state that I have no educational expertise in this area - I am not an MBA - I am a techno-geek with a Computer Science degree. I enjoy getting lost in an afternoon of coding. Even when I try though - you can’t hide from planning - My two types of planning aren’t unique, Strategic and Tactical
    StrategicThis may be better named Vision. Many projects were well managed tactically, but because of poor vision of where they fit or what was actually needed the project end up somewhere it didn’t want to be. A frustrating thing I have run into from time to time is situations in which the owner of the project punts on where they want to take the project and drops the decision down to customers. Customer input is critical of course, but unless the owner can sense the pulse of the customers, understand the business, and have vision for where true benefit can be added they will be left to manage priorities that shift based on the current fires facing their customers. It is common for the application vision to fly in the face of the issues that seem to be most important at the moment. A cousin of mine had a quote in her home that said “Don’t sacrifice what you want most for what you think you want now!”. So true for Strategic Planning. As a last point there is obviously a balance here between dealing with the real, current issues and spending time on the things that will take you where you think you need to be.
    TacticalDetails, Details, Details - timelines, resources, progress, status, and crisis management. I have gained greater appreciation lately for the need for someone dedicated in this area. I previously felt like these people didn’t add much in the way of value, but somehow I ended up in a job that is much more that type of stuff than programming. So maybe to justify what I do I see more value in it. The role of tactically managing and planning a project is interesting - you have to be technical enough to be able to dabble in the details and provide direction, but not so lost in the dungeon of details that you can’t get your hands around all that is going on. Being honest about the challenges being faced and the realities of schedules is so refreshing - too bad that seems to be so rare. Saying No seems to be impossible to do
    Planning is also key to my work happiness. There is nothing more frustrating than getting yanked around from fire to fire to fire or being overloaded because everything seems to be absolutely urgent. I get so tired of it - my brains at times feels like scrambled eggs because of it.

     

    Technorati tags: