Posts

Showing posts from October, 2014

Growing people through Feedback

Image
Feedback can help people to get better if you use as such. Feedback is often a vision based on your own experiences, so if you dont have great vision often could become just a opinion, what the problem with opinions well they may very depending on your humor.

You get better feedback if you feedback process is based on Lean/Kaizen in other words it means you have a culture of continuous improvement with no blame, no pointing finger and learning.

If You dont have the right culture around feedback could just be a form of trade of politician manipulation.  You do provide better feedback to people if you try to wear they sues and think about they on they experiences. You will have success most likely if you help the person to figure out whats going on with her/him. Feedback is about self-awareness, people from outside maybe have a better vision of our problems but that does not mean they know what is the solution.

Are we becoming Software Architects dinosaurs?

Image
What is an architect? What it does? why do you need them btw? Thats really depends on what you belive and how to you see systems.

The IT Industry have some common ground ideas, but often ideas get mixed with different interpretations of the terns and practices.

There are company that say stuff like an Java Architect or .NET Architect. I think this is worng, most likely they are senior developers in java or .net or a architect that knows one of this languages a real architect know more than one language for me. So an Architect is an architect is not an Java Architect. If you just know java could you be consider architect? Today a solution could be using several different technologies and stacks, would a pure vendor/language solution be ideal?


Why Management does not work on Agile?

Image
Today everybody talks about agile, yeah agile is mainstream. Agile become "Management", scrum is better than waterfall but things are not working as they should.

I`m not staying you not need management. As you grown into a complex structure you will need coordination, costs control, and management is need as you get something bigger and complex.

But in order to get it right you need realize when and where you fit management. People talk a lot about scaling agile and i think is funny so little is about engineering. People talk about multiples teams, multiple Product owners, multiple work streams, multiple timezones and cultures but where is the engineering? Deming(The Big mind behind Lean) talk a lot about psychology and the ability to understand systems and they nature.  Go Google you will lots of things talking about teams and so little talking about stuff like: Culture, Engineering practices, software architecture(real one, not power points) and principles.

How do I learn?

Image
Learning is very important. Companies dont pay attention on this. All training activities are so old fashion and people are wasting a lot of create skills because people are just working but they are nor learning.

So this is the first thing to me, work is about learning if you are not learning you are not working you are just being a machine and belive me a bad one because machines can do better repetitive task them us.  There are always a chance to learn something, the problem is that people dont make time to this, instead they are always using the same old tools and approaches. Because is easy an often people feel good to be in the comfort zone, i few awful if i dont learn something new every week actually i got sick.

SOA Contract Testing

Image
One of the most important aspect of a SOA approach is testing. In order to get this right you should have several levels of tests, is very hard to match all things you should have just with unit tests.

If you think on abstractions a Service in Service Orientation(SO) it`s a composed by a service implementation and a contract.

A service could implement multiples contracts. I like to have one contract per service but there are scenarios where you could like to have more than one, for service aggregates or domain segregation cases.

So whats is a contract? For SOA contract is DATA, thats the real contract, but this could be seeing as many things, so i like to thing in some things to define what is the contract.  SOA is about Design so this could change depending of your main architecture design but in the way that i see it a contract would composed by the following elements.

Walking Dojo

Image
I always did unconferences and coding dojos with people i do Coaching. So this time i tought about doing something different. So the ideas is do a unconference talk without computers or slides and do that walking since is spring in south of Brazil and the weather is great :-)

This photo you see is the cover of the event i created. This was very cool because as guys working with software we are always doing things with computers(thats great) but with that we dont stop and something is great to stop and relax and talk about ideas. The ideas was that everybody had to talk and was a simple walking conversation about some cool subject that have some links between each other. We did 2h walking and talking thats was amazing because we did 2 great things, 1 talk about ideas and 2 walk so was good for our mind and health as well. :-) So this is the first post that will explain some of the things i create as a coach, you can see the whole index here: Coaching Catalog.

Focus, Persistence and Faith

Image
I think i lot. I mean it. Our life is so short and spend so much time just doing stuff without realizing if that what we really want todo. Our education is all wrong we dont learn how to learn, we dont learn how to love, we dont learn how to forgive, we dont learn how to figure out when keep doing keep pushing versus when we should say thats enough.

