how "smart" do you have to be to become a software engineer/programmer

1981

New member
May 28, 2015
217
0
0
A few days isn't enough to learn the basics. Give it a month or two and see if it sticks. As people have said, scripting languages are easier to learn (but equally hard to master).

I'm a web developer too. I've always done well in school. Math wasn't my strongest point, but with a bit of effort, I cracked it. One of my teachers said it's strange how some students learn to code very quickly but struggle with drawing a simple diagram. I'm one of those people. I guess it's a certain way of thinking. Many of my "crafty" friends have said they have trouble seeing the connection between what they tell a machine to do and what the machine does. They'd rather do it the old-fashioned way. A proper mindset will get you far.
 

Jake Martinez

New member
Apr 2, 2010
590
0
0
mmiki said:
You don't really need a lot of math. I've been told many times in the course of my education that you do, but these days I'm certain it's a lie perpetuated by math teachers. ;)
wizzy555 said:
I like programming more than Math, higher math tends to embody complex ideas into short but complicated and expanding notations and it all gets very hard to keep track of (and of course it has to be in your head), but once you've mastered a programming language you will at least understand what it is doing, even if you don't understand the reason why.
We should probably clear this up for the non-programmers reading this thread:

The reason why math and computer programming are so tightly bound together isn't because you need to know a lot of math formula or anything like that in order to be a good programmer, it's simply because the skills required for both disciplines are mostly the same. Mathematics has as a primary domain both Logic and Structured Language and so does computer programming. Even if a mathematician has never seen a programming language in their life, it will take them almost no time to understand logical operators, grouping and program flow control because these concepts are directly analogous to various notations in higher mathematics.

That being said, it's been my personal experience that people who are both programmers as well as good at higher mathematics, tend to write more terse code. This can sometimes be "better" so long as they have an understanding of underlying computer science principles and patterns of design, but I believe the reason for this is exactly because of what wizzy555 finds complicated about higher mathematics - they are simply used to more complex and contrived notation and this tends to express itself in how they think about logical grouping in their code as well.

In my honest opinion, if you're a decent programmer you can easily handle both algebra and calculus with minimal fuss. If you have a problem with it, either you're just being lazy (and probably disinterested) or you're not as good at logic and language as you think you are ;) Inversely, if you can crack algebra and calculus, then there really is nothing holding you back from programming at a professional level other than interest.

Source: 20 years software engineering, general manager of a software company.
 

Smooth Operator

New member
Oct 5, 2010
8,162
0
0
What was the saying... genius is one percent inspiration, ninety-nine percent perspiration. As long as you are willing to learn and work you can butt heads with the best of them, but the primary part is putting in the effort and keeping it going.

I advise you start your learning experience with languages that are easy (Python/Ruby). On top of that software that will make the experience smooth, I prefer Eclipse for that as it is open, free, always concerned with compatibility and most importantly it can fix 99% of your minor software problems on the fly as you type, long before you need to actually run something.
Also keep a written guide(digital obviously) of your languages close because everything has it's own oddities and that is the quickest way to find out how particular functions work, memorizing the entire function sets is not very practical at this point as you will switch languages several times over and the important part is understanding the general concepts that go on in every language.
Same goes for the math, you need to know the basics but don't try to recreate complex stuff from memory as you will most likely get it wrong. The vast majority of programming demands little math knowledge, you only need to know the high end stuff with very specialized computing where you need to optimize on a mathematical level (large scale accounting, simulations, graphics, compression, encryption,...).

In short persistence and the right tools are your primary friends, internet also helps a whole lot.
 

wizzy555

New member
Oct 14, 2010
637
0
0
Jake Martinez said:
That being said, it's been my personal experience that people who are both programmers as well as good at higher mathematics, tend to write more terse code. This can sometimes be "better" so long as they have an understanding of underlying computer science principles and patterns of design, but I believe the reason for this is exactly because of what wizzy555 finds complicated about higher mathematics - they are simply used to more complex and contrived notation and this tends to express itself in how they think about logical grouping in their code as well.
I'd go father and point out some of the differences in practice. Mathematicians, once they've assembled the equation then "simplify" it (express it as tersely as possible), which destroys the logical structure they initially assembled. While this can be done in programming to great affect (in performance) it is usually frowned upon since leaving the code in a structured way allows for code reuse and easy debugging.

