Tag: managing

Cross arms on professional photos – avoid

cross_arms

I love the body language “science”. It is worldwide accepted it represents about 55% of our communication language. Our silence is more loudly than our words!
There are several positions of the body from what we can infer with some confidence the intentions of a person. For instance, the direction of the feet is one of the most honest parts of our body. They always point our intentions. If someone is talking to you, but his/her feet is pointing in another direction, to the door, for example, you know your conversation should end. Or you want to participate in a conversation between a group of people, and start a talk but no one directs to you, they are just listening but they are not inviting you to the group. This is not infallible science, but most of the body language is spontaneous and automatic, so, when we do it is most certainly sincere unless you practice to control it.
LinkedIn has a lot of posts from human resources companies, where we can observe a lot of professional photos where people stand with crossed arms. I am not a specialist in body language, but from what I know about the subject, this position is associated with a barrier, where the person closes the contact, she/he says is not open to you, she/he is not invite you. Remember the kids, they always cross their arms when they want to silently saying “I don’t want to talk to anyone and don’t anyone near me!”.
I wanted to be sure of this, so I searched more specialized places about professional image related to body language.I was right, this position IS the position to avoid in professional photos. This position indicates closed defensive shield, sometimes anxiety, like you have something to hide, is it sometimes called negative body language. One of the main tasks of sales people is when a potential client has the arms crossed, giving him an object as a gift so he could be “open” to the talk.
You can try a more professional position, with a picture where the arms don’t appear on the photo, or if they appear, you should try to show them doing something related to work, like pointing to a board, writing, etc.
If you belong to human resources you should be aware of this. I think it is not the message you want to pass.

Architecture – Its all about Stakeholders – Part II

<">viewpoints views

In the previous post, we have seen the importance of the stakeholders in the development of an architecture. Because stakeholders aren’t all fluent in technical language we must find a common ground to communicate.

Views and Viewpoints

An architecture is a very complex system. If you try to create one big diagram to show all the elements of the architecture and its relations, it will be a big document, only useful for the ego boost of the architect. The stakeholders don’t need do know everything about the architecture, just the parts with interest to them. For instance, users of a bank application, they are more concerned with the user interface, performance, available information and in many cases with security. They don’t care how the database server exists or how is it connected with web services, integration tiers, etc. The architect should create a set of views of the system, for each set of concerns of the stakeholders. To this set of views, we call it Viewpoint, a part of the architecture. One view always belongs to a Viewpoint, and a Viewpoint can have multiple views. Examples of viewpoints are information, development, concurrency, functional, deployment and so on. We can observe there is a set of stakeholders with an interest in each of these viewpoints.

Let’s see an example. When building a house, you don’t want a unique blueprint with every element of the house, the exterior, the interior, the materials, the flow of the light, water, electricity, streets around, halls, etc. You expect to have several views of the house. You will have some views for the exterior like front view, side view on the afternoon, or if you want to see how the interior will look, you have a view of the living room, another for the kitchen, rooms, toilets, and so on. Other concerns could be how you circulate inside the house, and you expect to see views from the entrance, hall, the accesses between rooms and living room and toilets, etc.
The views about the accesses are a viewpoint related to the circulation of people inside the house. The other views are more related to the context, how the house is presented from outside, for instance.
The house is the same, but the views are different, and directed to specific concerns and different persons (stakeholders). When the architect talks to you, shows how the house will be at the end, but when he talks to the company that builds the house, the concerns will be completely different, they are interested in exact measures, materials, ground, time. These diagrams will have information you don’t care because they are too technical.

Again, the stakeholders are the fundamental piece of the architecture, besides the project being developed for them, even the management activities are around them and depend on them. Your strategy as an architect should have the stakeholders as the main actor on the scene, and all the tactics should include them in every decision.

Now, we know how to talk with stakeholders during the development process of the architecture, it is time to include in these views quality attributes, or sometimes called cross-cutting concerns, like security, performance, cache, etc. We call them perspectives (it is not a consensual term in the architecture community, but the main idea exists and is shared). We will see more about this in Part III of this article.

It is time to respect your professional colleagues

It is time to respect your professional colleague

I have been in the software industry for some years and I always see the same behavior over and over, lack of respect to professional colleagues, not the ones that are present in every day but the ones that are not there to defend themselves, who have developed the current version of the software and now are the excuse to the errors, bugs and problems that arise in the new team.

