Thursday, February 24, 2011
Do you feel that your development group too reliant on Outlook? Have you reached a point that you have to search your email for pertinent information when asked? What are you using?
I realized things had gotten out of hand a couple weeks ago over a weekend. I was at my in-laws house (in the country, no PC/laptop, no internet connection; and I get an email on my phone that I needed to reply to, but I couldn't send without deleting items from my inbox/sent items/etc. Now mind you, I have rules set up to move stuff into folders, and files more than a month old are automatically moved to the PST; but generally don't manually move items to a PST until I have had a chance to 'work' the item. Please don't bother mocking my process, it's just the way I work. That being said, it was a frustrating process of 'I need all this information, what can I afford to lose'.
I work on an International project (think lots of customers), and conversations in 9 or 10 different directions about 10-20 different things are not abnormal for a given day. I have found myself looking data up in Outlook because that's where it is. I think that I have reached the point now, where I don't feel that Outlook is up to the task of organizing the data that it contains.
When you have that many emails (200 or so a day), information seems to get lost at times, and I find that Outlook's search capabilities are lacking. Additionally, I find that any sort of organizational 'system' of sorting emails that can cover multiple topics is a lost cause. But at the same time, the old process of taking the information that I got from emails and moving it into another 'notes' type of program has proved to be too time consuming. Anyone out there have some better type of system? (Comments about the capacity of my brain, and it's ability to recall information not needed.)
Monday, May 24, 2010
"A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called requirements churn), and that unpredicted challenges cannot be easily addressed in a traditional predictive or planned manner. As such, Scrum adopts an empirical approach—accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team’s ability to deliver quickly and respond to emerging requirements."
I have been working in a SCRUM environment, with 4-6 week cycles, for about 6 months now and have been very pleased with the impact that it has had on my life (regular work hours, seeing my family, etc). But was looking up the criteria for a 'Certified Scrum Master' and came across the SCRUM definition on Wikipedia, and started reading the actual definition. My first thought was "hey, this development methodology actually allows you to deal with what happens in the real world (i.e. customers changing requirements); but is this "selling out" on solid requirements?
I understand that this works in the environment that I am currently working in, where there are deep pockets paying the bills, and also making the descisions on what requirements to change / impliment; but is this a recepie for success in smaller or simply more budget concious environments? Having the ability to be completely flexible when the client wants the product changed. The more I think about it, the more I feel that SCRUM development may be better suited for an environment where a team is taking over a project from another team (bringing some outside development in-house or something of that ilk), as opposed to ground up development.
What do you think?
Thursday, May 20, 2010
Was working on a windows form app (something I haven't done in a while), adding threading and logging so that it would work a little more smoothly and have a record of who did what. I was just about at the point where I was going to check it into source control when I noticed that the Output window was showing "A first chance exception of type 'System.InvalidCastException' occurred in mscorlib.dll", so I googled it. In reading some threads about the error, I came across the following comment and it got me thinking:
"In addition, while they should be avoided if possible, exceptions are a quite legitimate part of program execution. It's their going unhandled that is a real issue, because that means crashy, crashy."
How do you normally use exception handling? I feel that exceptions are intended to handle errors in code (in my experience generally related to bad data making its way into the system). Now don't get me wrong, I understand that exceptions happen and should be dealt with, but I feel that they are a "last resort" to keep a program from crashing, but should never be a way to pass data or continue logical processing that could be handled in standard code flow. I mention this, because I have seen it done.
What do you think?
Thursday, March 25, 2010
Thoughts on streamlining the process of getting someone up to speed when they join a project as a new hire; or as is common in some companies, switch from one project to another: Has anyone heard of a strategy (including emphasis towards consistent, ongoing documentation) that would bring a user up to speed quickly? Has there been any thought given to focused documentation, specific to a role within a project? Or formalized mentoring within a project, that goes beyond a “system walkthrough”?
Often it's overlooked what time is wasted when a senior level worker is brought on board. It's assumed that they will know the right questions to ask. They are the type of people that normally learn quickly, and in their own ways, so let them get by with what's out there.
Having a user without a computer will cost you measurable worker hours, making it an easy target to shoot at (and rightly so). Not getting them up to speed as quickly as possible is an efficiency issue, that seems to have become an industry standard as an accepted loss. Given the complexity of the projects within most companies, and the frequency with which users are shifted from one project to another based on need; I think this is an area that bears consideration.
Tuesday, March 23, 2010
I have to deal with all types of code that was written by people from different organizations, different countries, using different languages, obviously standards are different across these sources. One of the biggest headaches that I ahve come across is how people differ in the formatting of their SQL statements, specifically stored procs. When you regularly get over 500 lines in a sproc, if the code is not formatted correctly, you can get lost trying to figure out where one nested BEGIN begins, and another nested END ends. One of my co-workers showed me this site today that does a pretty damn good job of making sense of that type of code: http://www.dpriver.com/pp/sqlformat.htm.
This is a free website that offers a box to enter your nasty code, and click "Format SQL" and have it clean it for you. I am sure that there are situations where this may not work, but given the code that I have been working with recently, it does a really good job. There is a pay version with more options, including VS add-in, desktop component (with quickkeys to clean text in programs like notepad), the ability to output in HTML, and other stuff. Heck, I watched a demo where the purchased version will take formatted SQL code and turn it into a generic Stringbuilder object embedded in a formatted.
Yes, this seems like a shameless plug, but no, I have no relation/knowledge of anyone involved in the development of this product, it just seems useful. Either way, I recommend checking out the free version.
Friday, February 26, 2010
Is it just me, or does being a developer suck at times. That Lumburg-esque speech about having to work a weekend kills me. If it weren't for the fact that so much of what I do coule be outsourced without a second thought, I would say that programmers need to be the next group to unionize. Bad planning and over-promising in our industry need to be cleaned up. Things should be done well enough in advance that meeting promised timelines is never an issue. Finishing things hours before a final release has to go.
I know that at times, last minute work needs to happen; something makes it to production, and is a show-stopper, yea, I get it, it needs to be fixed right now. But promising a delivery for a monday morning, and not moving the code until Friday night pretty much guarantees that you will work Saturday and if you have a nervous manager, probably Sunday too.
What gets me is working in a mixed group of contractors/non-contractors where you know (as the non-contractor) that you are giving up time with your friends/family, and not getting anything concrete in return. In the olden-days, you used to get some sort of comp time for something like this (ie, you worked Sat/Sun, so you can take a couple days off after the release has become stable), but that has become non-existent.
I like what I do for a living, I enjoy writing code (back end or front end), I like solving problems; but I don;t like feeling like my employer is taking advantage of me. And it's been too fracking long since I have felt that it was not the norm in the SWD industry.
Tuesday, February 9, 2010
Gotta flame on the contractor species. Embedded journalists (like those you saw during the most recent invasion of Iraq), were there to protect themselves and share the information that they learned with the world. On the other hand, and Embedded Contractor is someone that works a contract for a long time and learns information, but DOES NOT share that information in an effort to protect themselves.
Often this person has a reputation as being able to fix the problems that no one else can. They are also allergic to documenting anything that they do, commonly stating that they need to fix some critical issue, and won't have time for things like documentation. This type of person will make new team members look bad in an effort to make themselves look good.
This gets even more fun when they know that the newly hired person was hired specifically to replace them. I hate being the new person. It's like pulling teeth on a bull.
Tuesday, February 2, 2010
Skipped directly from XP to Windows 7, and every once in a while I run across something that makes me feel really juvenile. I was recently trying to pass a directory structure to an offsite developer who was having configuration issues so that they could compare their project structure to what was running on the server. So I requested access to the server, and mapped a drive. I grabbed a path to the directory from an email, and switched to a command prompt that I had been using to run iisreset commands while I make local deployment changes to some WCF services. I tried to change the directory from C:\Windows\System32\ to the mapped drive, but I kept getting "The system cannot find the drive specified."
Now I know it's been a while since I have messed around with the command prompt, but I was feeling really stupid. I know that if you type something like C:\> D: the drive should change to "D", I even googled the command. Well, silly me, I had been running the Command Prompt with elevated permissions, but since the drive had been mapped using my standard account, it was not visible to the elevated "administrator" permissions that I was running the command prompt under. I guess that the juxt of this was the fact that I had mapped as one "elevated" account (my normal login), then tried to access it using a separate "elevated" account (administrator). I don't really think of "administrator" being on the same permission level as my normal login, but in this case it may be.
If you have any other insights into permission issues like this, let me know.
Wednesday, January 27, 2010
One of the hardest things for some managers to understand is that fighting for "regression testing" time with your customers can save you time in the long run. At work we are currently focusing on a regression sprint; where everyone including developers are re-testing existing items from previous sprints. Instead of our normally assigned bug/development items, we have been given existing bugs to re-test. I love this!
Not only does that show that management have the proper focus on developing and deploying a good and solid product; but it allows developers to grow from a documentation/testing standpoint. It's really interesting when you have only looked at bugs from the developer side, and then having to go back and read another developer's "how to" notes on what was done to fix it. Did they give enough information to double check their logic of the solution? Did they even bother to fill the documentation out? I know that it's nice to have another developer casually look over your shoulder while you are developing, or having someone there to look at the problem if you get stuck; but it's an entirely different situation when they are coming in cold and having to look at what you have done without your interpretation of the problem. You can quickly learn that you are/aren't giving a tester enough to work with.
Another benefit of this is that you get to see another person’s point of view on a solution; which leads to questioning, conversation (yes sometimes arguments), and again more learning. Why did they use a separate entity for something, when (you feel) it could have been added to an existing one? Why did they separate object processing? Why are they calling some items asynchronously, and others not? I think back to the number of complete projects that I have written in the past that could have used this type of incremental feedback.
Best practices give the most benefit when actually practiced.
Tuesday, January 26, 2010
I have been running Windows 7 64 business / IE 8 for about 2 months now, and it's interesting to say that this version of Windows is the most stable that I have ever worked with. That is, if you exclude IE8. I am at my pc for 10-14 hours a day, and I will honestly say that its a GOOD day when IE crashes less than 6 times. It seems to happen most often when I try to multitask within IE. (Navigate to a site that has multiple links that I want to read and start rt-click--open in new tabbing.) When I have all the links that I want to view "prepping", I will go to the first and start reading. If I started this process from a Google search, chances are that several of the links are not what I was looking for, and I will try to immediately close them. The problem is, that if all the "background" tabs have not loaded, the whole browser seems to lock up and die. IE8 does have the option to let you re-open your existing browsing sessions, but when this happens 10-20 times a day it gets pretty tyring. I know that I have other browser options (Firefox/Chrome), but I am developing .Net solutions best hosted in IE, just frustrating.