terça-feira, 16 de dezembro de 2008

Ruby scripts

Hello all!

As I have promissed I will post here some Ruby scripts, nothing really amazing but I thing that it could be a nice startup for Ruby studing and it could be useful for someone.

The purpose of the script is to generate random files, with fixed record size (like those used by COBOL programs). The zip has three files:
  • FileCreator.rb: the program itself, it is responsible to create the file, you script should refer to it;
  • TestFileCreator.rb: the test case, we never forget about it; and
  • CreateFile.rb: an example of how to use the program, it is the script itself, if you want to run something start with this.
You can download it here.

I hope it could help you somehow.

See you soon!

sábado, 13 de dezembro de 2008

I don't need to say a word

Rails 2.0 and scaffolding

One of the most interesting Rails tool is the scaffolding, but when you look aroung the internet you notice that almost all the tutorials refers to the Rail 1.x.
Unfortunetly there were a lot of changes in this tool. Sean Lynch wrote this nice tutorial about version 2.0: Rails 2.0 and Scaffolding Step by Step.

sexta-feira, 12 de dezembro de 2008

Ruby roadmap

I am new at Ruby development and I AM not sure that it could solve the Global Warning problems, but it could be a nice to tool to have in your pocket.

For example, yesterday I needed to extract some data from a bulk of files, so I created a one shoot script that help me a lot.

 

I will not post here the script that I created, it will not help anyone but I will write down a Ruby roadmap, if you are a beginner it could help. First of all we need to understand that Ruby is just a language, it is not related to web stuffs or things like that; but now you come as say: “But my little friend said that Ruby is a boost for web application, you are a liar, your… your.. fool!”

Take easy little boy, I will explain it  to you: the magical word for web is Ruby on Rails. But what is it? Rails is the underline framework for Ruby that makes web development easier, because of the conventions that it is based on.

 

First step you should go to the  website: Ruby on Rails, go directly to the Get Started. There you will be able to download the Ruby and get the instructions to install the Rails, I recommend that you install both (it doesn’t matter if you are going to do scripts or web development).

Once you get your environment running make the first application (suggested at the Get Started), after that you should make a difficult decision: learn the language or keep running in a nice tutorial. I am for make a nice tutorial, but I will let you choose:

·         Learn language: This is the most crazy book for programming language that I have seen so far, but it worth a look: why's (poignant) guide to Ruby. It will give you a nice overview of the Ruby language, there isn’t any web reference here.

·         Tutorial: there is plenty tutorials about Ruby on Rails in the internet, but I suggest these: Getting Started With Rails, Tutorial Step One (wiki). The last one is more direct, although the text is a little bit confusing.

I think that it is a little bit amount of data to start with Ruby. Just move yourself little boy and start learning it, next I am going to post a Ruby script to create fixed file size for testing.

terça-feira, 9 de dezembro de 2008

NO! NO! NO!

It is not normal to me to post something in the middle of the day, but this morning I’ve listened so much insanity that I need to write it down.

I swear that in the next post I will write something technical, but there is so much crazy people around that I need to let it here, before I get mad too.

Here is the situation: there is a web system here, that I will refer as GlubGlub that was audited by a big company, concerning security issues. They raised a lot of point to improve, so far so good (I will not discuss the audit here).

Between the issues there is a point regarding passwords, the site was the normal password field. But it is wrong, it is a big issue hole, although the site uses SSL.

And now the people come with the most incredible ideas to solve a hole that no one tries.

I will use as example banking applications, because I believe that those guys are woried about this kind of issue. At the beginning there is just fields there, but the people were falling in some kind of keyboard recorder. Then they decided to make a virtual keyboard and block typing: problem solved.

I know that it is not 100% safe, but if it is good for the banks it is good to most of us.

The lesson here is: we should look around before starting with solutions that uses things like Javascript that I can disable in the most stupied browser.

I am starting to believe that the microwaves around us are burning our brains.

sexta-feira, 5 de dezembro de 2008

When the people that should know, doesn't know!