Some people do shine and other dont, why? Maybe because some people refuse to give up, is very easy to give up, actually you might think i`m crazy, why keep pushing into a direction if you have so many choises, you have some many opportunities, well thats depends what is your motivation. The ones who go and make things happen is the ones who dont give up.

Scala Package Objects

Image
So lets talk about this feature most people dont know scala has is the ability to use package objects.

You might dont find that useful since you have do the same with different techniques but i think this is great for the granularity scala have to control visibility.

You can use this feature to create DSL or simple to empower abstractions this feature is compiled so its safe but could lead to bad code if you dont use it with window. Because you can be sharing variables everywhere so this is really useful for module design but  as i sad you need o be careful.

Lombok: Java with Suggar

Image
Java 8 made java better but still not enough, we still dont have some great stuff that is available in scala like pattern matter, case classes, type system and mechanisms like dynamics and other stuff.

So is possible to add some sugar to java code with the Lombok project. We can get rid of several boilerplate code.

The idea behind lombok is very simple it added data on the bytecode but it dont add code in you java class.

Yeah its like a compiler :-) IF you cant use scala yet at leat you can add another jar in your classpath that will make the difference.

So lets go down to the code and see some cool stuff with can do with the Lombok project. You also can check some extensions here: lombok-ext.

Leadership, Coaching and Mentoring are not Roles

Image
Today Coaching, Mentoring and Leadership are hot topics everybody is talking about this.

Looks like everybody wants to be a Coach/Mentor/Leader but i not sure if people really want do this.

This sounds wrong to me, as a Coach / mentor and Leader could sound suspicious say something like that but for me there is a different of letting this things emerge and happen naturally rather than make this as ROLES and try to grow people on this.

I dont belive much in this generic roles, i belive in professions i think you can be specialized and do great stuff but to todo that you need a FIELD generic implementations of this things sounds to me like buzzwords trying to reach out people with something new.

Diego Pacheco Practices Catlog

Image
I`ve being working with Agile coaching since 2009. Started working with agile development / lean in 2007. Along this years as an Agile Coach and as a agile / lean / xp / kanban practitioner i`ve used bunch of standard stuff lets say but also created my own stuff :-)

This post it`s an catalog post, the idea is that i decided to write about some of the practices i've have being doing, don`t expect see default stuff here like planing poker, daily meetings or TDD instead of the you will some some crazy ideias and different practices that have being working very well to me down here in Brazil, i need need say that. Several great Coachs are from London, there the system's, laws, culture and people are different tham in brazil, so so of this stuff might not work for you. So i`m basically sharing for the sake of sharing.

If this practices dont work for you its fine, if they exited all well, hum let me know, i dindt copy anything by design i really come to this based on experiences, i…

Nature: A way to think!

Image
Thats a very interesting thing to think about it. As a software architect i`m always trying to understand the nature of the things.

For a system, you could have some systems that are more sensible to latency or CPU BOUND or Memory Bound or could have other dimensions.

They could be Data Driven or Domain / Behavior Centric or event event centric. If you think about what goes on the system like cars the are driven in a specific road, if you think thought this properties you can think as tickets and them you could have very slow care like trucks or fast sport cars, i would call this ticket profile so you could have fast running jobs or long running jobs.

Solutions / frameworks / libraries are made for specifics natures. Like a sea fish or river fish or urban fish :-)  All same fix but at the same time all diferent ones.

Coaching is the Management

Image
Management is all about goals and compliance. It`s a very traditional approach around some ideias that really sounds wrong to me.

Management is about CONTROL and make people work around a specific GOAL in the way that you can manage people to archive it.

That's great but i dont think thats works anymore now a day. Because people are not bad, and people can learn new skills and you dont need manage the people you need actually managed the system/constraints and other for people not the other way around. I deeply belive in servant leadership ideias, i belive people are great and you should not try to control they, actually you should help they to archive their goals.

The Soccer game it`s a great game. If you think though, the coach its not playing, he its a kind of invisible manager, working things on the backstage. Unfortunately most of companies are like the army. So they basically work around the idea that the most valuable thing is not the execution but the decision, that why w…

Clojure Protocols

Image
So if you remember my last posts:
*  Pure OO, Inversion of Control(IoC) + Dependency Injection(DI) and The Cake  Pattern(FP): Whats really matters?
Inheritance + Mixins *with* another solution
I mentioned closure protocols as an option for the design problems i was talking bout but i didn't not show any code or explain much around it. So this is basically one another approach for you to design your software.