PDA

View Full Version : Programming - Advice?


maskedmelonpai
02-07-2017, 11:20 AM
Curious what the best avenue is to enter this field. Are there many freelance opportunities? Independent contracting? Remote opportunities? What sort of education is necessary? What sort is suggested? What are most popular languages? Which are most useful? Which most needed? What sort of drawbacks are there?

What else?

dafier
02-07-2017, 11:28 AM
I'm where you are. Someone I work with (not directly) gave me the same advice I read in a C# and C++ book. Just program. Explore what you can do with it and don't give up.

Books are books, but you need to program in order to train your mind to think like a programmer. It's a way of thought, simply put.

Languages don't matter until later. I personally started with Basic back in the 80s.

bigjerry
02-07-2017, 11:33 AM
my X point plan for success in the field: read a c# book, play a lot of videogames so you can type fast and look semicompetent, lie on your resume, lie in interviews, use performance-enhancing drugs for high pressure social situations, learn jedi mind tricks, have visible abs, learn statistics and use them to write reports so you can suck up to the execs, figure out the psychology of ppl who can remove technical responsibilities while increasing your pay and abuse it, convince everyone to love you

dafier
02-07-2017, 11:40 AM
my X point plan for success in the field: read a c# book, play a lot of videogames so you can type fast and look semicompetent, lie on your resume, lie in interviews, use performance-enhancing drugs for high pressure social situations, learn jedi mind tricks, have visible abs, learn statistics and use them to write reports so you can suck up to the execs, figure out the psychology of ppl who can remove technical responsibilities while increasing your pay and abuse it, convince everyone to love you

https://en.wikipedia.org/wiki/Limitless_(film)

dafier
02-07-2017, 11:45 AM
Haynar is a great person to engage! :)


HAYNAR! (On page 25 of the member list, under H)

maskedmelonpai
02-07-2017, 11:51 AM
Guess I was looking for something more tangible ^^; I dinked around in basic when I was little and did some C, but decided against pursuing it because while I had some fun with it, there were nerds who LOVED it and I didn't feel like investing the time to compete with that. Of course now I've invested more time in something I don't like at all, have no natural aptitude for and have only succeeded based on good impression, perceived potential and personality ^^; Maybe too late to change or may still not be my thing (my brain is prone to error and I am highly unobservant so I found debugging frustrating), was just curious ^^

dafier
02-07-2017, 12:12 PM
Last thing I'll say is I personally like programming because in the career field you are inventing everything. Of course you face time lines and what not, but YOU are the creator. There is no SOP (standard operating procedures) to guide you through a boring process in which a monkey can do.

Most the time when you are given a project, your mind is your limit. MIS, in which I work right now, and have been for the last 20 years is freaking boring as shit. It's the same crap over and over.

edit:

The only thing that keeps you on your toes in MIS is security. How to make things more secure.....it's a constant struggle.

Izmael
02-07-2017, 12:23 PM
There's plenty of jobs for GOOD programmers in pretty much any language.

If you're new to it, I'd probably suggest trying out Javascript because you can get started really fast and need nothing but a web browser and notepad.

paulgiamatti
02-07-2017, 01:18 PM
Curious what the best avenue is to enter this field.

Varies based on lots of stuff, but if you want a generic answer, save up for some courses in a specific language such as C# .net and get certified. A certification is pretty much a guarantee that you'll get your foot in the door at the entry level.

Are there many freelance opportunities?

Not really. I'm sure there is such a thing, but it's rare, and there's almost always going to be a contract involved if you find work with an actual company, which brings us to

Independent contracting?

which you more or less need a proven track record to find gainful work in. Independent contracting is something programming veterans will find success in because they'll have a desirable skillset and an extensive resume.

Remote opportunities?

Another thing I wouldn't exactly count on at the entry level, or in general. If you're on salary you may be allowed to work remotely if you've proven reliable, but almost all companies are going to require a physical presence at a location at least some of the time, if not all of the time.

What sort of education is necessary?

None.

What sort is suggested?