Today I’ve spent some time reading a set of documents at the company. It is incredible how official documents and manual has a lot of misunderstanding, things take lead to a wrong set of concepts and ideas.

It is important to have good concepts and solid knowledge, mainly to use the tools available for us. In this post I am showing small phrases and I would like you to read it carefully, you will face some amazing texts (by the way, I have translated them to English). 


The PowerDesign implements a Use Case Diagram and its objects using a OOM – Object Oriented Model. It was defined by the Methodology that all the Systems will have a OOM, called CAU (Use Cases), and all the functional requirements specification will be inside of this model.

First of all, you cannot implement a Use Case Diagram in a tool, what the tool does is: provide ways to modeling a Use Case Diagram and write a Use Case Specification. Next, Use Cases are not related to Object Oriented Modeling, they are related to UML (Unified Modeling Language), they are used to describe the responsibilities and boundaries of the system.

At the last, functional requirements are not Use Cases or vice-versa, when you put them in the same level you end up having a functional decomposition. Absolutely you don’t have a use case for each functional requirement. Use Cases represent what the actor wants from a system, not the functions of the system.

Lately we will see an example of it.


In truth, the Object Oriented Analysis is quite simple. Their concepts are closer to the human comprehension than the essential or structured analysis. In fact their functional definition is oriented to the user comprehension of the system, which doesn’t need to have any technology concept.

It is true that OOA is not related to technology concepts (I am assuming as technology concepts: programming languages, SQL, etc), as it isn’t true that the user can comprehend OOA. You should remember that it is a set of concepts and normally notations that you must know to understand it.

So at the end you cannot show it to your user, unless he know the concepts.

In fact their functional definition is oriented to the user comprehension… well I don’t know why it is true? What do we have is a highlight in the objects of the system, but if it is not well modeled the OOA will not show the user comprehension of the system. If you do the right thing doesn’t matter the tool, it will be right.

The benefits of the OOA are others like abstraction, where you can first look at a high level, and getting deeper and deeper as you know more about the problem scope (but I should say that it is not the only benefit).


The resistance to the Object Oriented Analysis happens because most of the people look at it as something advanced. In fact it has extraordinary concepts, for example, it is possible to automate the code creation 

OOA = automate code creation? What kind of insanity is it? You could say that from UML tools can generate code for you, but OOA, no way. From a language you could generate another language, doesn’t matter if it is OO or not.

Code generation is sure before OOA and it is not limited to that, for example: BPMN (Business Process Modeling Notation) is not OO and can be used to generate code.


But to create the methodology documents will be necessary only a small part of the Object Oriented Analysis, the Use Cases. That were already being made in the old documentation, although it was called as Requirements by functionality. 

I will say it again: Use Cases are not OOA. If someone makes just Use Cases he doesn’t need to know anything about object. And again: functionalities are not Use Cases.


All the modern tools for system modeling, among them the PowerDesigner, implement the UML

You don’t implement UML, you provide tools to draw, write, read, do whatever with UML, but it cannot be implemented.


In short, each system functionality must have a Use Case, describing how the user will interact with the system, in the strict context of the functionality.

Use Cases are NOT functions. A Use Case represents a situation where the user uses the system, to use the system a user can interact with one or more functions of the system, and a function can be used in one or more use cases, simple as that.

When you put them in the same level, you end up with a lot of small Use Cases that aren’t really cases. 


…The UML says that its name may have any amount of letters, numbers and most of the special characters. As we saw, to the Methodology the rules for naming are: CAU-[Verb in the Infinitive + Object]. Let’s take the Order as example:

                CAU-Make Order            CAU-Verify Order           CAU-Cancel Order 

First: Use Cases are not bind to specific objects. One of the first steps in OOA is to extract objects from a Use Case (when we are using Use Cases), so you cannot name them by their objects, mainly because a Use Case will interact with more than one object at the same time.