It is always the same behavior pattern:

A new team (or new developers) arrive to a company to continue the development of a software project, because there were some developers who changed their job and “accepted a new challenge” (well, they have gone to a better place! At least they hope!)

The new developers started to code and continue the previous work

They have difficulties, as we all have when we work in another’s code, because coding is somehow a creative process and each person has his own style, even when following code guidelines.

They want to impress the new bosses, so they will not want to show any weaknesses in their image

So, they blame the persons that aren’t there anymore

I will not say that the new developers aren’t right, but it is always the same path of behavior, and let me tell you, most of the times, and I am sure you will agree with me, the things aren’t right because the development context forced them to develop with those problems, like lack of time, bad management, no requirements, scope undefined, and so on. They have done the best with the tools and information they had at the time, and probably they left the project, not because they were bad professionals but because they get tired of the bad conditions, and so they “have accepted a new challenge”.

There are good developers and persons whose developing shouldn’t be included in their CV, and others who born to be developers: But there are great projects developed by bad developers and bad projects developed by skilled developers.

In the current days people rotate a lot between companies, so remember that after you leave the project the next guy will say the same thing about your work.

You shall respect your professional colleague as yourself.

The Startup developers syndrome

MH900422589When I was studding in college there were these projects that toke me a lot of nights sleep just to deliver them before the deadline. They were database, programming and network projects, the usual preparation/education for the future job or Startup company.

After finishing the college I started to work for IT Companies, and let me tell you I was lucky because I didn’t suffer from “The syndrome of the Startup”. What is this syndrome?

Let me start, first describe how I have observed the IT world.

Along these years since I left school I started to see, that most companies pay for 8 hour/day job but they “ask” for more than this to their developers/workers without any compensation for that, like if it was an obligation. Why?

  • They do not work the 8 hours in a fair way?
  • They deserve less than a car mechanic or a mason? Because these guys if they work 12 hours you must pay them those hours, or your car will not get out from from the repair shop!
  • They don’t deserve the salary?

Of course, the reasons are most of the time others, and I can enumerate some of them:

  • The project manager probably is incompetent, because it couldn’t develop a project plan with the right resources, time and cost, so he hides it with more hours in the project.
  • The sales people just sold a project without questioning the experts to give them the right numbers for resources, time, etc..
  • The analyst team did not collect correctly the requirements so new ones started to pop as popcorns.
  • The manager just wants to improve his revenue in his Excel sheet so his commission at the end of the year can get him to take holidays in a better place, or buy a new car, or get a promotion!
  • “There are a lot of people looking for job these days, if they don’t like it, we can get other’s that are available to work more hours.”

But, for me, the main reason its because the IT workers accept this! Why?

  • Some of them they just think its normal.
    • Why is it normal to be paid for 8 hours and work 10/12 a day? Besides the low quality of life your salary just decreased between 25-50%!
  • They have afraid that if they don’t work these extra hours the managers will not promote them or they will start to talk negatively about them to other managers.
    • First, you will be promoted by your technical and soft skills. If you are very good in these skills, even if you work just the regular 8 hours, against some cultural trends in your company, the company will promote you anyway, because you are good and bring money to the company. Its not the time, it’s the quality and ROI.
    • Second, I know there are companies that talk negatively about the employees who don’t work the hours they expect, they say “they aren’t working as a team”. Well, there is a fallacy here, because if you work more hours and your salary it’s the same, the managers they get a raise because their revenue raises, but the only think you can get it’s a small raise in you salary, so if really you belong to a team everybody should win right?
    • Third, if the company have customers where to put you working, or projects to develop, that fits your qualities you will have work even working only 8 hours. If the company doesn’t have a place for you, you return to the office and after 2-3 months you will be invited to leave, event after you work more than the 8 hours/day.

Other reason that I see a lot, and that’s why I started this post talking about the college is that most developers they have his mind context to start a Startup company, and they work for IT companies with this thought that they are building something for them, like if they will get a reward after the project is finished. But it is so wrong, they haven’t build anything for them, just acquired experience. If in that time they have applied their knowledge to build a project for them then they have acquired not only developer experience but sales, marketing, leadership, entrepreneurship and managing experience, and they have done a great step in their professional life’s. Even if their project/startup didn’t work they have now experience to reach a higher role, like a team leader or manager?