Again varies based on lots of stuff. If you have a particular interest in one language, get a certification for that language. If you have a more generic interest in programming without a specific goal in mind then you might want to enroll in some college-level courses to learn the fundamentals and then find out what interests you from there.

What are most popular languages? Which are most useful? Which most needed?

C# .net and Java are really popular these days, and probably the only two I'd recommend for object-oriented programming. There's still huge value in learning C++, but if your primary concern is landing a job I'd worry about that later. JavaScript is also hugely valuable and definitely the most widely employed for web development.

What sort of drawbacks are there?

Hard to say, and I'm probably not qualified to really expound on which languages excel at doing what, but I've seen programs consisting of a bunch of lua scripts compiled in C, such as Zaela's EQGExport, hugely outperform C# programs like Shendare's EQ-Zip. Drawbacks are mostly contingent on programming knowledge and skill level, and the better understanding you have of fundamental programming concepts the better you'll be able to utilize a language and write functional code.

What else?

You don't need to be an expert programmer to understand programming concepts. I've found it's easier to learn a language by researching how to do something specifically - I'll have a specific, simple idea in mind, and set about researching how to do that by performing a flurry of Google searches and by studying the code of software that might be instructive so as to achieve that goal. http://stackoverflow.com/

dafier
02-07-2017, 01:27 PM
In regards to C# and C++:

If you learn C#, you'll learn C++ basically. The only difference is garbage collection and memory allocation with C++ that you don't get with C#. C# does those two for you, which has its goods and bads.

EDIT:

What CaveTroll says. Except I disagree. I've been a manager of Microsoft based systems for years. There is money in it (not the same as 10+ years ago). If you have a clean life style, go government. It's guarantied work and the pay isn't as low as commercial industry.

mgellan
02-07-2017, 01:31 PM
Start out building some web sites in HTML5, PHP and Javascript with Netbeans. Learn some Java. Then, get the free version of Visual Studio and learn some C# and build some sites in that. If you find you enjoy coding and debugging / testing, then take some courses. Do some sites you can use for a portfolio to show potential customers.

As for bullshitting your way through interviews, I'm a programmer with 30 years experience and now at a Director level, so I'm the guy across the table from you at an interview. It will take me 10 seconds to figure out if you're full of shit. In fact I've probably made you write a test before you ever get to sit at the table.

If you want to try to freelance feel free but you're competing with 1,000,000 Asian people who charge $6/hr. The good news is they generally have some communications challenges, don't have high quality, and are in timezones diametrically opposed to North American customers. So if you provide good service have good references and sample sites, you can probably get some customers freelancing. I just paid a firm in India $1200 to do some work on the GLPI help desk system and it wasn't particularly a positive experience, I'd pay $3000 to a North American I can talk to on the phone and who understands a simple spec... I'm talking about work coming from sites like eLance.com versus locally obtained work of course. If you have some way to get in with a few customers locally all the better, I certainly started out that way.

Regards,
Mg

mgellan
02-07-2017, 01:40 PM
pick 1 thing get a cert and get an entry level job immediately

Wow, dunno where you are, but I give entry level jobs to University or Community College grads, not guys with one cert under their belt... I've worked in industry as well as government, it's the same. No shortcuts, get at least a 2 year Community College certificate so you know more than one thing badly.

Regards,
Mg

paulgiamatti
02-07-2017, 01:46 PM
It depends on so many different things. You're not going to get a job at Google with only certifications, but at the same time if you know what you're doing and can demonstrate that in an interview or a skills test, you might not need anything else (or anything at all) to get a halfway decent job at a startup. I would know - I landed my first job at a software startup with nothing except retail and tech support under my belt.

maskedmelonpai
02-07-2017, 02:03 PM
Thanks guys, it helps ^^ ill take a look at c# and java and take my search to google. I just knew we had a number on f people experienced in the industry mulling around here and was just looking for some direction. Thank you ^^

dafier
02-07-2017, 02:07 PM
Just questioned a Web Developer Manager for what languages he uses and here is his response:

