What kind of non-technical training course do you suggest for a programmer? Example could be public speaking course, presentation skill, English, business writing, or anything not related to programming or software engineering itself.
27 Answers
Anything related to communication, like public speaking, would be great. You will be considered a LOT more valuable as a programmer if you are able to communicate well with your team and the stakeholders of the software you build. A lack of communication skills will absolutely stunt your growth in this field.
-
+1, and I'd add technical writing (not necessarily business writing) as another valuable subset of this "communication" answer. Commented Dec 29, 2010 at 16:40
-
+1, I had met so many good programmer who shy out on taking lead, just because they afraid to talk in front of people. Which is a lose for them and the industry. Commented Jan 3, 2011 at 10:34
-
+1 codinghorror.com/blog/2006/10/does-writing-code-matter.html– thSoftCommented Dec 27, 2012 at 16:31
Graphical Desgin. Try this for a starter: http://net.tutsplus.com/articles/lectures/design-for-developers/.
A piece of software (and any product in general) needs not only to be usable and functional, but also "pretty" to be able to sell, and that is the sad truth.
-
9No point - any programmer can do graphical design with no effort at all. For example, I just invented a brilliant colour scheme in moments - cyan and magenta! (confession - I think IBM invented it first for CGA graphics). Professional graphical designers are so in awe of programmers that they use terms like "programmer colours" as a sign of their profound respect.– user8709Commented Dec 29, 2010 at 5:38
-
2Formal knowledge on the subject can overcome and replicate those moments of inspiration. I bet there are also lots of graphical designers that say "any graphical designer can create web sites", because they have some flash knowledge, can use dreamweaver, and go all script-kiddie on PHP. But you have a point. Commented Dec 29, 2010 at 5:57
-
7+1 Agree with duke here. A lot of programmers think that they can do graphical design. But there is a huge difference between a professional graphical designer and a programmer who also thinks he can just wing design. Some formal training in graphical design is a good to have– JagmagCommented Dec 29, 2010 at 6:12
-
2The pairing of strong design skills with strong development skills is very useful. The skills are complementary. It is also important to realize there is science behind design. It isn't all creative and artsy. There is a reason it is easier to a page with properly treated type. Commented Dec 29, 2010 at 12:00
-
1Ye design :) programmers.stackexchange.com/questions/32674/… Commented Jan 3, 2011 at 0:51
Business
The biggest problem I've seen with folks coming straight out of college (including myself a few years ago), is that they want to write cool applications no matter if they help the business make money or not. In order to really be a rockstar developer in everyone's eyes you need to be a great developer (for the other developers to notice) and either make or save the company money (for the business people to notice)! When you can do both you set yourself up for not only great career opportunities, but the business people will start to LISTEN to you! Why? Because you provide value. Even startups that write fun applications' primary focus is to eventually create something that is profitable.
-
+1 for this - I deviated from programming to spend a few years as a product manager and on my return I found it striking just how little other developers knew or cared about the ability to sell a piece of software. I stopped talking about features in new release cycles and started talking about the business benefits.– KevinCommented Dec 29, 2010 at 19:09
-
1The best short (too short on its own) introduction to understanding your employer for me was What Your CEO Wants You To Know by Ram Charan -- amazon.com/What-CEO-Wants-You-Know/dp/0609608398/… -- you can read in 15 minutes, but can help start a new or young developer to realize what that "big picture" talk is actually all about.– mctylrCommented Dec 29, 2010 at 19:15
-
+1 Narrow focused only on Tech work and forgot look into business term sunk lots of good project. Think in others shoe (especially customer's) make great softwares. Commented Jan 3, 2011 at 10:36
Assertiveness Skills - To note here that "Assertion" does NOT in any way relate to "Aggression".
While this comes under the general gamut of "soft skills", I have found this training to be greatly beneficial especially when it comes to programmers.
Atleast in my experience, i have just come across too many programmers who would rather avoid a confrontation with someone about topics which they may even be better informed about due to their nature and this is detrimental to the team overall.
Such a course mainly focuses on people making their point heard and giving them some basic tips about how to ensure that your viewpoints / opinions do not get snowed over just because of some big mouth on the team who may be better than others at putting his point across.
Logic. Algebra. Statistics. Calculus. English. Critical thinking. Physics? Behavioral analysis?
It depends what you want get into, and what you're naturally good at. There are tonnes of courses that will benefit you in some way. Many answers have suggested communication courses, which you seem to already know -- other than that, think long and hard about how you want to apply programming and take the courses that complement your goal.
-
Much of these are technical, which isn't what the question was about. Commented Dec 29, 2010 at 18:45
-
Arguably Statistics, English, Behaviour analysis (psychology / sociology) are not "technical" topics typically associated with programming. If every programmer read How To Lie With Statistics and understood enough psychology to understand that not everyone thinks & acts like they do, I believe the world might be a (bit) better place.– mctylrCommented Dec 29, 2010 at 19:04
-
I assumed "technical" to mean actually working with programming and computers... Commented Dec 29, 2010 at 22:28
-
Physics? Are you crazy? its server-side era, leave that c++ alone!– IAdapterCommented Jan 9, 2011 at 20:45
Typography
Typography is an overlooked area that is very important! Understanding typography can help you understand how to make more usable software as well as make it look good! Even if you don't take a class, it is great to read up on and can give you an edge.
Great Typography Books:
The Elements of Typographic Style
Online Articles:
http://en.wikipedia.org/wiki/Typography
http://www.informationarchitects.jp/en/the-web-is-all-about-typography-period/
-
Whilst I entirely agree, I would argue that it is a subset of graphic design, which is also listed.– OrblingCommented Dec 29, 2010 at 11:53
-
True true, but I wanted to point it out specifically as I feel it is one of the most important if not THE most important part of design. Commented Dec 29, 2010 at 12:00
Psychology.
Software developers need an understanding of what motivates people and why they act the way they do.
-
-
@dan_waterworth, I disagree, I think all programmers have a responsibility to their users to be humane. Also understanding some psychology can help some developers interact with people in an organization that are not so purely abstract or intellectually focused, but are critical for the organization to survive. Of course Abnormal Psychology can be taken for its own enjoyment of self-diagnosis.– mctylrCommented Dec 29, 2010 at 19:12
-
Depending on what you mean by "non-technical", I'm voting technical writing skills. Mark Freedman is right to mention (interpersonal) communication skills, but technical writing skills are also important for a developer.
If nothing else, every comment you add to your code is a snippet of technical writing. Also, no matter how good your spoken communication skills, a written explanation of what you understand the requirements be that others can understand is very important - without it, even if the initial spoken communication was perfect, yours and your bosses/customers perceptions of what you're supposed to be doing will inevitably drift in different directions over time.
Personality Testing and Profiling
Understanding personalities, tendencies, and chemistry is important. It can help you understand how to be more productive individually and as a team.
Read more:
-
Are you choosing to avoid someone with a strongly I?T? personality who won't fit your current team? Or are you discriminating against someone with an autistic spectrum disorder who has been basically forced into adopting an I?T?-like style? IIRC, I score as maximally I and T, with some bias toward N and P. Many people with ASDs have a similar pattern, resulting as much as anything from how others react to the disability. The extreme Introvert (not Extrovert) and Thinking (not Feeling) don't exactly help me make friends. Most teams will claim I won't fit that one particular team.– user8709Commented Dec 29, 2010 at 11:24
-
1+1 I like this, very helpful when recruiting - indeed, I have known prospective employers to run a Myers-Briggs on all candidates and usually the Keirsey too. Personally, I vary a bit, as I have a tendency to straddle borders - J always, stronger I than E, usually go TN if questions are pertaining to actual work, SF if pastoral care.– OrblingCommented Dec 29, 2010 at 12:18
-
I'll disagree. While I understand that psychometric testing, can be a useful exercise for an individual, their value is in my opinion oversold within HR hiring as to their effectiveness. I think the actual core value is in understanding / remembering, acknowledging, and learning to work with (i.e. co-operate or utilize the strengths of) other people's personalities, and learn to utilize your strengths. I.e. Not everyone thinks / works / acts like you do, but you are most productive when you work in a manner that suits your personality (within reason and healthy balance).– mctylrCommented Dec 31, 2010 at 17:31
Basic Financial Courses - The category is a bit broad but odds are pretty good that most developers that work for a large company that doesn't produce software as a product is going to have to write some code that preforms financial calculations. Likewise, as you start to move up the career ladder you might be called on to produce basic budgets for your group. Finally, they tend to teach you useful information for your household budgets as well so you know where to invest money for short term gains and long term stability (i.e. for your retirement account).
According to me Painting and Cooking. It makes us become more patient, and it allows us to relax.
-
4+1 for mentioning a hobby. Focusing only on "useful" knowledge can make people too narrowminded, and hobbies fix this. Commented Dec 29, 2010 at 9:47
- Foreign languages!
- I had a course at college called "Computer Science and Humanity" in which we talked about being responsible as a developer (e.g. privacy concerns).
- Business Administration (e.g. accounting, HR) lets you understand your bosses and clients better.
- Electronics makes you understand your tools better.
Economics and business, because these are why programmers have jobs. Additionally, understanding these will almost always dazzle non-technical managers and business owners because they are so accustomed to hearing only tech-speak from programmers and systems administrators.
It dances on the line between technical and non-technical, but if your school offers something along the lines of Human-Computer Interaction (HCI) or anything else related to user interface design, jump on it. That's some valuable stuff right there.
I'm surprised that no-one mentioned improving English skills.
I am constantly surprised at the number of CV/resumes I get that are almost unreadable.
If you start off as a pure technician it is unlikely that you will end your career using the same skill set. There will come a time when you need to write a report (or lots of reports) that require a lot of words to be put down on paper.
The problem you may encounter is to actually find a good enough course to take.
Law
There are many subjects that a computing professional should know, indeed our profession, like most business consultancy professions, requires a substantial breadth of knowledge across all the domains we encounter and analyse.
However, law is the one I would single out as a necessity.
Our profession is on the front-line of a rapidly changing legal framework, intellectual property is the well known example, but there are all manner of legal issues that crop up day-to-day. Regulatory compliance, valid and invalid contractual clauses, credit law, if you work in e-commerce, data protection.
I think all IT professionals, and certainly senior software engineers should have basic legal training and follow applicable law in their areas. My university had it on the compulsory syllabus for master's students for computing, it comes in handy regularly. The usual riposte is that "the legal department handles that", yes well, they may not be aware an issue created by software exists unless the staff there have sufficient awareness to notify them of it - plus, it is usually the source that has their head on the chopping block.
Estimation
We hate it because so few of us understand it. Understand it and it's not nearly so painful.
While I will not dispute the importance of communication skills both written and verbal, if you get the chance to take a course on human-computer interaction, I believe you will find it invaluable. Some of the most difficult problems I see at work usually involve trying to figure out what the user wants when the user doesn't even know themselves. Developing intuitive user interfaces that work well and exactly as the user expects is really hard in my opinion.
- I think you should have a good hobby so better learn to do a sport(an outdoor, so you get exercise as well)
- Learn Music or try writing poetry, proses, scripts for drama(learning those things will improve your creativity which i think is most needed for a programmer or any person)
- Mathematics(Strongly recommended)
- public speaking and communication skills
I took "International Communication" course in summer 2010. It was about various topics: how you communicate, how one object could raise opposite feelings for different people, how to be nice, how to stay on topic/change topic so others will accept. It even helps me in my daily life.
Some answers here suggest Graphic Design or Typography with the assumption that this will help in creating better GUIs and providing better user experience.
Some Universities actually offer courses in GUI Ergonomics which might be even better for that, although I'm not sure how 'non-technical' you can consider this ;)
Debate.
It helps you learn how to research and develop an argument which will help you tremendously in getting your ideas adopted by the organization you work for.
It depends on what you want to do with your life, I think. But here are some good general ones:
- Group communications. As a software developer, you'll probably be working in groups for most of your career. Learning about how groups interact and how communication within groups occurs would be beneficial.
- Economics. I would recommend an engineering economy course that covers topics such as present worth and future worth analysis, rates of return, life cycle costs, project decisions, and so on. However, some kind of economy course should be taken, even if it's only microeconomics or macroeconomics.
- Organizational behavior. I took an OB course and it's very much an applied psychology and sociology course, taking psychological and sociological concepts and applying them to how organizations work.
- Technical writing or technical manual writing. Although any kind of writing course would be a good idea, technical writing would not only improve your writing skills, but also help you with the creation of technical documentation, something you might be doing at work.
Any decent quality Work-Life Balance courses, workshops, or even books can be helpful to stress the importance, and remind us (all of us) how important it is in the long run to maintain a balanced life so we don't end up burnt-out, divorced, and suffering from major depressive disorder alone and laid off.
In poor economic times it may be even more important, because of the tremendous pressure to cheat ourselves of this balance for what is typically a false hope of security (if the situation are really that precarious, it will mostly eventually fail anyhow).
Avoid any training or seminars that are too gimmicky, or quick-fix oriented, but simple common-sense oriented balance is the best bet in my opinion.
1 Music
2 Language and Communication skills
+ All the concept site implemented by stackexchange are worth participating
Marketing & advertising
Programmers who do the WP7, iOS, Android... apps. May boost your sells numbers.
Photography.....
Atleast for me because it makes me happy, and sometimes I seriously think this as an alternative carrier.
So talking more general, anything apart from computers you are interested in.
P.S. : Learning other language is not a bad idea at all.