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.
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!
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.
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.
When 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”.
There 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!
In one sentence: After you start to use it you don’t want to rollback.
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 )
- CSS understanding
- Unit Testing
- Configuration of inspection rules, etc
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:
- Try Catchs
- 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!
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.
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.
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
After 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.
The typical decision will be something like this:
1) I have developers and a senior developer team leader
2) They all know Java
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.
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)
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.
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
- 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
- Share with social networks
- The applications are free.
- 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.
- 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)
- 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.
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.
– 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?)
– 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!