C#, Java (for some legacy apps), JavaScript and we use JQuery, CSS, HTML,
HTML5, Knockout, Angular, SQL, Oracle, MySQL, and sometimes I have to dig
into little C++ to get some things done.

entruil
02-07-2017, 02:15 PM
Don't get into programming unless you have an extreme passion for it. If you don't have an extreme passion for it, watch office space it will cure your itch.

Wish I would of had this tutorial series when I started, they are game oriented but I think it applies to programming in general for the most part.

https://unity3d.com/learn/tutorials/topics/developer-advice/how-start-your-game-development?playlist=17126



We asked our Twitter friends:
@gamasutra
Game devs! What's the best game dev advice you've ever received? The worst?

Here's what you had to say (most responses were regarding the best advice, which is dandy):

@gamasutra @Official_GDC - best game Dev lesson? Fail early, fail often, recover quickly.

@gamasutra 'Don't be afraid of failure, that's it.' As told to me by *edit*


Sensing a common theme here...


@gamasutra be fast, be bold, break things and fail early

@gamasutra fail faster, by @ExtraCreditz

@gamasutra Best: Fail Fast, Fail Cheap. Also, don't be a jerk, the industry is small.

@gamasutra Best: "Don't be afraid to suck." - just do it, fail if needed, iterate always

Don't forget to KISS.

@gamasutra Keep it simple, stupid.

@gamasutra @Official_GDC Keep it simple. Move towards the mountain. Listen. Question. And whatever *edit* says.

@gamasutra *edit* once advised me to 'get design ideas playable, in the game, as soon as possible".

@gamasutra Best: Test early, often and always. Worse: Don’t publish anything short of perfect.

Some of you emphasized finishing something.

@gamasutra best advice ever was "just finish a project". Good advice too. Makes a huge difference to know you can see something through.

@gamasutra @___discovery Worst: "Use tool/language/software XYZ or you won't succeed" Best: "Just finish something, then finish more things"


Others stressed that ideas don't mean terribly much on their own.

@gamasutra A designer's job isn't to have the best ideas. It's to find them and then champion them. #BestAdvice

@gamasutra Best advice: "Execution is infinitely more valuable than ideas. Don't tell people about things, show them."

@gamasutra "The most important thing in making a game is a great idea." - Worst.


Speaking of execution...

@gamasutra Best #gamedev advice: if you have to explain what you presented, you need to work on its execution.

And sometimes you just need to do it.



As for freelancing and contracting I don't really have much experience, however (maybe above posters will shed some light on it), I read about companies bringing in freelancers to hamstring their employees... not able to find the article atm sorry ... some Good answers about freelancing vs salary here (http://softwareengineering.stackexchange.com/questions/23691/why-are-more-programmers-not-freelance-these-days).


maybe type more later... gl hope it is legible.

bigjerry
02-07-2017, 02:27 PM
freelancing = competing with indians for wages

contract work is the first world equivalent

paulgiamatti
02-07-2017, 04:17 PM
Well it's kind of important to define the term. I was thinking of freelancing as something separate from working by trade as an independent contractor - less official gigs that don't involve a written contract, etc. - but most people just mean independent contracting when they say freelancing. And yeah, tons of people do that, but if you aren't totally confident in your marketability you can just work for a contracting agency which will hook you up with jobs too.

I think a good piece of advice especially in the world of game development, though I feel it applies to all programming, is to avoid taking on one-person projects; don't set out with the goal of making a large-scale thing singlehandedly. The real magic happens when you're working on a team with like-minded developers, designers, and project managers, as opposed to the lone wolf programmer that stays up through the night endlessly toiling on a product. Working on a team will help you learn faster and avoid making mistakes; you'll be able to bounce ideas off other people and have bad practices corrected early on. Challenging yourself is good, but working with others who consistently challenge you is even better.

