Posts

Showing posts from 2014

Flood and Shallow? Deep and Breath Studies

Image
Too many information, is not even a joke. We live into a high information overload. But how much is useful? Sometimes i think is just noise, most of times more noise them anything but there is good stuff in the middle so it requires us to filter. I link to have a directions otherwise you might got lost into the middle of the news feed, twitter and flood of infoq, youtube and vimeo videos. In the past i got my left reading a lot but most of not that interesting or useful to me, luckily today we have better tools like twitter and prismatic but we still have to deal with the overload and flood. Sounds like i`m saying you need have a big data stack for you to figure out what todo but is not. So for me starts with the passion, so whats are your fields of interest or what are the things you want get better, i try to not focus in so many things at the same time but 4 areas most of time.

Endurance: The Missing Attitude

Image
Complexity is the center of the universe today. Many things are important to have success and archive great results in life and work. Endurance is a attitude that is missing. Actually when i look people that got great results - all these people had endurance. Good things dont come easy, people talk a lot a about several attitudes now a days like entrepreneurship or creativity but they are focusing on the wrong sides of the attitudes. Nothing great comes fast - So what is the point of sprints? We need test ideas quickly and throw they away right? thats our lean startup FAST FOOD mindset right? I`m saying that wrong but IF you belive in something, in a vision, in a direction you will need endurance.

SOA/MSA Backward Compatibility

Image
One of the real game changing benefits of SOA / MSA(Microservices Architecture) is flexibility. Flexibility give you power todo things as you wish, in order to have flexibility you need have decoupled things but hold on a second, in a service oriented world everything is done via a contract and services are coupled to this contracts. How could you still have flexibility if the contract changes you need rebuild all consumers and deal with the changes? Even worst than that - whats makes SOA different from webservices or procedures calls on the data base? (remember soa/msa is not about technology is about principles and design/arch.)

SOA Service Anatomy

Image
Working as a consultant many times i raise the bar of the role architecture in great software. As solution engineers we often talk about software architecture. When we are working with SOA / MSA (Microservices architecture) we need realize that there is more than one architecture. You could and most likely will have a middleware or container or bus or platform you do your business work but each *thing* needs to have its own architecture. For SOA/MSA the citizen of first class are Services, so basically you work with Services and you just "see" services, in the end of the day what matters is raise the level of abstraction and leverage from that in business perspective.

SOA, Micro services and Isolation Evolution

Image
Amazon, twitter, linked in, eBay all this guys was dong webservices and evolve to soa and now they are at the next step the micro services era. This is one of the most hot software architecture topics on the it industry right now. But how completely now new this is?  I would say for maybe your surprise, not so much. Microservices are SOA. IF microservices are soa whats the difference in the end of the day, well i gonna try to explain it here in this post. Short Answer: Is all about isolation, is all about have independence. Hold ON: SOA was about that as well :-) Yes thats true, i`m not saying soa is invalid of something like that, SOA was more focused on some architecture principles and big architecture concerns but MSA(Microservices Architecture) focus more on operational capabilities.

The issue with words

Image
When we are the the school and university we learn how to classify things. Thats pretty much into everything, could be an ontology thats present on the idiom or could be a system present in biology. When we go down to the IT world and also people world we have some problems with words. The problem is not related to a common ground it self but the fact that words actually become blessings or crusts based what people understand about it. This could sound awkward but more i think i bot it more i think we need stop using words. :-)

Sketchnotes a lot of fun

Image
In 2013 a friend of my showed some ideas around taking notes, drawing, doodling, visual facilitation back on the time i was in India. Today i`m at Barcelona and i had the opportunity to have a 30 min talk from him, was quite fun and i appreciated a lot. So thanks for the talk and the books  Tony . The most cool think was the fact that you can do a very simple thing we often stop as we grown, that is drawing and is fun because it keep you very active and this could be very useful in meetings, conferences, talks, etc...  Another awesome property of this is the fact that you can easily get rid of noise and distraction and thats really good.  I had lots of fun doing it, this weekend i was doing some train travels to know some of cities around Barcelona like: Montserrat and Tarragona and i was practice some notes(granted i still need find a good precision pen) but i could have fun and keep me very focused another great thing, amazing how we got focus doing this. :-) Here are some co

