Sunday, November 6, 2011

InfoQ: Putting the "re" into Architecture

Presented by Kevlin Henney

Ideas & refs:
97 Things Every Software Architect Should Know
Joshua Bloch: Bumper-Sticker API Design
- Archirecture qualities: Firmitas, Utilitas, Venustas (Robustness, Usefulness, Aesthetic Beauty)
Orders Of Ignorance
- Functionality is an assent, code is a liability.
- Futurespectives/Premortem
- The shearing layers (see Big Ball of Mud): The layers change at different rates
Software visualization in the large
- Scenario buffering by dot-voting possible changes and then readjusting dependencies
A Coverage Metric That Matters

Saturday, November 5, 2011

InfoQ: Patterns For the People

"Patterns For the People" by Kevlin Henney
Ideas & refs:
- Habitability as a characteristic of source code (Richard P Gabriel, Patterns Of Software). Habitability is not the same as beauty.
- People learn only from success
Dreyfus model of skill acquisition
Pattern-Oriented Software Architecture book
Choose Your Own Architecture
- Patterns Manifesto: We are uncovering better ways of development software by seeing how others have already done it

Tuesday, November 1, 2011

You Can Control

Information Flow
You can't often control how much information you are given, but you can control the methods you use to organize it.
Assignments
How do you overcome the lack of enthusiasm that often accompanies the beginning of a dreary code maintenance project? One way is to vary the assignments so no one person is stuck with all the boring tasks. This is in your control.
Knowing your staff 's individual likes and dislikes is critical to keeping them happy. Happy programmers create good code. Disciplined programmers create even better code.
Architecture
Organizational abilities are closely related to programming logic, so don't think that straightening up your desk in a mindless activity. In the same way, creating good software architecture relies heavily on organizational skills and controll of abstract ideas.
Working Hours
Few people on their deathbed regret not having spent more hours at the office. Keep this in mind as you schedule overtime, and be careful to manage the signsof burnout in yourself and your staff.
Expectations
Being real means you will fail from time to time. Being real means that you can't control what others expect from you unless you've made unrealistic promises. Beware of what you promise - this is what sets the expectations of others with whom you work. You'll begin to controll the expectations of others if you're judical with your promises.
Attitudes
Instead of wondering why some person is so difficult, I find it more useful to ask myself why I am having difficulty with that person.

Monday, October 24, 2011

Continuous Reading

By "Herding Cats":
1. Read to keep up: books on primary language, techniques and best practicies on daily basis. (.Net/C#, TDD, OOD)
2. Read to stay aware: forums, newsgroups and logs on things you may use in near future (see Expand Your Bandwidth)
3. Read to grow deeper: to gain a more thorough knowledge about technology and techniques that impact your daily job; (Agile Management, Code quality)
4. Read to grow wiser: other scientific and literary disciplines can offer you real insight into lateral thinking (Coaching, Phsychology, Success stories)

Wednesday, October 12, 2011

"Though success is measured in many ways, the one I find most helpful and operational is being able to enjoy your labor and not lose your passion for it. Passion may seem overrated, but it can put fire in your belly and help you overcome the unpredictable software development world around you. Passion is a fuel that can drive your leadership "engine". Tell your programmers to passionately pursue perfection. If they are seeking elegance and perfection, two goals that can extend coding time, remind them that elegance is obtainable perfection. [...] Work to preserve your passion - it is the only way you can grow, adapt, overcome, and succeed."
J. Hank Rainwater. Herding Cats: a Primer for Programmers Who Lead Programmers (2002)

Wednesday, September 28, 2011

The Core Protocols

Have looked through The Core Protocols V. 3.03 by Jim and Michele McCarthy. The protocol contains some behaviorial and communication patterns based on coaching techiques. Some of them:

Ask For Help

The Ask For Help protocol allows you to efficiently make use of the skills and knowledge of others. Ask For Help is the act that catalyzes connection and shared vision. Use it continuously, before and during the pursuit of any result.

Intention Check

Use Intention Check to clarify the purpose of your own or another’s behavior. Use it when you aren’t expecting a positive outcome resulting from the current behavior. Intention Check assesses the integrity of your own and another’s intention in a given case.

Resolution

The Resolution protocol promotes forward momentum by focusing on bringing outliers in at least cost.

Perfection Game

The Perfection Game protocol will support you in your desire to aggregate the best ideas. Use it whenever you desire to improve something you’ve created.

Personal Alignment

The Personal Alignment protocol helps you penetrate deeply into your desires and find what’s blocking you from getting what you want. Use it to discover, articulate, and achieve what you want. The quality of your alignment will be equal to the quality of your results.

Investigate

Investigate allows you to learn about a phenomenon that occurs in someone else. Use it when an idea or behavior someone is presenting seems poor, confusing, or simply interesting.

Wednesday, September 14, 2011

How perpetuum is the mobile development?

One of the messages from Microsoft Build I got is that the Mobile Development is not a separate branch in Microsoft world anymore. An app once written for Windows 8 (Metro style) is a mobile app by default.
And it is taking into account that mobile devs are of the most demanded currently according to the Panel Discussion on IT Jam.

Tuesday, September 6, 2011

The Fifth Element of The Discipline

It was a bit confised by evaluating people's performance using CAN×WILL² formula. That's because it's not always obvious what prevents one from the top performing - lack of skills or lack of motivation.
Discipline * Skill = Competence formula makes it more exact. And the (self-)discipline mainly consists just of the following elements:

  1. Value
  2. Time control
  3. Focus
  4. Motivation
Corresponding actions to keep the discipline are simple:
  1. Help people understand the importance of things;
  2. Help people to control time by teaching time management skills;
  3. Help people in focusing by teaching them techniques so that they don't forget
  4. Show people how to make their tasks more enjoyable, 'cause fun is a crusial part of motivation.
But that's not it. There is the 5th element. And it is you.
It is you who must lead by example. You must show self-discipline if you want people to follow with similar behaviour.

Monday, August 22, 2011

Rich project status


The status a colleague of mine prepared looks impressive with a lot of  information you can get fast. First of all blockers with red asterisks of being not removed and responsible persons in braces right there. And certainly comments to burndown.    

Monday, July 18, 2011

Software quality characteristics

ISO 9126 quality model for external and internal quality (characteristics and sub-characteristics).
Focusing on one external characteristic of software quality can affect other characteristics positively, adversely, or not at all (From "Code Complete 2")

Friday, July 8, 2011

Textual analysis

To identify the objects and classes in Software modeling, a textual analysis is performed: 
"One of the first steps is to create scenarios that in aggregate model the various dimensions of the problem domain. From those scenarios, you can identify potential objects, behaviors, and attributes. For example, select the nouns from the problem domain as possible future objects. The next logical step is to identify the verbs and verb phrases in the problem domain. These are potential behaviors. Finally, from the scenarios, identify the adjectives or other descriptive phrases that are potential attributes."

Performing the analysis on the higher level of abstraction, apparently it produces what Attribute-Component-Capability (ACC) model operates with: components (nouns), capabilities (verbs) and attributes.

Thursday, July 7, 2011

Nurture Your Passion

Well-crafted software is a position that should be held. It seems that a passion should be considered as another ground to stand:
Take steps to protect and grow your passion for software craftsmanship.

Tuesday, July 5, 2011

From "Solid Code"

- Around 50 percent of the software development life cycle should be dedicated to phrases before coding
- Do not allow implementation consideration to affect the requirement analysis or design
- Do not assume that the software model is correct. Use various best
practices