paulgiamatti
02-07-2017, 06:06 PM
There is no one-size-fits-all path to success in any industry, but IT is one of the few industries where pursuing a 2/4-year degree will actually pay off, even if it's not completely necessary. It will get your foot in the door, and it will embellish your resume making you much more likely to land an actually good salaried position at a reputable company. Personally, I'd rather take less pay and have less job security at a company that's just starting out and trying something new and innovative than join the ranks of an established business. There are just tons of factors that play into it and each person's ideal scenario is going to differ.

Naethyn
02-07-2017, 06:52 PM
The best way to learn how to code is to use it to solve a problem. Creating a solution to solve a problem is the best driving force to learn that I know of.

I recommend staying away from a formal education. It is one of the few high paying fields out there that you will see college education or years experience. Unless you want to go into radar signaling or something that requires high level math. The most important class you can take in college is Composition Writing. My entire life people told me I'd need math to be a programmer - it isn't true. Composition writing will teach you to write in a concise way that results in the clearest possible message. This is relevant because your code should be written in the easiest possible way to understand.

Working remote becomes a possibility when you find yourself no longer learning from your peers. It is possible before then, but it is far better to learn from a master in person.

It is also very important to know that you do not need a "killer idea" before you start learning the tools. In fact, I'd argue that just about every good idea comes from knowing the tools very well. "Once I come up with a great app idea I'll learn to make it" (don't think like this)

tldr; Find a problem to solve and fix it.

Naethyn
02-07-2017, 07:03 PM
Wow, dunno where you are, but I give entry level jobs to University or Community College grads, not guys with one cert under their belt... I've worked in industry as well as government, it's the same. No shortcuts, get at least a 2 year Community College certificate so you know more than one thing badly.

Regards,
Mg

This is a very interesting perspective. I've found that most places hiring programmers are deathly afraid of a fresh college grad with zero experience. Almost always someone who has certs or actual experience is preferred. Obviously this is exempt from work programs offered through colleges, but that is usually cheap unit test labor.

Unless of course you are talking about working for the government. A great opportunity for a new programmer, but a huge pay cut after you've reached your 2 and 5 year mark compared to the market of a big city.

Oh ya, make sure to record the date that you get payed to be a programmer. A clock starts ticking. After 2 years you're worth double and at 5 it doubles again.

SamwiseRed
02-07-2017, 07:15 PM
The best way to learn how to code is to use it to solve a problem. Creating a solution to solve a problem is the best driving force to learn that I know of.

I recommend staying away from a formal education. It is one of the few high paying fields out there that you will see college education or years experience.

I agree with the first part but every gov't or security sensitive programming job I've seen wont even look at you without a degree. At least all the places around here (New Mexico.)

SamwiseRed
02-07-2017, 07:17 PM
The thing is a computer science degree really shows employers you are a problem solver. Anyone can learn to code, not everyone can use code to solve problems.

Naethyn
02-07-2017, 07:20 PM
A computer science degree that will only be used in a tiny amount of areas. A college degree proves you can commit to something and follow through, and I could say the same about an Eagle Scout. The problem is CS doesn't actually provide any benefit unless you are in a specialized area (read: not actually making money - usually working for government)

There are two types of programmers. The 8-5 crew who is there to do a job (government), and then there is the guys who would be doing this anyways and mine as well get payed for it.

PS. check it for yourself: https://www.indeed.com/jobs?q=software+engineer&l=new+mexico
"Bachelor’s degree in Computer Science (related field) or equivalent work experience"

SamwiseRed
02-07-2017, 07:26 PM
A computer science degree that will only be used in a tiny amount of areas. A college degree proves you can commit to something and follow through, and I could say the same about an Eagle Scout. The problem is CS doesn't actually provide any benefit unless you are in a specialized area (read: not actually making money - usually working for government)

There are two types of programmers. The 8-5 crew who is there to do a job (government), and then there is the guys who would be doing this anyways and mine as well get payed for it.

PS. check it for yourself: https://www.indeed.com/jobs?q=software+engineer&l=new+mexico
"Bachelor’s degree in Computer Science (related field) or equivalent work experience"

Odd because all the employers I talked to face to face require a degree. This included every state/federal gov't jobs as well as all the good paying research and development jobs. I graduate next semester so I've kinda looked around into this.

