Archive

Archive for the ‘9-5’ Category

What recent computer science graduate should know.

August 4th, 2009 Paul No comments

wheels

Many many years ago when I landed my first coding job, I was amazed at how different working in a software development shop was different from what I had pictured in my mind.  At that time, I did not even graduated yet, I was in need of money and it seemed like a great opportunity so I took the job.  While driving to my new place of employment for the first time, I was running some scenarios in my head, trying to remember some tested and true algorithms, thinking of whole bunch of technical things that might help me impress my then new boss; what came as a complete surprise to me was the fact that I had no idea what the work was about.

After couple of weeks, I began to realize that many things that were part of my job were not covered in school at all.  I can’t really blame school for that, after all they were trying to give me as much information as they could about technical aspects – languages, algorithms and all that jazz, I myself had failed to learn the truth about real time work of a coder, and I did have opportunities to do so.  Later on when I became a manager and was interviewing people for coding positions, I realized that I was not unique in this lack of knowledge.  Most of the recent graduates were in the same boat that I was in years ago. Read more…

Holidays are fast approaching.

December 17th, 2008 Paul No comments

winter_lake
It has been a while since I written anything here, I’d like to tell myself that I am just busy and not procrastinating, but that would not be true. I do find time to watch House, so there is no excuse. On the other side, I am very busy. At work we are rolling out a new project, well it is not completely new, but in it’s old form, the project was not used at all, had too many bugs and looked like garbage. Have to say that we are on the final phase of the project, will release a beta version soon.

This would be the first time we used an external GUI dll, and I am quite happy with results. DotNetBar is a great library, and I am positive that we will use it for all our user interfaces; after all, when you have more then one app and all of those have a different look to them, kind of makes you want to re-work it all. That’s what we are doing presently.

New version of Rosetta is coming out soon too, everyone worked hard, and it feels like we are all burned out right before holidays, at least we will have few days to relax and get into the holiday spirit before going back to work.

Are changes good for you?

October 30th, 2008 Paul No comments

I have been told many many times that changes are supposed to be good for you (or me, since it’s my situation that we are looking into). I have been a coder for quite some time now. I can’t say that I am absolutely ecstatic about programming. It does not influence my life outside of my office hours and time that I spent at home trying desperately to improve myself. For instance, I don’t watch Star Trek or build some kind of crazy contraptions which could loosely be called a robot in my basement, although come to think of it, that sounds like a good idea; the robot one, not the Star Trek. I don’t wear nerdy t-shirts with BSOD on it. I am not participating in heated discussions like “My IDE is bigger then yours!” and “My OS can kick your OS’s butt” and so on. I can’t say that coding is my passion, it is something I am interested in and it pays my bills. Another factor would be my formal training – I have some in development, but as for the other areas I can’t say that I am properly trained. Lately something had changed in my work – I am doing more managerial things then coding. Read more…

Pre-release mayhem – some things never change

September 26th, 2008 Paul No comments

For last six month my guys and I have been under extreme pressure.  You see, in the ideal world, sales have no control over development, but this is a real world so sales objective is driving us completely mad.  There is a potential client, a very demanding potential client who blackmails us with stuff like “If you not going to build feature x by date y I am not signing”.  Unfortunately this is the biggest contract for us, so sales will do everything in their power to get them.  It’s not that I mind sales guys doing their jobs, but if this client is demanding right now and they have not paid yet, I can only imagine what will be unleashed upon us once they will become our paying customer.

Granted the product is very expensive (more expensive then VS 2008 and Adobe CS3 suite combined) and this sometimes can inspire our clients to demand stuff.  We’ve been through this before.  A company that shell remain nameless was bossing us around for six month.  We only worked on their features, nobody else wanted these things and at the end of six month they said, “You know, this is what we said we need, but not what we actually need”.  I can still remember that conversation.  Incidentally this is the time when my first “Punch Box” appeared at the office; since then we went though a number of  “Punch Boxes” and that was the end of that.

Three times in the last 4 years we went through similar situations, and we have yet secure a contract when too much custom stuff is put in and we basically keep on asking “How high”.  This is the fourth time.

We have to release a newest version on Tuesday, Sept 30, so everyone is up to their necks in testing and bug fixing when all of a sudden “dll hell” makes appearance.  Everyone who coded for Windows knows what I am talking about – one guy decides to mess around with perfectly good reference and all hell breaks loose.  Today its Microsoft.Office.Core.  Nobody can compile, nothing runs, and we can’t roll back.  Unfortunately we have to rely on external references such as Office.Core, because the app produces Excel and PowerPoint documents, we reference other things too, but it seems to me that whenever we are running into DLL Hell it always have something to do with a dll from Microsoft.  This is going to be a long weekend, just me, five guys, IDE and references.

Categories: 9-5, Management Tags:

Commenting your code – why not what.

August 28th, 2008 Paul No comments

Today I had to modify a small part of our flagship product; this particular part was written about 2 years ago by developer who is no longer working with us.  Back then we did not have too much time on our hands to actually maintain some kind of coding standard.  The variables are named poorly, there was no history of the class modifications, but there was one part of the project that looked promising – he did leave comments.

Unfortunately the comments that were there did not help me at all.  Here is the problem – the developer who wrote the classes I needed to modify went out of his way to block a certain type of input by user.  Input strings were checked couple of times as well as an event was called to verify input on every key press.  And guess what – I have to have the form and the code behind to accept this type of input against which this developer fought so hard.  While it did not take me long to disable these road blocks, I still can’t understand why were these things blocked.