Second: Creating  Use Cases like Make Order, Verify Order, Cancel Order, Whatever Order means that we are writing functionalities and Use Cases. In this situation the user is interested in managing his Order, so we should have something like Manage Order; put yourself as a user and imagine what do you want from the system: you want something that allow you to manage your order, so it is your Use Case. For sure inside of this Use Case you will make, verify, cancel, delete the order.

In that situation you could have another Use Case that is something like Audit Order (it is reasonable that the user wants to get information from the Order and some processing on that, so you will have another Use Case).

As people say: not too much to heaven, not too much to hell.

 

An actor could be anything that communicates with the system. An actor could be the system user, but it could be an equipment, another system, a paper, and so on. The actor always interact with the system, but it doesn’t belong to it.

Actor are things that interact with the system, for example data bases are not actors (but they communicate with the system). And I cannot imagine how a paper could be an Actor. It is important to have it clear, otherwise you end up with Actors like, reports, screens, and things like that.

We should imagine an Actor as someone interested in your system, like the user, another system that receives data from us, and so on.

quarta-feira, 3 de dezembro de 2008

Test on demand???

It looks strange, but it is true! There is a company at USA that offers a test on demand.
They are a pool of testers, you registry your software that and they test it for you.
I don't know if it works, but it is a new idea.

Take a look at their site: uTest, also there is a article TestCrunch that talks about this company: uTest raises $5 Million More For Crowdsourced Bug Testing.

Interesting isn't it !?!

sábado, 29 de novembro de 2008

SPDS - Stupid People Developing Software

Yes, that is!!!!

We are just too stupid to develop good software, or even, to develop a software in the right way. I have just changed my work place, and I am still looking at super heroes all around. I don't see people worried to make the thing in the right way, just to make the thing like a super vilan.
Like a super vilan? Yes that is: instead of just killing the hero they need to create a BIG weapon and tortuous plan, just like us developing software.

If you need to create a file, why don't you create a validator for that, and use it to test? Noooo you need to send it to someone that will read, spend a day to give you an answer about. Or if you integrate with another system, why don't you start makeing good boundery tests? Noooo we still need to call everyone.

You it seens that things are only good when we need to spend at least 5 weekends working. The most that I like from Agile is fast deploy to the user, but no one cares about it; 1, 2 or even 6 months of development and a deploy in the last possible week, is it clever?

No it isnt't. Come on people let's put our brain to work, let's stop playing Superman, let's do you job as we are supposed to do: with wisdom, not just inteligence.

I'AM SICK AND TIRED OT IT!!!!!

sexta-feira, 28 de novembro de 2008

Dealing with record files

Have you ever worked with COBOL? Do you remember the DATA DIVISION?

Well in fact it doesn’t matter, probably if you work with Legacy code you will need to read or generate fixed size file, those files that the record is specified by the length, and probably you know how boring is to look at them and discover if the data is right or not.

Actually I am working with that kind of file and after some search in the internet I have found a interesting project: RecordEdit. There you can import a Cobol descriptor of the file and the program will be able to understand the file and split it to you.

Take a look, it is quite good and it saves a lot of time.

Just a advice: it is good to remember something from Cobol if you want to import some copycook, things like start at column 8 and end up at column 72 are still alive.

sexta-feira, 21 de novembro de 2008

Prototyping

Do you remember why the spiral development lifecycle was created? Exactly: because of the prototyping. At the beginning the idea was to prototype a little bit, develop a little bit, and this thing goes on...

Well I am not here to talk about the spiral development lifecycle, I am here to talk about prototyping.

There is a lot of ways to prototype a application, most of them are related to develop a preview of the software. But let's say that we want something more simple, and fast; basically a draw of the screen.

In that case most of us end up letting your Picasso goes out and get into some software like Gimp, Photoshop or even the PowerPoint. It is possible to draw a screen with them, sure it is, but we can use something born to it!

Here I would like to show you a Firefox 3 plug-in, free, light and enough for most of the tasks. But before saying the name, I would like to let a word: Scketching. If you need to search for this kind of screen draw it is the word.

Well let's go to the plug-in: Pencil Scketching. Download, take a look and enjoy!

quinta-feira, 20 de novembro de 2008

