anonymous tech woman

Yet another woman in technology blog. I'm actually a developer who uses a variety of Java and database technologies on a variety of platforms.

Wednesday, May 31, 2006

IT industry is 'dishonest'

I was reading a article stating that the IT industry is dishonest because project estimation time is always under estimated.

The article is true project timescales are always under-estimated as the outsourcer wants the work. If they told the true timescale to the potential client and the fact that their requirements are too complicated they would not be awarded the work.

This leads to developers having to work 100 hour weeks to try and meet the deadline if the company is small, or if the company is large/off-shores they just throw more people on the project.

Tuesday, May 30, 2006

Front Controller Pattern and the Apache Struts Framework

I came across the Struts Framework last year when I had to design a little program that I thought it would be great to use it for as the framework seemed to be away of decreasing complexity of an application and increasing the maintainability of code. I ended up having a few issues with the framework due to the fact my application had to be integrated into a bigger application, which incidentally wasn't the fault of Struts.

Anyway I have recently been reading about Struts again due to the project separating into the Struts Action Framework and the Struts Shale Framework. The first is used with JSP pages and the latter is used with Java Server Faces.

Struts is an example of a Front Controller design pattern. This design pattern is based on hiding complexity, separation of concerns and loose coupling. More can be read about this design pattern here.

Monday, May 29, 2006

Coding Standards Or Code Like A Girl

I was reading an article on Creating Passionate Users entitled "Code Like a Girl" it remained me of my university course where if you coded something that worked perfectly but your code was unreadable you either failed the assignment or your assignment got marked down. I had to make sure my code was readable whether it was C, C++, Java or Perl.