Also programming makes "black boxes" trivial, while this is almost impossible in common mathematics.
 

axlryder

victim of VR
Jul 29, 2011
1,862
0
0
Thanks for all of the feedback guys. I've decided to keep at it and see where this takes me for a few months. I've found myself really enjoying the problem solving aspect of coding, so I take that to be a good sign.
 

DoPo

"You're not cleared for that."
Jan 30, 2012
8,665
0
0
axlryder said:
Thanks for all of the feedback guys. I've decided to keep at it and see where this takes me for a few months. I've found myself really enjoying the problem solving aspect of coding, so I take that to be a good sign.
One thing I can recommend you do right now is start using source control. Doesn't really matter which one, I'm a fan of Git, myself but whatever - there are also SVN (a.k.a. Subversion) and Mercurial which are popular, as well as others, but I believe these are the big three. Just pick one and start using it. It really pays off to have your code in source control and it's something that's universally seen as something you should be doing at work, only I rarely ever see it recommended outside of work context. Not all universities even incorporate source control in their classes. Not "teach" - there really isn't much to it, but it's not used for assignments and stuff.

All you need is to just get into the habit of committing your work and understanding how to roll back, so you are comfortable with maybe trying something to see if it works, and if it doesn't, reverting back or perhaps finding code that accidentally got lost. As such, you don't really need an external server for your repository (well, unless you want the added redundant copy of your data for extra protection against losing work) - you can do it all on one machine. Part of why I like Git - it's dead simple to set up.
 

Lockling

New member
Aug 16, 2010
20
0
0
The "being good at math=being good at programming" thing isnt really a myth, mostly because all math comes down to is logic. And being good at math usually means youre able to think very logicaly. THAT SAID, being good at math is definitely not a requirement to being a good programmer, because to be a good coder all you really need is the right mindset.

If you enjoy solving puzzles and can think logically(which, from reading the first post, is not something you have trouble with)programming really isnt that hard. There obviously are some techniques and finesses you only learn through practice but thats the case for any skill really.

As for the language you should start with i heartily recommend C and C++, mostly because they teach you the internal logic of most languages at a very basic level. Its true that they are NOT the easiest languages to do something complicated in, but learn it in them and you can do very much the same things in other languages as well(they may have shortcuts for some things, but learn to do it from a "grassroots"perspective and youll have a deeper understanding of what a certain shortcut does).
(i know the following should be in the same brackets as well)
Sometimes having a deeper understanding of the shortcuts can REALLY work to your advantage.

All programming really comes down to is logical thinking, being able to "write" your thought processes down, and truly enjoying problem solving.

I myself HATE it when a program that *I* think should work, doesnt work. But the feeling i get when i finally isolate the problem and solve it is truly great. And that is why i love what ive been doing for the past few years.

E:i know theres typos, but i cba fixing them because its 10am and i havent slept yet.....:S damn tournaent commentating :S
 

devotedsniper

New member
Dec 28, 2010
752
0
0
Programming only requires a logical mind, you don't need to be a genius.