Naethyn
02-07-2017, 07:27 PM
I'm saying that state and federal jobs require a college education. It is the places actually making money (big websites, b2b services, app developers) that don't care at all about college education and would rather have someone with minimal experience on the job instead almost every single time.

shatterblast
02-07-2017, 08:55 PM
Let's consider C# and Java from the perspective of making a game as a hobby. For those two, the main options are: Unity3D (https://unity3d.com/) that focuses heavily upon C# and LibGDX (http://libgdx.badlogicgames.com/) that goes with Java. On that note, there is also Unreal (https://www.unrealengine.com/) for C++ usage, but I am only giving it slight attention in this message post.

In the beginning, the choice begins with what language you prefer. The three engines I listed have similar performance, and they start out free. It is common to begin with 2D graphics as you learn. I suspect that is a reason why so many Indie games look like they originated from the Super Nintendo / Sega Genesis era. If you even care about that, check out Steam (http://store.steampowered.com/) maybe.

Unity3D supports more platforms than LibGDX in the area of gaming. In my meager opinion, LibGDX allows for more code control. From a professional view, Java on its own innately supports more platforms. However, stuff like Mono (http://www.mono-project.com/) is allowing C# to catch up a bit.

I am not aware of how sensitive C# is to reverse-engineering. As of the time of this posting, the best protection of code in the wild for Java seems to involve a client to server relationship similar to Diablo 3. That alone isn't enough of course. As examples, Spine (http://esotericsoftware.com/) and Minecraft (https://minecraft.net/en-us/) employ that tactic with whatever measures of success.

As a final note, mixing Blender (https://www.blender.org/) and Manuel Bastioni's work (http://www.manuelbastioni.com/) can be fun. I am using some of the stuff as a reference for my 2D hobby. Also, Krita (https://krita.org/) rocks if you can draw. It can go well with GIMP (https://www.gimp.org/), depending on how you use it.

Jerin
02-08-2017, 02:31 AM
As for bullshitting your way through interviews, I'm a programmer with 30 years experience and now at a Director level, so I'm the guy across the table from you at an interview. It will take me 10 seconds to figure out if you're full of shit. In fact I've probably made you write a test before you ever get to sit at the table.


im learning this more the rule and not the exception. know your shit

mickmoranis
02-08-2017, 05:28 AM
yea def dont try to pull the wool over a programmer they already nihilists as it is, dont push em.

I think one of the best things you can do if you are interested in programming but dont know where to start is go to your local city college and take an Intro to C++ class to familiarize yourself with the basics. Then figure out what you're interested in and research languages that are the leading industry of your choice's flavor of the month.

Lots of ppl are using python in AI tech right now for example, idk if its going to stay that way, it may, it may not, but whatever. but if that's what you were interested in trying out in the imitate future spend like 2 years at city collage and try to get a job in tech. Tech is nuts they programmers like crazy.

Or decide to just go all in and do get a degree if you cant quite figure out how to forge your own path.

But dont try to BS your way into any jobs and take it all seriously cus like everyone agrees, they'll catch you and have no remorse when they throw your resume in the garbage.

Also if you dont want to take a class, find an intro to c++ book that schools use and just read/work through the whole thing. Youll be suprised at what you can accomplish after even just that.

shatterblast
02-09-2017, 01:09 PM
make a dinky rpg and look up how to do shit as you go

experience is better than studying

Seriously though, looking stuff up is studying. It's more than memorizing whatever for some test. It's about knowledge, understanding, and maybe even "wisdom" if you go that far into it.

mickmoranis
02-09-2017, 03:05 PM
Seriously though, looking stuff up is studying. It's more than memorizing whatever for some test. It's about knowledge, understanding, and maybe even "wisdom" if you go that far into it.

thats true but you'll never fucking know why you see <iostream> or why you're using a double long instead of a float without someone to ask questions to in a class.

I definitely think that being around other programmers for at least 1 semester > reading/doing 10,000 books and tutorials.

programming, even if you can do it, can be a very inefficient way of doing everything if you dont know why youre doing anything.

maskedmelon
02-09-2017, 03:17 PM
thats true but you'll never fucking know why you see <iostream> or why you're using a double long instead of a float without someone to ask questions to in a class.

I definitely think that being around other programmers for at least 1 semester > reading/doing 10,000 books and tutorials.

programming, even if you can do it, can be a very inefficient way of doing everything if you dont know why youre doing anything.

I understand where you are coming from with this. I honestly think a lot more professions should involve apprenticeships. There is SO much to be learned simply from watching someone else's work flow. I've learned more in 10 minutes of watching someone work than I have from several books (other fields).

mickmoranis
02-09-2017, 03:21 PM
Yea.. I think its important to be in a situation where you can turn and say, hey why the fuck is this happening? to someone.. becuse when youre doing something like coding.. you could be doing it 110% correctly and still be like, "well shit I have no idea why that works.."

GradnerLives
02-09-2017, 05:25 PM
Plenty of jobs in web-dev, both freelance and salary. I'd recommend javascript as a starting point over Java/C#/C++ as it's easier to test/play around with, the fundamentals of object oriented programming will apply across the board, and the job market is enormous.

If you do follow that course, however, get into React or Angular right away (well, as soon as you understand the basics of the language). Learning more traditional web frameworks and then trying to apply that knowledge to the way React and Angular work is honestly more difficult than just starting with them from the get-go.

It's a great time for eager web developers. Massive shifts away from the more traditional app design standards as well as the adoption of ES6 (newish standard of javascript) have really changed the landscape. It's been a real equalizer between new grads and industry vets.

Web dev also has the advantage of being very 'flavor of the month'. You don't find many companies with weird esoteric requirements. For the most part, they're all looking for people with experience in the same 5-6 libraries as everyone else. Alot of other platforms can get very specific and you'll wind up getting a huge amount of experience in a C# library or reporting system that won't really apply to other positions. Just makes for an easier job-market.

If you're starting out, make the projects that you want to make. Just think of something that would be neat and see it through until it works the way you pictured. Push your changes to github often so that a potential employer can see that you're consistently working.

You don't need a CS degree for 90% of web dev positions, but you DO need to be prepared to show them why they shouldn't be concerned that you don't have one (relevant experience must be demonstrable, otherwise it isn't that relevant). Have a full github, have a knowledge of the types of questions you'll be asked in an interview, speak to developers to get an idea of what sort of things to focus on in the interview.

shatterblast
02-09-2017, 05:47 PM
Yea.. I think its important to be in a situation where you can turn and say, hey why the fuck is this happening? to someone.. becuse when youre doing something like coding.. you could be doing it 110% correctly and still be like, "well shit I have no idea why that works.."

Yea.. I think its important to be in a situation where you can turn and say, hey why the fuck is this happening? to someone.. becuse when youre doing something like coding.. you could be doing it 110% correctly and still be like, "well shit I have no idea why that works.."

I'll agree that you are both right. Having input available helped a lot for my first Java 8 certification. In regards to Java, Enthuware (http://enthuware.com/) and StackExchange (http://stackexchange.com/) assist with my WTF moments in that language.

My school recommended Lynda (https://www.lynda.com/) and uCertify (http://www.ucertify.com/) as study aides, but I feel those sites only assist so far. Yep, human interaction does more.

shatterblast
02-10-2017, 04:05 PM
It seems I made a mistake in my above post, and I can't edit it now. I should have quoted maskedmelon instead of just mickmoranis.

mickmoranis
02-10-2017, 04:07 PM
It seems I made a mistake in my above post, and I can't edit it now. I should have quoted maskedmelon instead of just mickmoranis.

No, I like that you quoted me twice, makes me feel smart/important.

paulgiamatti
02-10-2017, 09:17 PM
It will pay off if you aren't incompetent like the person you've described. And no, in IT degrees are not worthless, and they will still make you more marketable and more desirable to companies who don't require degrees.