Journal Articles
Browse in : |
All
> Journals
> CVu
> 274
(13)
All > Topics > Process (83) Any of these categories - All of these categories |
Note: when you create a new publication type, the articles module will automatically use the templates user-display-[publicationtype].xt and user-summary-[publicationtype].xt. If those templates do not exist when you try to preview or display a new article, you'll get this warning :-) Please place your own templates in themes/yourtheme/modules/articles . The templates will get the extension .xt there.
Title: The Very Model of a Model Modern Programmer
Author: Martin Moene
Date: 12 September 2015 06:56:05 +01:00 or Sat, 12 September 2015 06:56:05 +01:00
Summary: Pete Goodliffe asks what defines you as a programmer.
Body:
Programmers deal in the concrete, defining unambiguous definitions, interfaces, and recipes. Our stock and trade is to make the abstract explicit, to tease a functional specification out of ambiguous requirements, and to then implement it faithfully and transparently. Even when crafting abstract interfaces we’re making that abstraction explicit by defining them.
Programmers define things. So then, how do programmers define themselves? There’s got to be more to it than:
Programmer )n) /'prÇÊŠgramÇ/ one who writes programs.
I was considering just this question when I read an article describing how your spending habits define who you are. You can look at how a person, or a family unit, spends money to see how they set their priorities, find fulfilment, the activities they enjoy and how they accomplish their day-to-day tasks.
Spend a thought
Someone who doesn’t know you can look at your bank account, or credit card statement, and will very quickly build a picture of what motivates you, where your heart and interests lie.
With a little intuition it would become clear what quality of life you enjoy: whether you’re comfortable and have resources to spare, or are struggling, only just getting by. They’d build a picture of your interests and hobbies, and learn what you value by the things purchased. Do you tend to buy for yourself, your family, or for others? Do you buy into certain styles, cliques, or feel the need to confirm to certain stereotypes? Are luxuries important to you? They’d clearly see how often you treat yourself, or whether you’re frugal and don’t splash out. They’d gain a picture of your patterns of giving, and whether this altruism is directed towards a close circle of people, or further afield.
All of these things reveal you as a person. In many ways, where you invest your money is how you define yourself. So, back to my question...
What defines you as a programmer? Why do you program? What is your primary motivator for doing it? Like looking at your spending habits, if someone looked at your coding habits, what picture would they build of you?
What motivates you to write code?
Is it money? You’re working in a dull job, but it pays well.
Is it passion? You relish working on something you love, with money not a major motivator.
Is it the desire to do good work? To write the best software possible no matter what the problem area.
Is it the desire to give something back to humanity? To work on a project than benefits mankind using the skills you have.
Is it the desire to learn? You manoeuvre yourself into new, perhaps uncomfortable, situations to gain fresh experiences. Your work isn’t necessarily perfect but you’re constantly practising, and perfecting, skills that you’ll find valuable later on.
Is it the desire to delight users? You enjoy the buzz of watching customers enjoy using your products.
Are you in the game to climb the corporate ladder? You’re aiming for architect, manager, business owner, entrepreneur.
Is programming something you do now simply because it’s the career you fell into? No better or worse than any other job, it’s easier to carry on here rather than jump into a new career path.
Is your motivator something else entirely?
Or is it a combination of these things?
Looking from the other side
Can you say what drives you, what defines you as a programmer?
How does this affect the code you write and the way your work with others?
The quality and style of your work will be determined directly by your motivation for working on the project.
It’s not hard to see that many possible different code outcomes could result from programmers with different motivations.
For example, if you desire to delight users then you may care less about the internal structure of the code and eschew spending time cleaning and refactoring, instead striving to add delightful new features. You’d prioritise different activities than someone who cares about creating the neatest and most elegant codebase possible.
Look back at the list of potential programmer motivations above. How would each affect the way you might write code? Would they affect how you’d solve problems or prioritise your time?
Looking at it from the outside
Finally, consider this: could an outsider look at your code or product and work out what drives your work?
Does your code clearly reveal why you program? Does it show what you value in good code? Does it reflect your priorities?
Is it really possible for code to reveal this?
Which speaks louder about you: your money out your code?!
Conclusion
It’s interesting to reflect on how the quality and style of your code will lead naturally from how you define yourself as a programmer, the things you value in good code, and from what motivates you to program.
It may be possible to tell a lot about you, as a programmer, by looking at the code you write.
Questions
- What answers do you have to all the questions above?
- Do you think that it is genuinely possible to tell the quality and properties of a programmer just by looking at their code?
- How do different motivations affect the code you write, for good or ill?
- What other things affect the qualities of the code you write?
- Can you tell different programmers apart by looking at their code? How would someone recognise your work?
- Do you need to review your motivation for writing code? Why? Is that even possible?
Notes:
More fields may be available via dynamicdata ..