What type of skills are in a computer programmer?
My career is to be a computer programmer #facebook #personal-development
4 answers
Brett’s Answer
1) Logic. Lots of people will talk about math, and that's certainly a nice skill and required for truly advanced understanding of some areas, you'll find many developers don't use any math beyond basic algebra. What you do a LOT of, however, is logic. Given a set of rules about how things work and some inputs, deduce the result. ( https://en.wikipedia.org/wiki/Logic_puzzle ) This is very close to what we do when examining code. When we write code, we're given the inputs and the desired output and we are determining the rules.
2) Abstraction. Programming is a strange mix of very specific, very detailed instructions, and then pretending those details don't exist. Coding is giving instructions, but each of those instructions is usually combining elements that are assembled from someone ELSE's code (or even your past code). Everything is layers of abstraction on top of other such layers. This is another reason math classes are often so valued among programmers - math is a practice of creating arbitrary rules and levels of abstraction ("Imagine Rob is at position X, and starts walking towards a Tree at position Y. A house lies 500yards west of the Tree, and some distance directly west of house is a horse in a field....") .
3) Communication. Everyone loves to praise communication and other "people" skills, and at the same time programming has a reputation for being accessible to those that may not be great at people skills. The truth is a bit more complex: Everything benefits from people skills, programmers MUST have the ability to think in varying levels of abstraction (which is usually a terrible communication technique), and programmers can achieve basic success while lacking people skills that many other professions would require. HOWEVER, communication is valuable for programmers beyond the normal "convince people you are nice to have around and have good ideas". Coding may seem like it's a bunch of instructions to a computer, which is only superficially true. Most anyone can, with effort, put together instructions for the computer. Coding is about communication your intent and reasoning, not to the computer (who doesn't care - it only wants instructions, not reasons) but for future programmers (including your future self). Programmers will talk a lot about "maintainable" code, "readable" code, and "extensible" code. Almost all of this discussion is about organizing the instructions to allow for changes and to communicate to the future programmer skimming over your code what and why it does. The communication skill is not about words - big verbose comments in code are generally a bad idea - but instead about knowing what is/is not obvious, how to group related ideas together, and how to flow from idea to idea logically.
4) Curiosity. Programmers will not be able to learn their skill and then sit back to refine their talents. Most will switch jobs multiple times - while they will still be programming, the focus area will change. Base technologies will change. Libraries and frameworks and general industry practice will continue to evolve. My first job as a programmer was 20 years ago - modems were the norm, if you were fortunate enough to be internet connected. Wifi was a high-tech dream. Smartphones didn't exist. Google and Facebook didn't exist. Amazon was a spunky start up that sold only books. Netflix was still a young company, and they did DVDs by mail, not streaming (Because no one did streaming - even youtube was 5 years away). Disk Drives were just started to phase out. Today, it's a vastly different world, and I can expect 20 MORE YEARS OF CHANGE before I retire. I've programmed professionally in 4 languages as my primary jobs, and had several others as support/scripting in that time...and again, I'm only halfway to retirement. If I didn't enjoy learning more, even when I'm on my own and trying to live life outside of work, even when I know of a way to solve a given problem, even if learning the new thing means I have to fight with my own assumptions and expectations, I'd be struggling.
5) Caring. Programmers do work - but others need that work. The most successful programmers are those that want to do the work that others need, as opposed to those that want to do the work they personally want and no more. Caring about the struggles of those it is your job to make happier makes success so much easier.
Joe’s Answer
- Logic - Most of what goes into programming is deciding when to do certain things based on a set of conditions. The ability to understand these branches of logic and follow through them in your head will help greatly when designing and writing programs.
- Communication - When I first started getting into programming I was under the impression I would spend most of my day, heads down, writing code. Once I started actually working as a professional programmer, I realized that much more of my day was spent communicating - with colleagues on my team, with other teams, with customers and with peers.
- Desire to learn - I learn a great deal throughout my day as a programmer, but to keep up to date with new languages and such, you really need to be passionate and want to learn outside of your regular work day as well. I spend much of my time working on side projects that help me keep my skills current and learn new skills.
Frank’s Answer
Hi Tyra, Here are some key skills for a successful programmer:
1) The ability to think logically; to make a list of the steps to provide an answer to a problem or task.
2) An understanding of computer science concepts: scalars (numbers), arrays, lists, dictionaries, structures, objects, algorithms, and storage strategies. How can tasks be accomplished in parallel, too?
3) Clean coding style: Not too busy, not too brief. Easy for others to understand and work on, too.
4) Research and working with software development tools: Languages, development environments, libraries, databases, and frameworks.
This is pretty technical, but I hope it will give you an idea!
Matt’s Answer
2) Good in math and logic.
3) Dedication to completing a project.