which programming skills are enough

Started by
1 comment, last by irreversible 5 years, 2 months ago

hi.

im programming about 7 years and in these years as i searched there are lots of programming skills. i found some of them really important and some of them not in practice. i list some of the below.

as i live in iran and almost worked on teams with lower level of working and production and im looking for some application from studios outside of iran i need to know what are main abilities that are expected from a programmer(specially game-play and AI).

1) design patterns(some of the are important such as singleton mvc observer and? and some are  not. am i right?)

2) unit testing: its important to run tests without running whole project but what about TDD? as i read its important to work whole project based on tests but i never tested as i think its too slow.

3) software architecture: its not expected from a programmer  but seems some knowledge is good.

4) VCS: is it just about git or some other important things to learn?

5)dependency injection: its a big field but i have some knowledge on it and its frameworks like ninject and zenject. that is enough?

6) complete knowledge on needed language. i think i know everything and c# and Unity as i made everything with these tools.

7) scrum development: .....

8)base software knowledge like algorithm and data structures

9) portfolio: should i have worked on big projects or .... to be able to be hired on important companies or studios?

10) math. i have good knowledge on vector and linear algebra and basic calculus and i think i can do anything by searching in internet. that is enough?

i think there are some other important knowledges like optimization, software working process and....(dont know)

i need to know what are most important and must programming skills that i may have not.

thank you for answering

 

Advertisement

I'll start by prefacing that I don't work in the industry. I'm a hobbyist. Moreover, I have no idea what the industry is like in Iran.

That being said, I think there are a number of skills that are universal. First off, I'd split them into three categories:

  • basic (you know what an IDE does, know your chose language(s), etc)
  • specific (coding for business, gaming, etc)
  • generic (you can identify and employ design patterns, work on architectural design, etc)

I'd say all three are necessary, but they really differ depending on what you want to do. After all, writing the back end for MS Office has very little to do with writing scalable graphics code for Overwatch. Pick your battlefield and accept that no one knows everything (well).

That being said, from a hobbyist's perspective I'd say the following is what really matters:

  • being able to find and identify the problem (debugging)
  • being able to get a grasp and work with the greater whole/eg the framework (abstraction)
  • being able to write code that does what you want it to do (synthesis)
  • being aware, but not necessarily precisely knowing how a specific algorithm or design pattern works - we do have search engines after all (erudition)
  • being able to iterate an idea to a point where it does what you want it to do and it does it well (optimization)
  • having something to show to back up your words (application)

The collective word for all of these is "experience", because these are all big-big topics that take years to master.

(Apart from the last point) I'm sorta leaving out the portfolio, because I've never had to present one myself. But I'd say basic truths that apply to CVs also apply here - the more you have under your belt the better.

TL;DR - you can't be good at everything (or many things, for that matter), so you need to focus. Choose what you want to focus on and that'll define what you need to know in detail (being an audio engineer is wildly from being someone who works on AI, after all). As for experience, here's my icky-sounding suggestion - do your absolute best to figure out answers on your own first. Put in the time and be prepared to iterate. Embrace the confusion and non-knowingness. You'll be surprised how much you can figure out on your own and how much you learn by just trusting yourself. And it'll help you get better faster than anything else.

The one thing I would do is "fix" the title of the thread: it doesn't really matter what is "enough", but rather what areas you want to expand on. What interests you. Why are you in this business in the first place? If you have passion for Y, then don't go for X.

This topic is closed to new replies.

Advertisement