Reading Programming

Jul 11, 2005 08:50 # 37038

Tetrazome ** posts about...

My first coding job

93% | 3

I'm 19 now. For the first time in my life I have a full time job programming. I remember oh so many years ago when I discovered this site (jebus I think I was in middle school, when I go back in the fall I'll be a sophomore in college) I asked majic questions like: "How do I make a text adventure? Do I need pointers?" My job now? Rewrite all the very win32-centric GUI C++ code for a physics graphing application to use OpenGL and make it crossplatform to run on Linux and OSX. And have it done by the end of the summer. Thank god I understand pointers :)

It's technically an internship, but I'm a few states away from my boss and get to choose my own hours as long as I've done 40 by the end of the week and send him builds. I'm lucky to have snagged it -- he (my boss) e-mailed the CS department very late in the year about his offer after most people had already found internships (I hadn't applied for any because the ones they had all looked like I'd end up coding VB), and my college has a Java bias (I started teaching myself C++ in highschool).

I'm curious what other's first real coding job was like. Did you feel you had a good grasp of what you were doing? I definitely dived in deep -- it'd been a long while since I'd coded C++ and I had never really made a large application in it, although I've coded plenty of Java and Python in the interim. I also have to deal with a double edged sword: My boss, by his own admittance, didn't fully know what he was doing when he first made the application. He knew C and was just learning the basics of C++. As a result his code isn't very object oriented, has a weird mishmash of C and C++ (his classes are basically just structs with functions), and is commented poorly. This is obviously bad for me because I have to read and deal with his code. It's also good because the "better than what he had before" standard is very easy for me to reach :)

Like I said he coded it in a very win32-centric fashion. What I've done so far is recreate some of his GUI simply by running his app and observing it, then recreating from scratch. But now I'm to the part where I have to start looking through his code to see how to do the various plots that the app performs, and I'm getting a headache (the first of many, I'm sure). Here's my toolkit, hopefully ensuring a better codebase than the old one:

-wxWidgets, to allow for native looking crossplatform gui.
-boost, so I don't need hardware pointers for certain things and for crossplatform object serialization.
-OpenGL, straight calls. It's all simple 2D rendering so using one of the opensource 3d engines out there would be overkill.

I've learned a ton in just the first few weeks. I've already experienced the nightmare of rewriting my OOP hierarchy because it was a poor design. I can already see problems with the current one but I'm thinking it'll be 'good enough' for quite some time.

Compared to other job starts, is this a horror story or a dream? ;)

Edit: Also, I have to say, C++ is a horrible language from my limited use of it. The only reason it could possibly still have any hold is that it's the fastest language that can handle big projects available. C is fast, but without OOP and encapsulation built into the language it won't get chosen for large projects. Java is OOP but too slow. C++ just has too many little things you have to remember. E.g.: Can I initialize static members in a class definition? Only if it's an int. WHY?! Should be allowed or not allowed for all types.

"Nurture your mind with great thoughts, for you will never go any higher than you think."

This post was edited by Tetrazome on Jul 11, 2005.

Jul 16, 2005 01:28 # 37213

Aynjell *** replies...

Re: My first coding job

I'd be glad to have such a challenge. My biggest hurtle is a lack of motivation. I simply can't find anything worthy of my time. Not because I'm so damn good, but nothing interests me enough that I absolutely have to code it. Having a deadline and a paycheck over my head would definitely make it worthwhile. As for that game of yours, anything ever happen with that?

I'm currently making my own game for that exact reason: I can't find _ANYTHING_ to do so I'm starting from scratching making a text based adventure game, I'll then play with and learn GTK so I can add an interface, and then I'll make it point and click using Open GL most likely. (Think SCUMM)

The fun part will be when I go to make the first pnc game. My goal is to make the entire game in a development environment. I figure that's the best way. Don't add anything to my game unless I did it with the GUI I wanna make. That way I can be sure that he first release will be enough for users to at least start to play with.

After I get some nice background, who knows. Also this project is called ETIAD.

I should be ashamed of myself.

Jul 16, 2005 07:03 # 37220

Tetrazome ** replies...

Re: My first coding job

I had the exact same problem. My advice would be to get into a routine. Making sure you work on the project for a certain amount of time every day. If you get stuck, making a forum post or asking for help on IRC 'counts.' Of course, I heard that advice all the time and never followed it. Here's what probably works better :)

Good motivators:

0) If you can find a paycheck to put over your head, that certainly does help ;)

1) Find a simple piece of software you want but that doesn't exist yet. Then make it. The first time this happened with me was with the minimal WMs you find all over Linux.

I thought the context menu that most of them display when you right click the root window was ugly. I also didn't like the idea of having to edit a config file every time I wanted to edit a menu option. So I made a replacement with Python and PyGTK that would look in a folder, ~/.menu, for symbolic links to apps. For every symbolic link it found it would add an entry to the menu, and then it would search a set of predetermined folders (like /usr/share/pixmaps) for icons to use. It was poorly written at the time so I don't use it anymore but it was a good learning project.