I call this the “The Startup developers syndrome”, because most developers work with a mind set of a Startup but they are working for others where the only reward will be the salary.

NOTE: I am not trying to say the companies are bad and workers explored. There are bad companies? Yes! There are bad workers? Yes! There are great companies? Of course, As I said above, I had the luck to work in some of them! There are workers who just want a career, a job role, and they work extra hours to show to their bosses their dedication expecting a promotion. Sometimes workers need to miss a day or other just to handle private things and lot of companies they don’t discount from their salaries this days or hours, so its fair that the worker offer extra hours when the company need it, I think its very healthy for the relation between the company and the worker. What I think it’s not fair is the company, systematically creating the idea that working always more than 8 hours its normal and an “obligation”.

4 Tools you should have in Visual Studio

MH900398793There are a lot of tools you could install in Visual Studio to get your job done, but from the developers point of view there are 4 that I found very useful and they increase the quality of your work, reducing costs and time, the preferred managers sentence!

These tools they aren’t expensive if you think about the ROI of using them. I have licenses for all of them, they improve the quality of my work, a lot!

Resharper

In one sentence: After you start to use it you don’t want to rollback.

This tools knows a lot about your code, sometimes more than you! A lot of times it suggests improvements to your code that makes you think “Why I have not thought about it before”, it teaches you better ways of developing. It covers a lot about developing, the C# code, Visual Basic .NET, ASP.NET, XAML, JavaScript, CSS, Refactoring (lots of them and suggestions to your existing code), inspections, etc.

The main features are:

  • Project Dependency Viewer
  • Code Templates (yes, you don’t have to write always the same structure for your code, you can create a template for common code patterns, or use templates out of the box, like loops, classes, etc) PS: It seems the version 8 supports Multi file templates
  • A command line Resharper to use in CI Servers or other automated develop tools you have.
  • Lots of refactors
  • XAML support (he knows about XAML more than any of us)
  • You can create plugins to Resharper (develop plugins to a plugin Smile )
  • CSS understanding
  • Unit Testing
  • Configuration of inspection rules, etc

PostSharp

In one sentence: You want clean code, you want this tool.

Everybody knows and talks about Dependency Injection, Aspect Oriented Programming, Clean Code. But have you tried to learn and use this tool?

What if I tell you you can move most of:

  • Logging
  • Try Catchs
  • Transactions
  • Cache
  • Parameters Validations

to their own classes and be reused between all of you application code?

What if I tell you, you can concentrate the creation of most of your objects in one place and just ask for them, and this tool will create the object with all the dependencies in a configurable way?

What if I tell you, this tools can help you to really decouple your tiers in your application?

This is clean code, this is real architecture!

NDepend

In one sentence: You want to understand and visualize you code, you want this tool.

I have already talked about this tools in a previous post here. But, if you want to know about your application, like complexity, code metrics (configurable by you, if you want), diagrams, dependency cycles, etc., this tools will help you a lot. If the quality and maintenance of your code its important in your development you really should take a look at this tool.

NuGet

In one sentence: One tool to rule them all!

NuGet, it’s a package manager, which saves you a lot of time and trouble when installing all kinds of stuff in your Visual Studio. For instance, one of these days I was playing around with developing Windows 8 applications, and after some research it seems SQLite it’s the best database you can use if you need a local database for your app. How to install it and have the DLL references available to use? Install the NuGet Extension in Visual Studio, then use it to install SQLite, and everything its available to use in your project.

Final thoughts

There are others great tools around that you should use too in Visual Studio, but these 4 covers the main dimensions of your developing environment:

  • Resharper, its about code
  • PostSharpt, its about architecture and structure
  • NDepend, its about really visualizing your code
  • NuGet, its about helping you with external stuff to your application

Happy work!

Managers, it is always about people!

types-of-exerciseAfter years of developing, team leader and project management experience I realized that all good decisions, even the technical ones must include all the people. Well, “everybody” knows this, every project manager, team leader, manager,etc. Really?

Lets focus on the team developers.

Imagine you have a project to develop, a software product. You have a team leader and some developers that you will assign to the project. You want to use the new technologies like HTML5, JavaScript and lets add Java, the software product will be an Android app.