Diamonds from a software source

I am going to post here so diamond that I have found in my short life as a programmer.
Some of them I will need to translate to english, but you will get the idea!



private void InicializaMenu() {
TelaAtual = "3";
lnkDadosCliente.Enabled = true;
lnkDadosRisco.Enabled = true;
lnkSelecaoPlano.Enabled = true;
if (TelaAtual == "4") {
lnkTermoAdesao.Enabled = true;
}
}

Can you tell me the reason for the IF? It is a production code!

domingo, 12 de outubro de 2008

Writing java code on you websites

If you are used to write blog posts, wiki pages or even documentation you will endup in a situation that you need to write a code.
It is nice to have you code with color, different font or what ever. Doing it by hand is paintfull, so why not to use a plugin for that? (Ok it is for eclipse).

Are you interested on that? Take a look on Java2Html.

Managing plugins on Eclipse

Have you ever asked to yourself if it is really necessary to copy your plugins into the Eclipse diretory and make everything a big mass?
No it is not necessary to make it, take a look on this IBM article: Manage your Eclipse environment, you will be amazed how easy it is to make things organized.

Testing your equals methods

We all know that testing is something important. But there is some situations that writing a test code could be quite confusing.
One of this situations is how to test a equals method and ensure that all the attributes are tested correctly. Most of the time we just test if all the fields are equals or not.
It is ok, but it is far from being complete and usefull.