Driving fear out through passion and patience

Image
If you want do something why dont you do? Most because there is fear around your, sometimes this fear is real other is not, in business fear will always happen and for some stuff you do you always will need to be careful. Some organizations or systems are more complex and political tham other but you need be very careful because sometimes things are not impossible as we think they are. Is easy to see things as worst as they are because we fell safe this way. So how we overcome fear? For me is a matter of passion and patience, first of all you need to love what you do otherwise you wont be able to drive any change, secondly still talking about you passion you need to be yourself.

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 experience

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

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. 

Agile Retrospectives as Rock Band Show

Image
Agile Retrospectives to me are like rock shows. So really depend of the moment and really happens this way for me. Like a rock concert depending of the moment you want to mosh or just be nice and relax or be happy and sing with the crowd. For me software development is like music, so there are moment where things are more calm, other moments are more like a rush and other moments are just transition between moments. So what are the moments? It`s really depend on how your team work and what you do, but lets say classical software development and see kinda of 3 big moments. This are not phases like you might think in RUP, but are not that different ideas, i like to think this trough the music so are kind of different rhythms or moments of a single song. So when you do the agile retrospective first of all you need to acknowledge with moment is the current one, it could be a combination of several things but it definitely will have a kinda of weather on the current moment the t

Inheritance + Mixins *with* another solution

Image
In previous post i was talking about some alternatives to classical IoC/DI. I`m not here to argue whats bets or worst, the 2 approaches have advantages and cons. Most classical OO languages like JAVA and .NET tend to fix things at runtime. Java for instance all happens in runtime, spring context. JSF context, Hibernate/JPA context, reflection(memory), CGlib, proxies, etc.. In FP languages that are children of haskell like F# and Scala things tend to happen as much as possible close to the compiler and thats has good and bad things like everything in life. In java or .NET you dont have multiple inheritance like you do in C++. So another approach would be do inheritance and work with the ideas of Modules. Some people call this: Thin Cake Pattern, for me is just multiple inheritance with syntactic sugar. As long as you do it only for classes/traits and dont do it for values i think is ok and IMHO cleaner than the cake pattern.

Pure OO, Inversion of Control(IoC) + Dependency Injection(DI) and The Cake Pattern(FP): Whats really matters?

Image
Software development continues to improve, once you add new languages, design concepts, paradigms(like functional programing) we start having new ways of doing things, so whats really matters? should i change somethings and embrace everything or should i change nothing? In this post i want cover something if you was java developer was the central idea around java development for years. Spring Framework dominate the fields for more than a decade. The real question is not if  you should be using XML or annotations(like Guice ). Either if you should go XML or java Annotations. Thats kind of old discussion, so basically what are the options now a days?

SOA has Roots in Agile and Functional Programming

Image
SOA it`s about software architecture so its about an overall solutions for a business.  Thats what the 'A' stands for. Behind this we got Service Orientation as the main paradigm of doing some, its a way of thinking and it has principles like OOP, FP and Agile. SOA got popular around 2k years when business was moving to more complex functionality and more and more data. Them it came several buzzwords and vendor-like things, but soa was never about technology was always about principles and a specific way to think, see and build things, the service orientation. To capture this view a group of awesome people created the soa manifesto .

Streams, Map, Reduce and Filter on Java 8

Image
For me this is one the most cool things java 8 got in sense of functional programming. This allow todo real functional programming with great benefit for legacy code, not only because we got modern constructs but also because you can reduce a lot the lines of code. The things i dont like in java 8 is that we still need some kinda of structure / definition thats a little bit heavy or not that natural like it is in scala or clojure but thats is something i guess we can live with it.  The other thing is the fact that immutability is not forced as much as we see in other languages the reasons are kinda of obvious it because java needs to respect they backward compatibility rules, whats great because my code can keep ruining into java 8 without any change or a i can embrace this "new" ideas and functional concepts and start taking benefits from it.

Whisky Engineers, please!

Image
Whiskey is great booze. Besides that it has a property called maturity, so basically in this concept as old it get as better ir gets. So you have 8, 12, 18, 21 etc..  This is well recognized and people value that. Software development is more see as shit cheap Brazilian wine, you dont need better than 2 years old and actually if you let ir go older than that it got rotten and start getting worse instead of better. In Brazil Y career  are very popular and basically like in all parts of the globe everybody wants to be a manager.  Whats the problem with that, well for me none but its create some effects. In this life good things came with time, dedication and learning you dont great an awesome whisky in 2 years you need a least 12. Tell me how many developers you know that ave +15 years of experience in the field? It`s sad, as you start getting some level of maturity you are totally pushed by the system and need stop coding and spot being technically. Because people tend see cod