The typical decision will be something like this:

1) I have developers and a senior developer team leader

2) They all know Java

3) They all know about HTML5 and JavaScript, because “everybody” knows about HTML and JavaScript. Right?

4) They all know about java and that is the language of the android, and know what is an Android phone, it will be a challenge!

Lets remake the decision looking from outside:

1) You have developers and at least one of them it’s a Senior.

– Great!

2) They all know Java.

– The problem starts here. What they know about Java? The language and some algorithms (even with some years of experience), or they understand how to apply Java in the context of mobile Applications? If this is the first time they will develop mobile applications, they don’t understand the architecture of these applications, how to develop the components, the events, actions, how the hardware responds and send events to the application. The thing here its not the details of the mobile android development, it’s the lack of “mind set” the team will need before start to code, and the result will be most certain a bad quality product, who will need a lot of fixes and rebuilding. (been there)

3) Yes, every developer who have developed before web applications knows about HTML and JavaScript, everybody knows WHAT IS, and the syntax and some tricks, but few, very few understands the JavaScript paradigm and good HTML. Be aware of this before anyone tells that he knows about this subjects. It was only in the least 2-3 years that the JavaScript boom has started seriously, and Senior JavaScript programmers are a very small team. Before this language was only used for events in the HTML, now we have frameworks developed in JavaScript, we even can use JavaScript to create servers like “Node.js”!

4) It will be a challenge!

– No, it will be a disaster for the company and/or for the customers! The lack of know how in the middle of the project will arise and show all the architecture problems not prevented in the analysis phase or by the Senior. And here you will have 2 options: Remake the whole product from the start, which sometimes its not a bad idea (only for project managers), because the team already acquired the know how and know how to develop in a better way and know what to develop. Or fix the architecture, and this for me it’s the real challenge and here I thing “It will be a challenge” makes all sense! Its like trying to fix an already built house into other blueprint, good luck! (you will see its better to destroy and build again)

What’s my point, here?

This was just a simple example, to show that the most common way of thinking can lead to big problems, which by the way are always happening.

Before a great decision to be made in the software industry, first take in consideration the people you will choose. They are people with a specific know how and mind set, and to change that it takes time and it is a process you must consider. You can say, you will put them all in training classes. Great, but don’t expect that some dozen hours will create a miracle and prepare them for big projects. Training just gives you an overview sometimes shallow, other times deep, but after the training the people must play for some time before entering the “competition”. You can see this in sports teams. They are professionals, they play for many years, but when something changes, like others players, tactics (projects), coacher (team leader) they need to practice before the real competition to be successful, or you will ear from supporters “they had no time to practice that’s why they are playing so bad”. Probably you say the same about your sports team. Remember those words in your company and your team.

Once someone said, that 80% of the quality of a product comes from management, not the workers, because they need conditions to develop a quality product or project. These conditions include human resources management, understanding human behavior and acting accordingly!

What to do?

I will not give you a magical solution, from years of experience as a developer, trainer, team leader, architect and project manager, I can help you to take a decision involving all these variables, but as a manager, project manger or whatever manager you must open space for your developers talk about the difficulties and frustrations they have, and not throwing a “it’s a challenge for you guys” like a magic sentence that in the future will bring its fruits (demotivation and consequently quitting), and I will not talk here how much it costs to bring a new member to a team (think about a new player in a team, even expensive he need time paid by the sports team to adjust to the new environment).

If you are a developer, be more open to your managers, and ask them time to practice, to develop small “challenges” besides the training and before starting a big project, it will give you know how, confidence and experience for a bigger project. Your company its not wasting money its an investment. I think it will cost more to rebuild or fix a bad product than to spend time before doing some “virtual work” and then do the real work. A soccer team plays 1-2 times a week, and receive money from the public, but during the week they spend money training.

Evernote vs OneNote

evernote_vs_onenote

As an IT Enterprise professional I am always trying to find the perfect tool to help me with my daily tasks. I have tried a lot of them, and it comes always to these 2: Evernote and OneNote.

This review its not about which one its the best (I will let you decide that), but as a professional I will tell you how I feel about using each of their features.

First a list of Pros and Cons with the most important features

Evernote

