Click here to Skip to main content
15,887,683 members
Articles / All Topics

Software Development: A Day in the Life (Long)

Rate me:
Please Sign up or sign in to vote.
5.00/5 (7 votes)
10 Sep 2012Apache4 min read 10.4K   3   6
A day in the life of software development

At times, I feel that software development is much, much harder than it should be. Ridiculous crappy annoyances await you on every corner, some of them many years old. We all, including the tool vendors, never have time to do the job right, causing people to fall into the same traps over and over again.

I recently needed to quickly develop a project involving SQL Server, Web service, and Silverlight. Here’s a quick summary of annoyances I encountered in 24 to 48 hours:

  1. SQL Server 2008 won’t authenticate my user. Reason? It lets you create a user with SQL Server authentication, but conveniently forgets to remind you that SQL Server authentication is disabled by default. Lost half an hour.
  2. Where is the “normalize this table” button? To divide a denormalized table in two, I needed to do 7 or 8 steps, carefully trying not to lose any data. Wasted an hour.
  3. Why on Earth do I have to write the IPropertyChanged implementation for the 1000th time?
    C#
    private string _crap;
    public string Crap
    {
       get { return _crap; }
       set { _crap = value; RaisePropertyChanged("Crap"); }
    }

    Yes, I have a Visual Studio macro for that, which I need to remember to copy to all machines I work on, but why all the code clutter? Can I have my C macros back, please? Pretty please? And don’t even get me started on T4, it’s too problematic. Did not lose much time on this, but it’s annoying.

  4. SqlDataReader.GetString(int). Why didn’t they include a version that takes a column name? Efficiency? What is it, C++? Who came up with a brilliant idea to throw an exception when database contains NULL? Why not just return null string? Why on Earth do I have to remember to write for a 1000th time the safe version of the function? Lost half an hour, ’cause I forgot about this.
    C#
    string SafeGetString(SqlDataReader data, int idx)
    {
       object obj = data.GetValue(idx);
       if (obj == null || obj is DBNull) return null;
       return obj.ToString();
    }
  5. I can now run my web service under ApplicationPoolIdentity. This is nice. The trouble is, this is totally useless, as you can’t give this user permission to your database. Small oversight, will be fixed in the year 2020. Meantime, lost half an hour trying to find how to find the user.
  6. ‘Hide file extensions’ checkbx is under “Organize” button in Windows Server 2008 R2. After 20 years, I came to terms with the fact that file extensions are hidden by default. Apparently, Microsoft thinks most Windows users are retarded and can’t handle such a complex concept. As long as I know how to bring them back, I’m fine. The trouble is, someone came up with a brilliant idea of removing Tools->Folder Options menu and putting this checkbox elsewhere. They probably think we, users, enjoy playing this little quest of “where is my checkbox now”. After all, menus are soooo last century. Lost 15 minutes.
  7. Ran Silverlight web site under Internet Explorer 9. It says I need to download Silverlight. When I click on the link, it says, I quote “Your current security settings do not allow this file to be downloaded“. No indication whatsoever on what exactly is ‘this file‘ and what setting in particular gets in the way. This is year 2012 people, I guess IE authors should get a clue in UI usability by now, shouldn’t they? Lost 10 minutes.
  8. My generic.xaml became too big, tried to break it into several files. It compiles, but blows up at runtime, saying it can’t find the resource file. Triple checked file names – no spelling errors. What gives? It turns out that “there is a bug on not being able to use relative URIs generic.xaml“. Must use absolute URI. This was in Silverlight 3, still not fixed in version 5. Lost an hour.
  9. Got nice error message from Silverlight XAML compiler on an missing closing curly brace:
    Unexpected token None in Rule: MarkupExtension ::= '{' TYPENAME (Arguments)? @'}', 
    in '{Binding MaxTime, RelativeSource={RelativeSource FindAncestor, AncestorType=local:Timeline2}'

    This is fine for a parser written as a homework assignment for a compilers course in college, but seeing that kind of error reporting in production compiler is somewhat surprising. Did not really lose any time, just was astonished.

  10. In an unrelated project, the next day, found that sender parameter in ItemsPresenter.LayoutUpdate event is null. I thought the whole reason Microsoft came up with this monstrosity of...
    C++
    void CrapEventHandler( object sender, EventArgs uselessEmptyParameter)

    ...was to be able to distinguish between various senders in one handler. If the sender is null, this kinda defeats the purpose, doesn’t it? Lost 20 minutes to find the bug and then to refactor the code, so it would know who actually is the sender.

People, why does it need to be that hard? And I mean not intellectually challenging hard, just stupid hard, as in “it should work, but it doesn’t, because someone neglected to fix an annoying XAML compiler bug for three years”?

Yes, I know, perfection is achieved at the moment of collapse. :)

This article was originally posted at http://www.ikriv.com/blog?p=1086

License

This article, along with any associated source code and files, is licensed under The Apache License, Version 2.0


Written By
Technical Lead Thomson Reuters
United States United States
Ivan is a hands-on software architect/technical lead working for Thomson Reuters in the New York City area. At present I am mostly building complex multi-threaded WPF application for the financial sector, but I am also interested in cloud computing, web development, mobile development, etc.

Please visit my web site: www.ikriv.com.

Comments and Discussions

 
QuestionI feel your pain brother! Pin
KeithAMS26-Sep-12 3:06
KeithAMS26-Sep-12 3:06 
QuestionDamn that was funny. Pin
Dennis66617-Sep-12 9:23
Dennis66617-Sep-12 9:23 
GeneralMy vote of 5 Pin
Nitesh Maharaj12-Sep-12 1:35
Nitesh Maharaj12-Sep-12 1:35 
GeneralMy vote of 5 Pin
edualcz11-Sep-12 11:42
edualcz11-Sep-12 11:42 
GeneralMy vote of 5 Pin
Federico Sasso10-Sep-12 21:27
Federico Sasso10-Sep-12 21:27 
GeneralMy vote of 5 Pin
oistein.hay10-Sep-12 20:13
oistein.hay10-Sep-12 20:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.