Functions, Method Reference and Predicates on Java 8

Image
Back to some cool stuff around java 8 and functional programming ideas arriving on the JVM with java lets see some other cool stuff around Lambda. You can define your functions with a java.util.function.Function interface that allow you to store lambdas in "objects" and receive and pass it trough methods, so this allow you do high order functions. So lets go down to the code and see some samples around this. There are some samples i coded here with streams, i will cover with more details on other posts.

Consumers and Suppliers on Java 8

Image
I worked with Scala since 2011. Its awesome, its clear to me java 8 copies several ideias from scala but thats fine, i think java 8 is not scala but is cool and its something we can take benefit as jvm users no matter if is coding on java or scala or groovy or jython or jruby. Java 8 finally bring some functional programming ideias into the JVM. Java 8 its hybrid part OO part functional. Java does functional programming using the constructs and the metaphor around the JVM so they sicked to the current design flow, what it make sense on the jvm design philosophy. (They copy some ideias from Scala, sure). Right the idea of this posts is talk a little bit on the @FunctionalInterface annotation and some Consumer and Supplier java.util.function.* functions, thats enable us do functional programming in java. Functional programming is java 8 required structure you cannot just start coding things like you do in clojrue or even scala. Some stuff on the JDK is already ported to @Function

Pick your Side (Slidecast)

SlideCast: Slides: Pick your side from Diego Pacheco

Innovation is the new Quality: Welcome to the (Entrepreneur) Gold Rush 2.0!

Image
Everybody(maybe is not totally fair say that) wants money, thats true. Everybody needs money but people sometimes take different paths or different motivations. Tell me 5 or 10 years ago i didn't know someone from it that wanted to drop everything and open a bar? today the bar is A) A startup or B) Innovation inside a company. In Brazil people do startups in a very different way them guys in US tough.  So there is the insane rush going on everywhere this has being take the buzzword or hype to the next level. People are doing canvas with-out understanding jack-shit on system thinking, modeling or even sense of business, its a plague, like in the agile become scrum and canvas is like the new sticks notes now. IMHO i thins the business model generation is a good book and canvas its a fare tool, besides the fa-act(thanks to the mobile-first, maybe? maybe-not?) that everybody wants do a APP not have a business. There is huge difference to have a business and to build an APP.

Do not Code

Image
What!? Yeah do not code. Coding is dangerous. When you code you create issues and issue cost money. The best thing you can do is A) Find a open source framework/library that does what you need. B) IF you don't have that try to adapt if make sense extend some framework/library or some parts of it, why? Open Source software has many advantages and its not only because is open but because people are fixing bugs for you fore free, most of people don't see this. No Matter how good your code is, you gonna have bugs, i`m not saying OSS does not have bugs, they have plenty of bugs but in fact the they a bunch of people around the world fixing that bugs for you. This post its beyond OSS...

4 Cool things on Functional Programming with Scala

Image
Scala has many cool things around functional programming. I have mixed feelings with some of this features like case classes and patterns marchers, macros, generics, implicits, i question how good they are and if you really need them!? Besides there are some things that are practical and let you as a developer writes less code and code thats is more expressive, thats whats matter in the end of the day.  Some of this things might sound silly but if you consider that systems tend to be more and more complex now a days you will endup have todo more complex operations and less code you right, it would be better.