Sep 15th, 2012 | People, Productivity, Skills
Do you want to get all your tasks done fast and furious? Shore up your spectacular software development work with this post!
The Imperfect Brain
Lets start with the brain – the most important organ for software development work (I would be surprised if you have even more important organ for this job). This biological tool, composed from 100 billion of neurons and many legacy structures inherited from worms, reptiles, mammals and other animals, is not really perfect for programming tasks.
I think I know – you want to have between ears obedient powerful and reliable machine like the shiny new computer on your desk that crunches tasks with the highest performance without taking breaks, emotional drops and losses of attention.
Unfortunately, our brain reminds more an old computer that barely runs your development activities competing with other processes for limited memory and processing resources on the top of overloaded unstable Brain OS.
Yes, writing software is not easy and not the most important biological mission for your busy brain. It is difficult to achieve top mental performance for your tasks, especially, if you are just doing your daily job and not writing the next Facebook in your basement.
How can we still squeeze good performance from our programmer’s favorite organ?
Great mental performance for development tasks
Focused & Productive Brain
Unclear goals – brain confusion with lack of certain direction and understanding what to do
Dissipated Time – absence of dedicated committed time for the task opens rich possibilities to avoid hard work and procrastinate.
Multi-tasking – running several activities in the same time significantly drops your IQ.
Insufficient energy – tired, emotionally overwhelmed or indifferent brain is not productive at all
Distractions – frequent interruptions do not allow to immerse into the task
Mismatching task – too boring or challenging tasks prevent full brain engagement
Brain overload – complex, dull or voluminous information inhibits your brain operational abilities.
There are three elements of your performance
Tasks – what should be done.
Time – how long and what way you work on your tasks.
Mind – mental energy and abilities to get tasks done.
Read full post >>
Mar 20th, 2011 | Job, Management, People
I noticed that three spirits are fighting in the soul of a software developer – Great Artist, Reliable Worker and Selfish Pragmatist.
If you hear a voice within you say, ‘You cannot paint,’ then by all means paint, and that voice will be silenced. – Vincent van Gogh
The first spirit is a Great Artist who pushes our fellow programmer to work on challenging tasks, invent new approaches and seek for self realization. The spirit gives power and desire to create state of art solutions and move forward with learning and practice. The Great Artist spirit is behind the best software; it makes the developer to think out of box, strive for beautiful code and forget everything outside the problem. It is powerful spirit but dangerous for ordinary business – there is no predictability and assurance that developer will remember what client really needs. The developer driven by this spirit tend to reject mediocre, but good enough solutions, will do stuff his own way and go far beyond what is necessary. This developer has zero tolerance to poor code and will refactor most important pieces of code even night before important demo… after testers go home to sleep.
Read full post >>
Mar 15th, 2010 | Expertise, People, Skills
cre·a·tiv·i·ty –the ability to transcend traditional ideas, rules, patterns, relationships, or the like, and to create meaningful new ideas, forms, methods, interpretations
Creativity can be developed and improved. Here is my Theory of Creativity in 3 parts
- Prepared Mind – prepare your mind to be creative
- Right challenges – know what challenges you should embrace now
- Creative ideas – use powerful techniques to get new ideas
I. Prepared Mind
Your mind is the main tool for generating ideas. Empty, timid and rigid mind will not produce successful ideas.
What should be the qualities of the mind to get great ideas and solve complex problems?
- Knowledgeable – know problem domain and other fields that can inspire new ideas
- Flexible – able to vary and adapt the ways of thinking
- Forceful – eager and resolute to find a solution
- Easy – clear and free from stress and fear
- Playful – can surprise and break rules
- Intuitive – come up with ideas without thinking and reasoning
How can you develop these qualities and prepare your mind to be creative?
Jan 18th, 2010 | Expertise, Job, People, Skills
Are ideas born interesting or made interesting? – Chip & Dan Heath
You have 2 options to communicate your ideas:
- Tell people what is interesting for you – easy, but unfortunately, your ideas will be wasted because of other people low interest, incomplete knowledge or disagreement.
- Make your ideas interesting for other people – hard, but you have chances that other people will pay attention, understand, remember and act upon your ideas.
This post is devoted to people who are interested in the second option.
Why should a programmer care about communicating ideas to other people?
It is true, the primary job of a programmer is to feed computers with ideas. But you cannot quietly hide behind a computer forever. You have to deal with other people:
- team – to contribute and explain your programming ideas
- customers – to discuss and build trust in your solutions
- end-users – to make your programming ideas useful for users
- programmers of the world – to share your knowledge and exchange ideas
- capitalists – to sell your ideas
- low tech crowd – to promote technology ideas
Why is it so hard to make ideas interesting for other people?
- Curse of knowledge – once you know something, it is hard to imagine not knowing it and communicate to novices
- Resistance – many people ignore or resist new ideas
- Limited brains – people have short attention span and can be easily overwhelmed by new and complex information
Read full post >>
Aug 11th, 2009 | Concepts, Job, People
Computers are useless. They can only give you answers. – Picasso
Many people (including my mother-in-law) think that computers are becoming so smart that programmers will be no longer needed in the near future. Other people think that programmers are geniuses who constantly solve sophisticated math puzzles in front of their monitors. Even many programmers don’t have clear idea what they do.
In this post I want to provide some explanation to uninformed people what programmers really do:
Programmers are translators of human ideas into the language of computers.
They are a link between two worlds – human and computers. Do you think it is easy to maintain this link?
Read full post >>
Jun 24th, 2009 | Job, Management, People, Productivity, Skills
What you are as a person is far more important that what you are as a basketball player. – John Wooden
People are amazing, surprising and interesting. They change reality with power of thought and make things happen. What is most exciting – all people are completely different in their attitudes and behavior. But this comes with price – it is difficult to understand people and even more difficult to find the best way to deal with them.
Many people, who see programmers as extensions of their computer systems, will be surprised to discover that programmers are amazing individuals too. Programmers exhibit similar to other people behavior, they have different personalities and need individual approach.
I offer in this post a simple theory about Three Dimensions of a Software Programmer that could help to put relations with these individuals on some rational basis.
There are two basic axioms in foundation of the theory
- Constancy – some programmers consistently outperform others under same conditions.
- Variability – performance of a programmer varies under different conditions.
Read full post >>
May 11th, 2009 | Concepts, Expertise, People, Practices, Skills
Reality is merely an illusion, albeit a very persistent one – Albert Einstein
An expert have much better models of reality and methods to build them than an ordinary specialist. The expert, armed with these models, can quickly put pieces of a problem puzzle together, find explanations and solve the problem.
Models can be related to anything – software systems, business domain or your personal relationships. Read full post >>
Apr 6th, 2009 | Expertise, People, Productivity, Skills
Experts do not need rules to make decisions. They have qualities that allow them to consistently make good decisions and show high level of performance under different circumstances without any rules. This post discusses these core qualities that turn a novice into an expert.
rule: prescribed guide for conduct or action
intuition: instinctive knowing (without the use of rational processes)
tacit knowledge: automatic, unexpressed knowledge that provides context for people, places, ideas, and experiences. Tacit knowledge is not easily shared. As Polanyi said: “We know more than we can tell.”
context: the set of circumstances or facts that surround a particular event, situation, etc.
Problems with rules
Most rules didn’t come from heaven. They come from ordinary people. They are product of practice, theories, traditions and fear.
- context-free – rules reflect standard situations without considering your specific circumstances
- limited verification – most rules are empirical and do not pass vigorous analysis, strict prove and experiments
- time sensitive – many rules become outdated quickly in dynamic professions, industries and societies
- overcautious – fear fuels many rules and seeks to protect from the worst scenario, often imaginable
- low skills denominator – rules tuned to match capabilities of the majority without accounting for individual strengths and weaknesses
- misinterpretation – tacit knowledge of experts, which forms base for many rules, is difficult to transfer in correct and understandable form
Read full post >>
Aug 25th, 2008 | People
There is nothing either good or bad, but thinking makes it so. – Shakespeare, “Hamlet”
Generally, we are very tolerant and understanding. We appreciate to work with other people, listen and accept their ideas. Especially it is easy with people who completely agree with us. As for people who don’t… How could we appreciate people who disagree with your bright ideas, have own opposite opinion and don’t want to happily follow you? We can fight them, lure them and even force them to agree. There are many persuasion techniques, psychological tricks and political games that could make them to convert to your side. But should we always convert them? This post is devoted to the hard and ungrateful job of appreciating people who think, feel and behave differently.
There are three concepts that help me to deal with these people:
- Appreciate the difference
- Pygmalion Effect
- Seeing the Truth
Read full post >>
Jul 22nd, 2008 | People, Practices, Skills
No man is an island unto himself every man is a part of the whole – John Donne
It is possible to program a web page or small application with little knowledge of programming. Use Google to search for examples and if you are lucky, you will find ready code and your are almost done. Even experienced programmers often retreat to search to save time and effort for finding solutions for their problems.
Modern effective programming is unthinkable without using search, the Internet and collective intelligence. Therefore, search skills are becoming primary for an effective programmer.
Now we don’t need to know and remember how to solve many programming problems – we can use search. We are becoming more effective, productive and able to solve wider range of problems. But does it mean that good search skills are enough for building software? This post will review the role of search skills in forming programmer knowledge and how to use search effectively.
Types of knowledge and how it grows in programmer’s brains.
Read full post >>