Pros:

  • Great community around it, with several products and The Trunk
  • Cloud service with apps in the major platforms, desktop, mobile and tablets.
  • Free apps and applications for windows and Mac
  • Free cloud service if you don’t use more than 60MB/month.
  • Add-ons for browsers
  • Tags management. Very easy to associate to notes and very easy to use them in searching.
  • Geo Notes, if that’s important to you
  • The search feature its very good
  • Collaboration (at least in the Mac)
  • Online editor
  • Related Notes
  • Attach Multimedia files to notes
  • Reminders
  • Share with social networks
  • The applications are free.

Cons:

  • The notes editor could be better. I don’t like the way the tables are created, and most of the times the bullets creation follows a strange behavior after some clicking in Enter and DEL.
  • In Windows the desktop version uses to many space with information about the notes. Ok, its possible to hide it, but then I will have to open and close to find what I want. (I accept some comments here! Its my UI feel, not a problem.)
  • The “list of notes” doesn’t fit well with my expectations. It doesn’t help me find a note with a simple view., I will always have to use the search.
  • Its only about single notes. You cannot create sections, or sub notes or some kind of marks inside a note.
  • The note follows the pattern of a text editor (like WordPad), you cannot write in any place like a real notebook.
  • Ink Notes just in desktop and the note must be or Ink or Text, you cannot have both at same time in the same note.

OneNote

Pros:

  • Integrates very well in the Microsoft Office family products
  • Cloud service using SkyDrive.
  • Apps for Windows desktop, Windows 8 tablet, iOS and Android
  • The limit online its the limit of SkyDrive (starting from 7GB)
  • Search its very good
  • Search with tags its great (although I think the tags management could be much more improved, here I like Evernote system)
  • Great collaboration. I tried to use OneNote online and at same time using in my tablet and the experience was as expected)
  • Online editor its great, very similar to the desktop edition but with some constraints (well, its online)
  • The desktop editor is a pearl. You write anywhere, how you want it, like writing in a sheet of paper. (if you have a surface you can use it like a paper using the stylus). Great handling of tables. You can integrate, convert or use Excel tables in OneNote.
  • Integrates with Outlook and Excel. The editor has almost all the tools you find in the Microsoft Word.
  • You can integrate multimedia files along the note.
  • You can have Ink and text in the same note. Great to take annotations.
  • The online application its free if you have a SkyDrive account.
  • The price of the final product its not expensive if you consider a one time buy. (The OneNote Metro application its free)
  • You don’t have the concept of a note. You take notes like if you have a notebook. (could be a pro or not, depending of your taste)

Cons:

  • The handling of the tags needs a rebuild. Its a menu with a lot of tags already developed. You can create new ones, but its not easy to manage them like in Evernote.
  • You have to buy the desktop version.
  • The mobile apps they have a limit of notes before you have to pay them, unless you have an Office 365 subscription.
  • Its note a very single simple note system, you start with a Notebook with a section and page, not a note like Evernote. Although you can create a notebook for very simple notes or use OneNote’s single notes system.

Verdict

I have switched a lot of times between these 2 great notebook applications. When I want to take fast notes, save links, create list for shopping, simple to-do, or a lot of integration with third party apps in the mobile eco system, Evernote its first choice that comes to my mind. But if you work in a professional environment, and you have a lot of notes in some subject, and the concept of sections, sub notes its more intuitive for you, I think OneNote shines here.

Evernote its great sharing the notes between all the devices and very good to organize them with tags and Notebooks, but the notes are simple boxes of isolated information contained inside notebooks and associated with tags. Its about single notes, not books of information.

OneNote its great organizing information for enterprise or scholar environments. The notes are not isolated blocks of text, they belong to a section/sections inside a notebook. It works like a tree (or a notebook with bookmarks) in your mind. If you want the project X Notebook, with sections and sub-pages, where all is organized like in one place and very easy to find, the OneNote its for you!

Now I am using OneNote, because most of my time its working in IT Project, and I want that each project or company be in a Notebook, and inside it I divide by sections like configuration, applications, issues, daily log, etc., its very easy to find the information without using the tags (I just use them for TODOs and reminders). The editor its a joy and I can use my stylus in the windows surface, which mix very well with the text.

However, sometimes I miss the simplicity of Evernote. Its very easy to take a note in any device and find it using the notebook and tagging. But I will miss the great text editing capabilities of OneNote.