2) Keep games small. REALLY small. The smaller, the more likely you'll actually finish it. Try to choose types of games that stick to a minimum of artwork, like if you want to try out 3D, try doing a game mostly based on particle effects. It's really easy to get an idea too big even with something that seems simple like a text adventure. Try coming up with a text adventure that only takes place in say 10 rooms, but make the most of those rooms.

3) Find a DSL (Domain Specific Language) or ASL (Application Specific Language). That is, find something designed to be scripted. I became a much better programmer because of Warcraft3. I kept wanting to do more elaborate stuff in the engine, which pushed me to learn JASS, Warcraft3's scripting language. DSLs and ASLs are good to learn and practice in because it doesn't take as much time to make something that's immediately satisfying and cool. On Linux Sawfish and The GIMP are both scriptable, although I've only taken a crack at Sawfish, and that means tackling Lisp which can be a little brain bending if you've never done it.

4) Try the Code Katas. I'm going through them on and off. They're short enough to hold your attention but still hone your skill.

"Nurture your mind with great thoughts, for you will never go any higher than you think."

This post was edited by Tetrazome on Jul 16, 2005.

Jul 18, 2005 05:15 # 37253

charlie *** replies...

Re: My first coding job

78% | 2

I'm curious what other's first real coding job was like. Did you feel you had a good grasp of what you were doing?

My first real coding job is the job I have now (it is possible to get a good job without an internship. Hard, but possible).

I work with medical software that manipulates a database with 340 tables. I couldn't keep all the variables, fields and tables straight for weeks!

The software is written in an obsure language that resembles VB, but I've never programed VB (my CS prof said it was a waste of time. I'm gonna go back and visit him and tell him how wrong he was).

My boss, by his own admittance, didn't fully know what he was doing when he first made the application.

Yeah, my boss didn't really understand all the intricate workings of the medical industry when he first wrote the software. Now it's my job to organize and figure out all his mess :).

Compared to other job starts, is this a horror story or a dream? ;)

Dude, I have a friend who codes for Wells Fargo. He has zero control of what he writes and when, he hates his bosses, and the office is run like an episode of Dilbert. It could always be worse. At least you have control of what you do everyday. If you can handle it, that's a great privilage.

Have a fun summer. Be sure to get out some too (Lord knows it's even harder for coders. Our minds are already scrambled before we have social interaction).

Please contiune to vote AND post.

This post was edited by charlie on Jul 18, 2005.

Jul 18, 2005 20:27 # 37259

Tetrazome ** replies...

Re: My first coding job

The software is written in an obsure language that resembles VB, but I've never programed VB (my CS prof said it was a waste of time. I'm gonna go back and visit him and tell him how wrong he was).

What's the language called? I remember my algorithms prof this year talking about how he used to work in a language specifically meant for medical databases :)

"Nurture your mind with great thoughts, for you will never go any higher than you think."

Jul 18, 2005 21:54 # 37262

charlie *** replies...

Re: My first coding job

The language is called Progress. It has built in database connectivity, so it's quite fast at accessing databases. It's much more intuitive than SQL. You have a table variable type, so you can just mix all your field names and values right in with instance variables. I think I've pretty much forgotten how to write SQL by now.

But since it isn't a big name like Java, C++ or .NET it still has a lot of funny quirks. And the documentation is almost no help at all.

Please contiune to vote AND post.

Jul 18, 2005 21:37 # 37260

majic *** replies...

Re: My first coding job

Dude, I have a friend who codes for Wells Fargo. He has zero control of what he writes and when, he hates his bosses, and the office is run like an episode of Dilbert. It could always be worse. At least you have control of what you do everyday. If you can handle it, that's a great privilage.

This is exactly the reason why I don't seek out a programming job. I don't want to be a code monkey who is told what to code and how to do it. I instead write code in my free time under my own rules. It works out better for me that way and I can do it on my own schedule.

On a side note that kinda pertains to what you were talking about. I'm working now as a Sr. Network Administrator for a project that deals with the medical field. In a nutshell the systems and software that automates medical records on the battlefield for the US Army. It's a pretty sweet deal, although the company I work for isn't the company that writes the software. However we can suggest ideas and such to them for inclusion in later releases.

www.mc4.army.mil

This post was edited by majic on Jul 18, 2005.

Jul 19, 2005 00:12 # 37263

Tetrazome ** replies...

Re: My first coding job

This is exactly the reason why I don't seek out a programming job. I don't want to be a code monkey who is told what to code and how to do it. I instead write code in my free time under my own rules. It works out better for me that way and I can do it on my own schedule.

I've already had a couple instances where I've been like, "err... ok..." My boss has a screwy indenting style :P

"Nurture your mind with great thoughts, for you will never go any higher than you think."


Favorites (edit)

Small text Large text

Netalive Amp (Skin for Winamp)