Here is a pattern that you can follow and it will insure that all the fields are being tested correctly:

  1. Create two values for each of your class attribute, with different values between them;
  2. Create two objects, instances of the class that you want to test, call one as base and the other as ref;
  3. Make this block of code for each attribute (it doesn't matter the sequence):
    base.setAttribute(ATTRIBUTE);
    ref.setAttribute(DIF_ATTRIBUTE);
    assert !base.equals(ref);
    ref.setAttribute(ATTRIBUTE);
    assert base.equals(ref);

Making things like this will insure that your test code for equals works perfect. Let's say that it is a little bit painful to make it for a big class, but of course you could automate it.

sábado, 11 de outubro de 2008

Where can I store my project?

Must of us have small projects in mind, something that could be done in our free time. The purposes for this kind of project maybe as big as the universe, but basically we always face with some new technology or things like that.
Anyway one of the requirements is where to store it? How do I control bug tracking? And mainly, is there any free place that I can have all of it?
The awnser is YES, there is!

If you search for it you will find a lot of places, but I have been working with two of them. Assembla and Incubadora FAPESP. The second one is for academic and open project, it offers a lot of tools for knowledge publishing.
The first one can be used for your personal projects, as for your open source projects. Assembla uses Subversion, Trac and offers a wiki engine for your project pages, in fact it is available a set of webservices that allow you to integrate it with your automated stuffs, like for example your CI server.

It is worth to take a look at Assembla, it is a good place to store you project. Of course if you want more advanced stuffs you can go for the payed version, although I couldn't find any necessity yet.

Have a nice project.

domingo, 21 de setembro de 2008

How good is your software team?

Last friday a friend of mine send me a interessting link. It is a post from Joel Spolsky about software team quality.
On that post it is proposed 12 questions to analyse your team quality, I don't think that it could garantee you team quality, but for sure missing something like these could cause some impacts on your team quality.
Take a look over there and see what do you think: The Joel Test: 12 Steps to Better Code.

domingo, 10 de agosto de 2008

x86 emulator in Java!

At this moment I couldn't imagine any real application for it, but it doesn't matter: it is fun!
The JPC is a x86 emulator and the team was able to run DOS and Linux in a applet, completly open source it is a great knowledge source.
Take a look on their page, try it playing Lemings or other nice game: The JPC Project: Computer virtualization in Java.

sábado, 9 de agosto de 2008

Getting started with Spring MVC

If you are looking for a tutorial to let you have a first contact with the Spring MVC take a look on this post from Jeroen van Wilgenburg: Getting started with Spring-web-mvc and the Spring IDE-plugin – creating a simple web application.

quarta-feira, 6 de agosto de 2008

Simplified DAO with Spring and Hibernate

I know that it is nothing new for the Spring and Hibernate developers, but it is a good entry point for those frameworks or even better, what you can get from them.
Take a look on this article from Unruly Rambling: Spring and Hibernate, Simplify the DAO layer and this one from ONJava: Persistence in Spring.

terça-feira, 5 de agosto de 2008

Library for GUI programming

If you are involved with GUI programming you should take a look on this framework: Fuse.
Fuse is a lightweight resource injection library specifically designed for GUI programming.
Also take a look on this JavaLobby article: Easier Custom Components with Swing Fuse.

segunda-feira, 4 de agosto de 2008

Console application

Well, this post is absolutely not for Linux users. I know that the users of all the systems based on the Unix had good options for console applications, but and the poor Windows users? Are they dammed forever?
In fact not, it is always an option to install Cygwin and be happy, but a option not that heavy (and for sure not complete) is the Console:
Console is a Windows console window enhancement. Console features include: multiple tabs, text editor-like text selection, different background types, alpha and color-key transparency, configurable font, different window styles.
It doesn't have a set of applications or something like that, but it provide a console with some nice functions like always on top or different configuration files.
Take a look, it could be usefull for you.

domingo, 3 de agosto de 2008

Open Unified Process

Probably everyone have listened about Unified Process and all the variant process related to that. The OpenUP is also something based on the Unified Process:
What is OpenUP?
OpenUP is a lean Unified Process that applies iterative and incremental approaches within a structured lifecycle. OpenUP embraces a pragmatic, agile philosophy that focuses on the collaborative nature of software development. It is a tools-agnostic, low-ceremony process that can be extended to address a broad variety of project types
Take a look on this documentation, it can be a reference for you: OpenUP

Want to build a successful web app? Then it's time to Get Real.

It is the title of a online book. Reading about that it looks a little bit extreme, but you should always take the ideas, digest it and make it worth for you.
Getting Real: The smarter, faster, easier way to build a successful web application.

Does your software provide a help?

It doesn't matter if it is online, offline, command line, what-ever-line: your software should provide a help to the user.
There is a specific software engineering discipline to that (I will provide some links after), but you can start with some implementations for a help into your application: JavaHelp System.

I know that it is nothing new, but it if you don't know that you should take a look. It can give you some ideas.

sábado, 2 de agosto de 2008

TopLink open source?

I have been outside of this world for 2 months, but now I am back.
And reading old news I saw this one: TopLink Makes Transition to Open Source. Yes that is true toplink guys, it is going to a open source project and it is reference for some new technologies.
If you are a old toplink fan or you are interested in new standards take a look on that, it is worthwhile.

sexta-feira, 13 de junho de 2008

Quaere

A different concept framework to add queries to your java programs:

Quaere is an open source, extensible framework that adds a querying syntax reminiscent of SQL to Java applications. Quaere allows you to filter, enumerate and create projections over a number of collections and other queryable resources using a common, expressive syntax.

Just for your information it is based on a LINQ to SQL: .NET Language-Integrated Query for Relational Data.

Fluent Interface design style

It is always good to get in contact you new design styles and keep our knowleadge up-to-dated.
So take a look at the FluentInterface, proposed by Martin Fowler, probably you will have already seen that.

quarta-feira, 11 de junho de 2008

Legacy system

The term Legacy system is widely used in almost any software engineering paper. It could be a lot of things, like a Mainframe, Old system in CLIPPER (do you remember that), C, Fortran, Win32, so on.
When we talk about SOA, MDA, Mule, connector architecture, etc there is always a reference to the advantage of connecting to the legacy.
Although many says about it few have a way to test it or even he is interested in testing it. But let's face, it is important to have an environment - mainly for architecture concept tests.
Among all these legacy systems the most complicated on is to have a Mainframe environment running, most of the time we just create a mock for it. But have you never desired to put some kind of system up and running? Or you have never been interested in know how the big-blue works?
Well if it is your desire as it is mine, take a look on the following link:
The Hercules is only the emulator, it is necessary to install the OS, Subsystem, Compilers, running system, RACF, VSAM, ISAM, etc. Looks complicated? Yes it is. But try to read this document for a brief introduction, please it is a old work from university
  • zOs (portuguese).
I am not a specialist, but I know more or less how it works, if you are interested I can give you some tips.

terça-feira, 10 de junho de 2008

Let's play?

There is many ways to learn how to developt using Java language, but I should admit that IBM offers three great ways and both are really challenging: gaming.
The idea behind is to create classes (using all the widgets from Java language) that will be used by a gaming program. The first one is to create a robot, that will fight agains other robots, the second one is to create a car to run in a rally and the third is to create peasants and knights, conquer the world and increase your medieval kingdom.
Besides the Java knowleadge that you get coding for these games you also increase your skills for artificial inteligence.
Let's play?

Lightweight development environment

Yesterday my deskptop crashed again (ok, it is not a unusual thing to happen), and now I am stuck with a old notebook (P233MMX with 64MB and Windows ME).
I know that I cannot expect something really amazing from it, but we do not have a lightweight development environment. In that notebook I cannot expect something more complex than a notepad.
It is obvious that I will not be able to use something complex like Eclipse IDE, but most of time we do not need something like that. How much time do you spend waiting for plugin loading, or any other nice stuff that you never use.
I tried some light source code editor, but nothing really amazing, what you normally get from then is a code highlight. In my opinion what we need in these kind of situation, and in almost all the other situations, is something simple that can integrate easially with external tools (that will make the dirt work when you need it).
Let's agree that features like code refactoring, code highlight, online error report, auto compilation, etc are nice and really usefull, but we get to much used to it. Beliave me that it is difficult to work in a simple source code editor, sometimes it is important to come back to something simpler and recicle our base knowledge.
Remember: without a good base we cannot make a building that reach the sky.
For me as a homework: try to find tools for a lightweight development environment (advogates of JEdit, VI, Emacs, etc can post comments about their advantages).

domingo, 8 de junho de 2008

Subjects

One of the most difficult part of writing to a blog is to find out what subject to write about.
I would like to invite you all to purpose something, ideas are always welcome. Fell free to put "almost" anything on the table.

Naked Object Architecture

Probably you have already listened about Naked Objects. But do you know what they are?
Basically it is a architecture and a framework proposed/created by Richard Pawson, as a Phd thesis. It is based, more or less, on two concepts: OOUI (object oriented user interface) and Domain Objects.
The main idea behind them is: you develop the domain object (also know as business objects) and the framework will handle the user interface automatically. Them the users will work directly with the domain objects.
As all architectures it has pros and agains. As pro we can say that it has a fast time development, as again we can say that all business logic should be at the domain objects. In fact there is more pros and agains (these are just the first ones that you can notice).
Although many of you can say that is just for mickey mouse software, I don't agree. Let's face that some software are basically changes on domain objects, for example, those famous C.R.U.D. application, where usually we handle legacy data in the same way.
Why should we care about spending time developing and complete application? But remember that we must know how far this application is goint to, it could become a nightmare to maintain.

It is just a brief introduction to naked objects, I am still reading the articles and the thesis. If you want more information about that you could refer to these links (at least I am using them to learn more about it):
I think that is not necessary to tell it, but I will say it anyway: naked objects are not java or java related. It is a architecture and a framework and as it is it could be implemented in any language and it could be combined with any other architecture, like client-server, web, etc.

Terminology 2

For those interested in another IEEE document terminology (sorry for those I don't have any link, but I have the document - just send me an e-mail):
  • IEEE 610.2-1987: IEEE standard glossary of computer applications terminology
  • IEEE 610.3-1989: IEEE standard glossary of modeling and simulation terminology
I hope it could help to make us communicate better.

Terminology

We all know that communication is a great source of problems, and it is not different in software development.
Most of the terms that we use comes from a common sense of its meaning, but it is important to have a source for them. Although the dictionary is a great source for terms (not only the ones related to the software) we need to reference to something more specific.
Talking about software engineering there is two great sources for papers: ACM and IEEE. IEEE released a document: IEEE 610.12/1990 - IEEE Standard Glossary of Software Engineering Terminology, with some terminology. Even if it is from 1990 (a little bit old) it is a good place to start.
As all IEEE documents you are supposed to buy it, but you can read it at this link: IEEE 610.12/1990

sexta-feira, 6 de junho de 2008

Is it dead? Nooooo...

In my last company I was still using 1.4 and I believe that in the previous company it is also true.
But folks you need to move, just take a look on this article from javalobby: Help, I'm Still Using Java 1.4!
Let's face the problem and fight agains it, let's move to 1.5.

Help me...... I am a support analyst..... support..... what do I support?

After my post of yesterday I got an e-mail with this text: "Help me...... I am a support analyst..... support..... what do I support?" (free translation, the original message was in portuguese). It is something that most of us should worry about, I have a list of job applications and from 14 jobs 5 jobs have as title Support Analyst.
Let's try to understand what this kind of professional does: first of all I investigated over the Internet references and descriptions to this job. The most direct description about it I got from wikipedia (in portuguese, no reference on english version), I know that it is not a official source, but it can provide us with a good start.
Here it is: "The support analyst is the professional, with academic degree in computer (in general a Computer Science Bachelor) , responsible for the TI infra-structure of a company or organization."
Woooo... that is great, imagine someone responsible for all the TI infra-structure of a big company like IBM, Microsoft. I don't think that it is a really specific job title. I suppose that the author of the wikipedia was thinking about someone that support the desktop users, something like: SO installation, network configuration, and so on.
Well I agree a support analyst could do that (let's forget about the meaning of the title, I will come back later), but not only that. I have met a lot of support analyst that doesn't do that, in fact they support some specific software.
Then we come to a different kind of analyst, someone that is a application support analyst: they support a specific application, maybe some commercial one or a company application.
But even this situation is not the last one, a "support analyst" could be a knowledge base for some specific part of the IT world, like a framework, programming language, etc. In my point of view, this kind of professional is more like a XYZ specialist than a support, at the end he will make more than support the users, he will teach the users.
Anyway this job title makes me fell a little bit uncomfortable:
  • analyst is someone that get the problem and make some analysis on that in order to solve it - the professional will do that in most of the cases, but not always.
  • support is someone that helps another one, that offer a comfortable bases to the colleague work.
In my point of view, these two words together mean nothing, although most of us can understand what it means.

To finish this post and answer the title question: you are not a support analyst, you are more like a specialist, that is right that you offer support to the end user, but in most of the cases you are more like a knowledge base. At the end in your work you don't solve problems, like a support guy, you offer possibilities. Is it right? (ps.: to make it understandable to everyone, this person works in a department responsible to create a development framework [after we try to understand what does it means], and he works as specialist of this framework, given courses, support and whatever is necessary).

Remember: in our job we make a lot of things, our title should represent the most important of these ones, or the greatest of them (if these functions are a somehow related).

quinta-feira, 5 de junho de 2008

Sorry, what is your job?

In my quest for a new job I have found a lot of announcements with some funny job titles. Even in my last work I had a visit card as Software Engineer.
Let's think about it a little bit: what does a software engineer do? Well, in that case I used to be a programmer, as my collegues.
Right now I have at my side the book Software Engineering A Practitioner's Approach (Roger S. Pressman) and it has more than 800 pages. It is difficult to imagine that someone apply all these knowledge at the work, in a simple function. Let's take another kind of Engineer, like the Civil: some are specialist on bridges, other houses, other highways, and some other parts (I don't know - someone can help me on that).
Anyway the point here is: Software Engineering is a set of disciplines and as it you are supposed to work on one of these disciplines, not all of them. You could be a analyst, a designer, a programmer, or anything else.
So next time that someone ask your job or want to make a visit card for you, think about your title - remember that it shows your knowledge about yourself and your work.