The hard part is thinking ahead and writing code which is easy to manage/maintain in the future, it's all very good writing a good program but when your client comes back for more it then becomes a real pain if you've just done a quick job rather than taking your time and making something which is easily maintained (obviously we can't always do this but it will become more common as you gain experience).

A good example of this would be a comparison of one of my first websites, it's good and works well but due to inexperience it's a right pain to maintain and expand. My latest site however took a while to initially develop but our client keeps coming back for more and we can easily drop something new into it or modify the base code without too much trouble as it's very modular.

It's all down to experience and just being able to look at something logically, you don't need math all the time and if you do then usually the client will provide the formula's for you (e.g. accountancy software).

C++ is a good start as it teaches you to think and not be lazy (no automatic garbage collection) and it's probably the right language if you want to look into AAA game development but once you have the basics I suggest looking into the sort of area you would like to work in as the languages and approaches vary vastly depending where your going.

And yes you will hit a brick wall at some point and you will sit there for hours, days even until it will just click. I hit this issue with knockoutJS and all those damn brackets!!!!

For those interested I'm a Back End Web Developer meaning I'm the guy who actually makes your websites and shops work, I don't make it pretty. I specialize in C#, MVC, SQL, and various forms of javascript (e.g. AngularJS, KnockoutJS), but I do dabble in other things from time to time.

I'm also not the greatest at maths so you'll be fine so long as you have access to a calculator and google.

Probably the best advice I can give is never give up, if you get stuck take a break do something else and try again later (still stuck, repeat, stuck again? Ask for advice and repeat). Never stop learning, the minute you stop you become old news and will get stuck as a legacy developer and eventually obsolete. And well just enjoy yourself, if you enjoy the challenge and coding then it's the right job for you.
 

cthulhuspawn82

New member
Oct 16, 2011
321
0
0
Is C++ really considered a hard language? I just got my bachelors in computer science and I have never written a single line of code in anything but C++ or Java. Ok, maybe some HTML and SQL. I'm worried about entering the work force. I dont feel like I can do anything super impressive, and I honestly have no idea what any job I get hired for would require me to do.
 

Imperioratorex Caprae

Henchgoat Emperor
May 15, 2010
5,499
0
0
My take on programming is that its like learning languages. By which I mean you don't just learn what the symbols on your screen mean but also how to think in said language at the same time to be successful in programming. It may just be thats how I overcame the mental block, by conflating it with how I learned to speak Spanish, but it worked.
I did have one teacher that holds the idea that the best way to learn programming is first by learning Assembly because its a near-constant 1-to-1 between the code and machine language... But you really have to be special to learn assembly, thats my view at least. I've worked on it in the past and it gave me a headache more than I learned to use it but I haven't given up... yet.
 

008Zulu_v1legacy

New member
Sep 6, 2009
6,019
0
0
I started learning UDK script from scratch. Even after books and tutorial videos, it's like a whole other language. Which I suppose it is. Feels like I'm stuck in a whirlpool sometimes. I know "how" some of it works, but I am stuck on "why" it works.
 

TechNoFear

New member
Mar 22, 2009
446
0
0
There are a lot of different coding jobs; support or development, front-end (UI) or back-end (DB) or both, etc

Every job has different requirements; language, math required, etc.

You will pick up skills as you go, as technologies change.

So IMO the ability to learn / teach yourself is much more important than your proficiency at math.

However...

Now C++ jobs usually require specialized experience, as they are usually to develop cutting edge applications or low latency / high performance systems (so rarely hire graduate / new coders).

IMO the big coding market today is cloud or mobile. Learn a language that is used in that type of development (as it would give you a better chance of employment)

IMO C# or JAVA would be a better first language, if I was looking to become a programmer today (as they are 'managed' languages that are more forgiving on the beginner).

Also get experience with the IDEs (compiler / debugger) used in commercial development.
(for C++ (inc MFC or WIN32) / C# it is Visual Studio, Express is free)

Have a look at cprogramming forums if you need help, there are some brilliant C/C++ coders who answer questions there.

http://cboard.cprogramming.com/

Also have a look at codecademy for tutorials

http://www.codecademy.com/

[I have specialized in developing for MS and Oracle based systems, so I may be biased in my opinions...]
 

Bad Jim

New member
Nov 1, 2010
1,763
0
0
There is something maths does have in common with programming. It takes an awful lot of effort to do just a few pages of work. It's very common to struggle for hours, look at how little you've done and assume you're no good at it. But it's kinda like that for everyone. Of course, you'll be even less productive because you're just starting, but even great programmers don't actually produce much code when you consider the time they spend working on it.

You've just got to keep going with it. It is more of a test of patience than a test of smarts. There are jobs that require you to be smart as well, and they pay more, but there are plenty of professional programmers with below average intelligence too.

As for the actual math requirements, you will need some understanding of maths, but only very basic stuff. Propositional calculus is way beyond anything required for programming. It does help if you understand binary arithmetic, but even that is not really required.
 

wizzy555

New member
Oct 14, 2010
637
0
0
cthulhuspawn82 said:
Is C++ really considered a hard language? I just got my bachelors in computer science and I have never written a single line of code in anything but C++ or Java. Ok, maybe some HTML and SQL. I'm worried about entering the work force. I dont feel like I can do anything super impressive, and I honestly have no idea what any job I get hired for would require me to do.
Unless you consider assembly language, ancient languages like FORTRAN and COBOL and joke languages like LOLCODE, then yes C++ is considered a hard language. It has basically evolved like a Frankenstein's assemble of features over 30 years and has many archaic issues they can't get rid off as well as new but now unused features.

The joke it there are 10 ways to do anything and 6 of them are considered bad practice.