The comments were there, and they were describing what was the code doing and not why.  Realistically speaking, any developer can read code and get some idea what is happening, you don’t need to comment it, I was searching for an explanation why and I did not find it.   There was no unit testing provided, so I have no idea what my changes do to the stuff that was already written and I have no reason to be certain what will happen to the code until we test it, and trust me, this will be the most tested area for this new release.  Did I needed to see explanation of how a foreach loop is executed – no; would I love to see explanation why this input was blocked – YES.

Categories: 9-5 Tags: ,

Code reviews are effective.

August 8th, 2008 Paul No comments

Rosetta Studio is about 5 years old.  It was started as a little side project, but grew into a popular app within our niche.  Right now we are quite comfortable with our release schedule, we take time before actually releasing to analyze and test the software, as a result there are fewer bugs and overall customers are happy.  But it was not always this way.

When I joined RS team, well, there was no team.  There was Matt, the guy who came up with the concept and there was me.  Rosetta then was in v 1.2, so we did not have many features implemented, basically the app was so vanilla, we only had 2 clients.  We had lots of ideas, and very little time and patience to maintain some kind of development system that would help is stay on course.  On top of coding, we had to do sales and support plus we were expected to help everyone else with their computer related problems (like fixing Outlook and writing Excel macros).  All this left very little time for development, and we had potential clients breathing down our necks twisting our arms to get the features they wanted implemented soon.

We were working in a fire brigade mode, there were fires, and we had to put them out fast.  There was very little time to think about writing optimized and efficient code.  As long as it worked, it was good enough.  This might appear as a good model for someone with a new app, features are added quickly, we had releases quarterly, our client base grew and soon we realized that we don’t need to put out fires.  We still have a list of suggestions (which actually more like demands then suggestions) and we are working on those, but now there is no rush to get it done, so we are doing it properly now.  Matt is gone now, I lead development team, and we got enough coders to maintain a good pace and write quality code.  But the stuff that was written in the past is not going away.

Right now we are rewriting Rosetta from scratch.  We need to adapt to the new framework, plus Office 2007 and localization and let me tell you, it’s a lot of work.  To address the issues of the old code, and believe me, I was thinking about it for quite some time I came up with this weekly code reviews.  Now every week one of us takes a function from those old classes and rewrite it in the most efficient way the developer can imagine.  Then, the developer has to present his work to everyone, explain briefly what the class and the function is all about, what and why was changed as well as measurable benefits of the change.  I thought that first of all we will slowly start changing the code, which when done properly is a good thing, some of us get exposure to classes that we never worked with before and we would share some of or knowledge.  To start it, I decided to go first.

Picked up a function, shaved some time on execution, dropped a loop, did some smaller things.  Just to make sure everyone is paying attention put some goofy things with appending a space to a string and then trimming the end of it.  Everyone caught it right away; I guess the guys are responding to this new idea.  We’ll see how will it progress, but basically I would recommend this to everyone running a small development team as a good exercise and learning experience.

Categories: 9-5, Management Tags: ,

Visual Source Safe is driving me nuts

August 6th, 2008 Paul No comments

For a while we’ve been using VSS for all our source control needs.  On top of VSS we had to get Source Anywhere just so we could work from home.  Granted we don’t have a huge development shop here, we mostly work from office and our requirements for source control software have been pretty modest, but VSS is just not performing.

During this year, we lost code.  There was a very bad case of it when we spent 3 days hunting down a bug and then fixing it only to notice that somehow the changes did not registered with Source Safe.  There is also issue of branching and merging – I have to say that when I am forced to do branching it completely ruins my day.  After branching is done, I am usually grumpy and unapproachable.  With merging, its like that famous line from Forrest Gump – you never know what are you’re gonna get.

After doing some research, I think Subversion should work better.  There is only one tiny problem – I can’t find a good unbloated tutorial on how to get this thing started.  I know, RTFM but who has time for that?  For the next few days I will try to get Subversion work for us.  If I will come up with a simple way of getting it going, I will post a short tutorial, probably just for myself, for future reference.

Bug fixing – final phase

April 22nd, 2008 Paul No comments

This is crazy – we are on the final phase.  Now we are working until about 8 PM and I miss my wife and kids.  But soon this madness will end and there is going to be a whole new bunch of projects

Categories: 9-5 Tags:

Exterminating Bugs – Rosetta 3.1 should be here soon!

April 14th, 2008 Paul No comments

This has been a crazy couple of weeks.  Finally all coding for the newest release of Rosetta is done, we are now fixing bugs.  Guys have done great job adding two huge features which I am sure our clients will be happy about.  We also done bunch of smaller things that will improve usability and help save even more time.  Plus tweaked performance, but this is an ongoing battle.

This has been a very difficult release to prepare.  We just hired another great developer – Will who despite my expectation did not require much of hand-holding and was able to just dive into it and make some great things happen.  My other guys had to do features with no set of final specs, it seemed to change with every week but managed to do great so far.  Considering the fact that our support guy Paul was doing lot’s of travel and we had to pick up those duties as well, we did reasonably well.  Dave is supposed to announce this release at the conference at the end of the month, would be great if we could actually finish it by then.

Actually after this release Dave is planning on visiting most of our clients and having a talk about the direction the software is going.  Should be good as we love getting realistic feedback and not just generic – “Look good, will probably use it”.

When I came to then ATP Canada, Rosetta was 1.3.  We had two developers – Matt and I; back then we had to work as a fire brigade all the time.  We also managed sales and support as well as coding.  Now we are looking at 3.1, have great team of developers, dedicated support / sales person and things are looking very optimistic.

I am actually looking forward to this release, after this one there are going to be some major changes in product lines and frameworks, should be fun.

Categories: 9-5 Tags: ,