In my last company I was working on bug fixing a project where the code was nearly impossible to read. This varied from the simple no brackets around if/else statement to badly named variables, methods and classes to methods that were over a page long with repetitive blocks of code. (Badly named variables,methods and classes don't describe what their purpose is.)

I spoke to a guy in the company about the lack of coding standards and he replied that you can't expect good coding standards in industry. Strangely I have worked in more than one company with rigid coding standards and this lead to the code having fewer bugs to maintain. Writing nice code makes it a pleasure to read and easier for an observer who may have nothing to do with your code pointing out a flaw from just standing over your shoulder.

Java has coding standards which Sun wrote in 1999. Other Java sites have similar standards i.e. Java Ranch. Even in Perl where it's possible to write code on one line which can do a lot of damage to file systems, you should have coding standards. Perl.com has a nice article defending coding standards.

Saturday, May 27, 2006

Book Review: Head First Servlets and JSP



This book is actually 2 years old now and hopefully there will be an updated edition out soon as the book deals with Java 1.4.

The book is part of the collection of "Head First" books and this particular title was written by Kathy Sierra, Bert Bates and Bryan Basham. The first two authors are involved in co-ordinating the Sun Certified Programmer exams. I should make it clear that the book is actually for those intending to take the Sun Certified Web Component Developer Exam but even if you are not interested in sitting that exam the book is still useful.

The book subject matter covers the basics of JSP's and Servlets plus Expression Language, developing your own custom tags, web application security and struts.

The book is set out in the normal style of the Head First Series. This style being lots of graphics, at least two ways to explain important points and repetition to ensure that you remember what you just read. Each chapter ends with a list of questions so you can practise what you have learnt and there are frequent highlighted boxes throughout the book informing you what you do and don't need to know for the exam plus useful information for those needing to learn the information for work purposes. At the end of the book is a mock exam covering material from all the chapters.

A good series

Sometimes when I want to understand more about the technical things I am working with I buy a textbook. As I love books an excuse to buy a book for me is a good thing particularly if I can convince myself that the purchase will aid my understand of subject matter professionally. The problem with most textbooks is that they when they are published they are already out of date.

However one publisher tries to overcome this by giving their authors a limited timespan to write a book, this publisher is O'Reilly. I like there books for a variety of reasons. This includes knowing that they are written by an assortment of people, and as I'm on a mailing list with one and regularly read the blog of another, I see these authors as accessible people. The books are also written to be as in depth about their subject area but as brief as possible, and as I like to do other things as well as work I can go through a topic quite quickly.

My recent purchases are "Linux Pocket Guide" and the "SQL CookBook". The titles clearly signify what they are about.








O'Reilly are also the publishers of the "Head First" series of books. These books are easy to understand study guides with lots of diagrams, pictures and cartoons to ensure that you get a subject matter to stick in your head. I have read the Java book (which is now out of date) and now reading the JSP and Servlet book in full.



When I buy technical books I have a habit of only reading the chapters about topics I know a little about then 9 months to a year later actually reading the book in full. (The images are from Amazon where I end up buying all my technical books.)

Dealing with Recruitment Consultants

I'm job hunting at the moment so I have to deal with recruitment consultants. Unfortunately in today's market they are the people who are the gatekeepers to jobs as companies cannot be bothered to shift through lots of CVs.

Some recruitment consultants are unscrupulous.
Some common tricks include:
1. Saying they have a good job that matches your skill set then refusing to tell you who they are putting you forward to. This generally means they are going to spam your CV at every email lead for a company they have ever had. A decent agency will tell you the company so you can research them.

2. Asking who your previous managers were. They either do this by asking directly for your referee names, pretending there is a piece of legislation that means they have to have those names or making up names and asking if those people are your manager. The easiest thing to say to them is either "Yes you can email hr@companyname.com" or "I want give you a reference name until you make me an offer". If they persist then you can just put the phone down. A decent agency will not care as they have enough leads or know you are likely to give them leads once you have secured a role.

3. Not bothering to inform you how you job application is going on i.e. whether you are shortlisted or not. Due to this common practise I have ended up taken jobs not knowing that agency A was dealing with a client who was very slow with interviews and now wants to interview me.

I have found these practises common whether I'm looking at a permanent or contract role.

Wednesday, May 24, 2006

What does Computer Literate Mean?

I was reading a /. discussion about what it means to be computer literate. Wikipedia has an entry for this and part of it states:
"In common discourse, however, "computer literate" often connotes little more than the ability to use several very specific applications (usually Microsoft Word, Microsoft Internet Explorer and Microsoft Outlook) for certain very well-defined simple tasks, largely by rote. (This is analogous to a child claiming that they "can read" because they have rote-memorized several small children's books. Real problems can arise when such a "computer literate" person encounters a new program for the first time, and large degrees of "hand-holding" will likely be required.)"


I have 4 examples of "computer functionality" versus "computer literacy"

  • My nephew needed some presentation software to do a school project, so I gave him a copy of Ability Office because it was very cheap. He stated "No that he needed Powerpoint" so his mother forked out quite a lot of money for it. Talking to him I found out that he needed the software because his Technology teacher clearly didn't understand that Powerpoint was one form of presentation software and any other software that produced the same result should be used. The Technology Teacher who was in charge of ensuring young minds learnt computer literacy instead taught their students to be "computer functional". My nephew who later that year won a national competition with a group of school friends' is "computer literate". How do I know? On talking to him and seeing him using the competition software with his friends' he explained that the teacher had given them the software but had not shown them how to install or use it, instead they just followed the installation instructions and guessed what to do.

  • I sent a zip file to two friends' both of whom spend very little time on the computer. They both stated they didn't know how to undo the file and install the software that was in it. I therefore wrote an email of instructions and sent it to them both. Only one of them could follow my instructions and get it installed, while the other one phoned me up in distress. In the end I had to install the distressed friend's software myself. What surprised me was at school the distressed friend was thought to be the cleverest due to her grades, yet she had difficulty following step by step instructions. I have also discovered this friend needs lots of hand holding when it comes to using new software and doesn't know that each type of software comes with more than one program. The friend two who installed the software doesn't. Speaking to friend two, she explained that she knew that she wasn't worried if things went wrong because she knew she had other people to talk to and as long as she could navigate her way round the system so people could help her by the phone their was nothing to worry about.
  • I helped out in a school with a class of children a good few years ago. The children had to work out what they wanted to write on an aging BBC computer. One of the children decided to copy a story they wrote down, I attempted to point out to the child that they should write a different story but the child insisted. Anyway the teacher praised the child for using their "initiative" which I thought was highly amusing. Talking to some friends' in teaching I discovered that it was common for many primary teachers at the time to handwrite out documents and then copy the finish document into a word processor. This obviously shows the teachers were "computer functional."

  • I worked with some guys who used Internet Explorer 6. I installed Firefox and Internet Explorer 7 on my work PC. When the guys came over to my computer they looked completely confused as the Internet Explorer was different and couldn't understand how to use it. They showed this by opening and closing the program twice and looking confused before I pointed out that it was Internet Explorer 7. Even then they still couldn't work out how to type in a URL until I did it. Many commentators on the /. discussion stated that everyone who worked in a programming or hardware development level in IT was computer literature, and a minority disagreed. My example shows that even IT developers can be "computer functional"

Monday, May 22, 2006

Presenteeism

Presenteeism is defined as workers working excessive hours due to job insecurity or coming into work when sick or injured. Both these methods of working do not increase productivity. In fact the UK has some of the worses productivity in the Western World even though we work some of the longest hours.

I currently work in a team that has this problem and the new manager has noticed this quite quickly.

For example one Friday I was actually working away at something quite late and my colleagues refused to leave before I did. They actually hadn't worked out that me working an extra hour on a Friday evening is not excessive simply because I had left earlier on another day. However they simply wouldn't leave and I knew they were not doing anything productive.

Another example of this problem is when 2 of my colleagues were sick with flu. The first one refused to go off home even though he had a headache, and was sweating and shivering alternately for 2 days. The second one went to A & E (!!!) and then came into work. ( I couldn't stop laughing about him going to A & E all day as he would have waited the entire morning and then been told that he had the flu and he should take some paracetamol.)

Unfortunately companies that have a presenteeism problem are not for me unless they are paying me a lot. Then I will sit there with my books and pretend I'm learning something for the system resolving to get out of the company within 6 months.

It's nice to talk......

I was listening to the radio yesterday night and the DJ was commenting on how he had not sat in an office for years. He then stated he understood how fed up people got working in offices, as he had sat in an office for the day and he recieved an email. The problem was that the sender was sitting 5 desks away from him and just emailed him a question which he could have answered in less time it would have taken to send the email and recieve a reply.

Anyway in my current role my team leader who sits opposite me diagonally, has decided that to communicate with me he will either use email or Office Communicator.

To stop him, when I recieved an email I have said looking at him intently, "So you want me to do ......". Then he has decided to use Office Communicator. The first time he did this I pretended it was not working so he came and checked it whether it was working or not. I have since put on the busy sign. I have also been told by a friend to inform him that if he gets through again to say to every email and IM he sends that "I don't understand".

I should state that I'm not the only one being singled out for this treatment as this guy has been repeatedly warned by the Process Manager to stop sending so many emails and talk to people.

One of the reasons I like working is that it gives you a chance to talk to people who have a different lifestyle and view to you. However if your colleagues refuse to talk for whatever reason you quickly get fed up of them.

Sunday, May 21, 2006

Time Sheets

One of the things that I seem to spend about 1 to 3 hours a week doing in all the office jobs I have ever done is filling in time sheets.

In my administrative jobs time sheets where easy they were just paper-based sheets where you put in the number of hours a day you were at the office. You didn't need to break it down by tasks so if you were in the office from 9 to 5 or 5.30 and had lunch, you just put the correct number in the appropriate box.

In my tech jobs all companies decide to break down their time sheet into tasks so they can bill the customer correctly. However all companies start of simply - with an Excel Spreadsheet and the customer name in full, so if you spend 3 hours on Monday working for Customer X you can just put that in. The time sheet takes about 5 minutes to complete.

Then the time sheets get more complicated as the company is now doing two or more tasks for customer X. So now you have to work out whether you were working on the Widgets 1 Account for Customer X or the Super Widgets Account for Customer X. This is still quite simple because all you learn to do is write either on a scrap of paper, in your diary or even update the sheet daily what you were doing i.e. Tuesday Super Widgets Account Customer X 7 hours. The time sheet takes 10 minutes to complete.

Then the company decides that the Spreadsheets are too complicated so they have to go and get a Web-based or SAP time sheet system. Not only do they do that they decide that they need to break down the tasks for Customer X into more meaningful items, and because now there are so many tasks they need to give each task a code. Also now they also have Customer A, Customer D, Customer F and Customer XC so each customer has to be given a code as well.

So while you are still record daily what you do i.e. Wednesday Super Widgets Account Customer X 4 hours you find that when you come to complete your time sheet on a Friday you need to work out whether Customer X was XCD or XFD and whether Super Widgets was task SuperWidgets Dev or Super Widgets Design.

This gets you fustrated so you put in the same thing for every incidence of Customer X who is now code XFD. Then you work out your hours match the required total and press "Submit". To get to this stage has now increased from 10 minutes to 30 minutes.

This is where the real fustration starts. You discover that you cannot put the same task, Super Widgets Dev in for more than 2 days in a row for XFD. So you now have to go through and change everything. Finally after another 30 minutes you press "Submit". And the time sheet is sent. It has only taken you 60 minutes to get to this stage.

Friday, May 19, 2006

10 ways to make male programmers scared of you

I have noticed in my current role, in interviews and in previous jobs that male programmers/developers are scared of me. I spoke to a friend who is working in the gamming industry as a artist and she has noticed the same thing.

Looking at some the most competent women:
1. Kathy Sierra who writes the Head First series and is involved in examinations for Sun. She is blonde, skinny and very competent.
2. Bostock and Chandler who for 20 years hide the fact that they were women but wrote the A level Maths books that all English and Welsh students use.
I can see why.

Anyway I have compiled a list of characteristics that make male programmers/developers scared of women in the field:
1. Wear a dress or a skirt to work 80% of the time with feminine shoes or funky boots.
2. Dye your hair, bottle blonde is a favourite but any other blatantly non-nature colour will do.
3. Have basic hygiene and wear makeup at all times to work even if you have done a 15 hour day the day before.
4. Have an interest outside work that is blatantly feminine and talk about it often i.e. shopping for handbags or funky shoes, having nice nails, needle work
5. Have an interest outside work that is blatantly odd and talk about it often most extreme or unfemine sports will do.
6. Be better at your job then them (not hard most guys lie on their CV about their experience there as women lie about their qualifications)
7. Ask the most basic questions that the men forgot in an innocent manner to sovle a problem, and look puzzled when they try and over complicate things. This is especially good if you do it in front of a manager.
8. Spend a whole two weeks telling them of for swearing.....then swear yourself like a trooper out of managment earshot.
9. Discuss wages (whatever it says in your contract) and if they earn more than you but are sh*t at their job, resign without explaining why and get another job somewhere else.
10. Refuse to talk to them via email or instant messaging when they are sitting opposite you or are in the same room. Explain loudly and repeatly especially in front of management how this wastes storage resources and time.

Thursday, May 18, 2006

GoogleMail or is it Gmail?

What is GoogleMail?
===================
GoogleMail or GMail (www.gmail.com) is a free searched-based web email service from Google. Other known free providers of web email include Yahoo!, Microsoft (Hotmail) and Lycos. Web-based email accounts allow users to view their emails from any computer in the world as long as they remember their username and password.

Who is Google?
==============
Google was founded by Larry Page and Sergey Bin who met at Stanford University. They developed a search engine called BackRub in 1996. By 1998 they had renamed the beta product Google.com, formed a company called Google Inc, managed to get funding for their venture and receive 10,000 search queries each day on their search engine. In 2000 they developed a keyword-targeted advertising program into their search engine which introduced a revenue stream into the now fully released search engine. Google started to develop other features into the brand to increase revenue such as Ad-Words and the Google Tool bar. GMail was announced to the world on 1st April 2004.

How do you get an account?
==========================
The first 1000 GMail accounts where given to Google employees and their families. The only way to get a GMail account if you were not an employee or a member of their family was/is by invitation.

Google Inc brought Blogger.com in 2003, a site that hosts Blogs. A blog is another name for an online diary. On 25th April Google Inc gave each Blogger.com user an invitation to have a GMail account. As I had a blog I got my first account that way.

Once you have used your GMail account for about a week you receive 10 invitations to give to your people you know to get an account. They then receive 10 invitations after using their account for about a week or so can invite other people.

Initially when you start giving out invitations you are limited to 10 people, and so if you invite 7 people then you only have 3 invites left. After about 3 months of use of your GMail account you notice that you have 50 invites and if you invite another 3 people within a few days you again have 50 invites. Then after 6 months you have 100 invites. (You can also invite yourself if you have another email address which is why I have 4 accounts.)

Features
=========
1. A free web-based email service with large storage.
Storage is currently around 2GB for an account which means you never have to delete emails.
2. Virus scanning of email.
Most email providers do this now as email servers have been taken down worldwide previously due to viruses that target email accounts.
3. The ability to send and receive emails that are 10MB in size This feature is only really of use if you are either storing documents on your account or are sending them to another GMail user as many other email accounts cannot cope with such large emails.
4. Vacation auto responder.
This really is not much use to a personal email address as if you receive spam you are signifying to the spammer your address is active so they can send you more spam.
5. Contact Groups
This is where you can create a name, say "friends", add people who fit the description to the group, and then when you send an you can type in "friends" in the 'To:' box and all the people in that group will receive the email.
6. Chat
Anyone with a GMail account in your contacts list will automatically appear on the left hand-side with a Green, Red or Grey symbol next to it. If the sign is green it means you can chat to them. If the sign is red it will have a message such as "don't even bother" indicating the person is busy, and if the sign is grey it means the person has signed out of chat. I personally don't find chat faster than sending an email to some one with a GoogleMail account who is online.
7. Auto-save
As you write your emails (or your articles for Dooyoo.co.uk) GMail periodically saves them in your drafts folder until you send them.
8. View attachments as HTML
You can click on a Word or PDF attachment and it opens up in another browser window as a HTML document. This is supposedly faster than downloading the document but actually is really useful if you are viewing the document on a PC away from home.
9. Export google contacts
Apparently you can export your contacts list to a file so you can move them around.
10. Languages
You can access GMail in 37 different languages including different forms of English.
11. Labels
You cannot organise your email by putting into folders. Instead you can give your email labels by email address or subject. I find this fiddly to do and have only tried it once.

Issues with GMail
==================
1. GMail is still in beta mode
-----------------------------------------
GMail is in Beta release form still after more than 2 years. This to those not in the Computer Industry, means that GMail is a preview release which signifies that although the product has most of it's features it is still unstable and can have additional features added to it before it is a finished product.

2. Invitation only model abuse
------------------------------------------
As GMail only allows users to get an account by invitation and invites have been open to abuse. For example people have been inviting people they don't know personally but just because they are a user on a mailing list they are on, and there are also websites that have been set up to allow users with spare invites to donate to those that do not have them. This is not actually against the "Terms of Service" but every once in a while Google makes it difficult for some donation sites to operate, and forces them to close.

3. Ad-Words and not Deleting Emails
-----------------------------------------------------
When you enter a search phrase into the search engine, Google.com (or Google.co.uk), adverts or "Sponsored Links" appear on the page related to your search terms. With GMail when you open or write an email, your words are scanned by computer and on the right hand side of the screen are a listed adverts related to the words in the email. For example as I'm writing this I see lots of adverts for Wedding Invitations.

In addition GMail states that because the storage space on it's servers is so large you never have to delete an email, and they admit that deleted email remains on their systems for an indefinite period of time.

This has lead to worries about privacy. However it should be noted in general that:
a. Most email messages are not encrypted and have to be routed through intermediate computers before reaching their destination, which means others can intercept and read messages.
b. Most email providers and Internet Service Providers (ISP) perform some sort of filtering on email messages to protect their systems from virus and trojans, and to remove spam messages which means they do some form of reading of your messages.
c. All email providers store your emails on their system for some time period, and in the case of companies and organisations they may have to store your emails on their systems for years for legal reasons.
d. Network administrators and some other people in companies/organisations are allowed to read individual email messages of users to ensure they don't contain illegal content.
e. If someone really wanted to read your emails in your account they would use Social Engineering to get your password out of you. There are surveys that show that the majority of people will give out their password for such gifts as a pen.

Therefore the real message is that you should not put anything in email that you want to keep confidential, and if you are worried about the contents of your emails getting into the wrong hands then you should encrypt them.

4. Why new UK users addresses don't end up with gmail.com
----------------------------------------------------------
address
-------
In October 2005, UK bases users who signed up for an account where given an email address that ended with googlemail.com. This was due to Google losing their court battle with a UK-based financial services firm Independent International Investment Research who were already using the GMail name for their web-based mail application since 2002. This trade mark issue also affect German users in May 2005. As I now have two Gmail accounts and two GoogleMail accounts, I refer to both GMail and GoogleMail in this article.

Advantages
=========
1. Free email service with large storage which enables you to back up documents to the web so you can access them from more than one place.
2. Ability to search your emails by typing a search term into the "search mail" box.
3. You can use the same passwords and username for Google Calendar (currently you have to pretend to be a US user) and Google news.
4. You can download your email to your own computer, and send and recieve email via SMTP and POP3.
5. Spell check :)
6. Login to the website is done via HTTPS which means that there is reasonable protection from eavesdroppers.
7. An email and a reply from another person are stored in threaded conversations.(Thanks crispy)

Disadvantages
===========
1. The issues of being in beta after 2 years, adwords, not deleting emails and the invitation model.
2. The fact that UK users now have an @googlemail.com email address, since email can be sent to the person using @gmail.com this is confusing.
3. The servers are frequently busy particularly around lunch times. However this issue is not unique to GMail servers.
4. Seeming to add everyone you have ever emailed to your contacts list. So if you send an email to complaints@mycompany.com this email address is included in your contacts even if you never want to hear from mycompany.com again.
5. Not fully integrating calendar etc into the email service and certain features not be available to UK users.
6. Can automatically put non-spam messages in the spam folder. This happens with all my email accounts from different providers.


Summary
=======
It's free and although there are some issues and annoyances with the service I generally find it alright to use. This mainly because I don't receive lots of spam into my inboxes and have to filter them myself like with some other free web accounts. I find the search facility a good feature to use if I'm searching for a subject in one of my 2 accounts that are subscribed to mailing lists.

Wednesday, May 17, 2006

Programmers Confused by Technology

I have recently been spending my time at the office reading sites such as jroller.com which has blogs written by other developers.

This has got me thinking about the type of people I work with. I work with people from different countries but my current team is made up of Indian nations. I have noted that one of them was:
1. Confused when I was using Firefox. He leant over my computer and opened up Internet Explorer and seemed confused that I was using IE 7. This is because both browsers have tabs.
2. Today he was given a chip and pin credit card reader, and he could not enter the amount in the reader.

Taken independantly I would have not thought anything of it but together it indicates to me I'm actually working with people who are doing an IT job because it pays well rather than because they have any interest in what they are doing. Working with people like this makes my job hard as one of the ways I learn about new technologies is through colleagues. For example I wouldn't have known that Eclipse was like IBM Rational if it wasn't for one of my ex-colleagues. Also if IT is just a job and you are not interested in how things work or learning about new things then your own skills stagnate.

Friday, May 05, 2006

PMD

I was reading something on slashdot and was given a link to PMD .

PMD is a static code analysis tool which scans Java code and looks for potiential problems including unused local variables, empty try and catch methods, copying and pasting of code and badly written code such as if statements with no braces. I ran it on a project I working on at work and surprise surprise (NOT) lots of the code had faults. Most of the faults where due to the bad style in which it was written i.e. returns in the middle of methods, unused variables, variables not declared correctly this again shows what bad code I'm dealing with and why their are so many bugs.

I have not yet configured PMD to run on my own set of rules which can be done. However as I'm using eclipse I discovered this tutorial which I found useful.