My advice:

– Evernote its about getting notes, tagging them well and then searching, it gives you a lot of notes managing/organizing freedom. There are a lot of third party apps integrated with Evernote. You can, for instance, do a scan and send the photo to the Evernote from an iPhone.

– OneNote its about notebooks and organize them by project, company or class/course or something similar. Its like having real notebooks. Its great for project enterprise environments. (Did I mention the great text editor?)

Video about Science Of Persuasion

If you are a team leader, project manager, negotiator you must understand how to apply these principles. This theory could be applied to any area, but in the world wide IT management it’s a must, for instance if you are a developer and you are overloaded and need to persuade a project manager or business manager, or even someone needing for a promotion, making a presentation… well, if you need a YES to something, learn these skills, learn to apply them to your situation and the probability of your success will increase too! Be wise!

Animation describing the Universal Principles of Persuasion based on the research of Dr. Robert Cialdini, Professor Emeritus of Psychology and Marketing, Arizona State University.

So you think you are a Senior…

– A senior takes the responsibility to find the best technical solution.

– A senior knows the juniors of his team, their limitations and their strengths.

– A senior is proactive.

– A senior knows the business impact of his technical decisions.

– A senior knows that the best solution is not always possible, and knows how to make trade-offs.

– A senior knows that bugs will occur, regardless of his programming skills or of their juniors.

– A senior understands that what matters is the customer expectation, not the quality of the algorithms.

– A senior knows that the success of the project is related to the expectation of the customer and not only according to specification.

– A senior is multilingual, speaking several languages: commercial, technical, professional, end user, other.

– A senior knows when to apply the appropriate language.

– A senior is almost a project manager.

– A senior is almost an architect.

– A senior is almost a sales person.

– A senior is paid to be guilty.

– A senior knows that his job is a transition from juniors to an architect, or commercial, or project manager, or business developer, or manager, or whatever.

– A senior knows that his position its the starting point of the “the rest of his professional life.”

– A senior, sometimes, would like to return to his junior times.

– A senior is a leader.

– A senior must have a balance between hard and soft-skills.

– A senior is always learning.

– The responsibility of a senior is to be responsible for everything!

Effort, control and stress in your projects!

In all projects there is stress. It is up to each of us, control it and reduce it. There are people who only know how to work under stress, and that, damages his/her health, it is scientific and is well known. What to do to reduce stress? This question answers itself with two questions: What level of enlightenment have you about the project you’re involved in? And as a consequence, how much do you think you can “control” the future?

The stress comes from the lack of control of the future, and this happens for 2 reasons: The first is lack of project planning in a clear way for all team members, along with the confidence of the leader who will not “persecute his team developing members” if they cant comply with the impossible tasks times! A well developed project plan, along with a risk plan is a relief for all stakeholders of the project. I think just reading this gives psychological relief and reduces stress!

The second reason is the balance between control and energy expended for such control. A few years ago someone showed me the following drawing:

circles

In this picture, the circle in the center indicates what we control, and the energy we spend on that control. When we move away from the center (things which aren’t in our control, such as other people decisions and acts), the less control we have and we can only hope for influence, that will vanishes the more we move away from the center.

In the center we spent little energy to control things, like our decisions, but when we try to influence, or moving away from the center, we must spend much more energy, like trying to convince others for some decision or trying to control other’s things. If we try to influence things that are very far away from the center we have to spend a huge quantity of energy, raising our stress and causing damage to our health (body and mind).

small_394435153So if you are a project manager, and you really want to manage healthy your team so you can have a very successful project in every way, learn to manage well your energy and of your team, it will give you in a long run a successful personal, professional and social life. Let me say to you some Christian advice “love thy neighbor as thyself”.

If you are one of the team developers, you are not obliged to accept whatever the project manager gives to you, if there’s one thing I’ve learned is: it is harder to say “no”, and is easier to say “yes”, but it is the “no” that define your life. Do not be confrontational, present alternatives, discuss your point of view, if the project manager don’t accept it and the right its on your side, well probably the company is not for you!

This way of seeing things applies to all our life.

photo credit: bubbo.etsy.com via photopin cc

Bad Behavior has blocked 86 access attempts in the last 7 days.

Hyper Smash