Should I know GUI to become programmer

Pages: 12
I would recommend getting used to event driven UI programming. Positions working for smaller companies, or startups, might be more fun than working for a large companies like Microsoft, because you will likely have more control over the projects you work on, including the overall design and vision of the product, but you might be required to do a little bit of everything. IMO it would be more fun in the long term to be required to do different types of tasks regularly, compared to having one type of task day in and out, just trying to match strict specifications.
Last edited on
Cubbi wrote: <something about job paying really high for core c++ library maintenance and expansion>

It pains me to see this as a rebuttal to my "console-only is beginner stuff" when the person who got the job is almost certainly proficient in so much more than console programming. Yes I suppose it's possible to get places without knowing GUI programming (and obviously console programming can get outrageously complex), but personally every programming job I've had has required writing a GUI, with one exception. Let's face it, as a programmer, it's pretty much an unofficial official requirement.

EDIT: removed idiotic remarks, overly inflammatory rhetorical questions, and a misunderstanding over which quote of mine Cubbi was quoting from.
Last edited on
closed account (N36fSL3A)
You're acting like people only program Personal Computers.
sargon94 wrote:
It pains me to see this as a rebuttal to my "console-only is beginner stuff" when the person who got the job is almost certainly proficient in so much more than console programming. You think that console-only is a reasonable way to prepare yourself for a future in programming?


I think that learning testing and debugging, data structures and algorithms, concurrency and networking, object design and metaprogramming are all areas with higher return on effort than GUI, at least in the C++ world. I'm against the notion that painting a window is a "next step" after learning how to compile and execute an application.
Ok... I think we mean different things by "console programming". Everything you mentioned (with the partial exception of networking) is something I knew before GUIs and I certainly agree are borderline essential. I consider all of that "console programming" because to me, console programming is literally programming done exclusively with a console (as an output, I don't mean programming with the console itself). I think most classes teach almost everything you've mentioned before seriously bringing up the concepts of GUIs.
I think most classes teach almost everything you've mentioned before seriously bringing up the concepts of GUIs.

That's ridiculous. Whatever order you learn those things in, serious work on most of those concepts extend much further into the expert programming domain than GUI. I would say that, in general, GUI programming is in the realm of beginner to intermediate difficulty.

And I don't get why everyone is criticizing Lumpkin. The first time I read his "lower level" jobs post, I immediately knew he was talking about lower level programming, and I agree with what he said. GUI programming is higher level than embedded programming, programming at the system level, API level, or library level. If your job description is geared towards lower level stuff, you probably won't be asked to mess with GUI's. You should be able to quickly learn how to do any type of programming when required though.
Last edited on
I highly recommend learning GUI api (or a library at least) if you want to work making GUI programs. Any program that a company sells to general public will have a GUI. From AVG to Firfox to Git even. Just about every program that is released has a GUI.

It's not required, though, since the libraries are made in C++ and you can learn them fairly easily. The Windows API is a different beast entirely, though.

I would recommend learning a library, like QT, so that you at leastunderstand the mechanics behind the design.
Last edited on
closed account (Dy7SLyTq)
GUI api (or a library at least)
wouldnt those be the same thing?
and no one said you shouldnt learn how to do gui programming. its a good skill to have. we were just arguing that it wasnt as highly regarded as sargon thought

From AVG to Firfox to Git even
git doesnt have a gui. there are clients for git, but git itself is command line

Just about every program that is released has a GUI.

im going to assume you meant commercially there

I would recommend learning a library, like QT, so that you at leastunderstand the mechanics behind the design.

completely agree. qt is an amazing library. i would learn all three though, sdl, sfml, and qt. it can make your life easier
I found GTK easier to install than QT, but the list of windowing APIs could go on forever.
closed account (Dy7SLyTq)
really? i installed it just fine and im on linux, which can usually be harder to install on than say windows or osx. i managed to build sfml though which i found very hard to build so that could be why i found it easier. i forgot about gtk though. thats a good one to learn too
I'm not going to bring up arguments again, but I do want to say this in case anyone gets the wrong message: If you want to go into programming as a profession, learn GUIs. I suppose the order may not matter, personally I'd place it after mastering classes but perhaps before delving into things like opengl (it's just a one man's viewpoint, not something to take literally).
closed account (S6k9GNh0)
Knowing how to make a GUI for a program quickly and efficiently is always a plus. I unfortunately still can't bring myself to touch a UI toolkit at the moment (especially Qt).
closed account (3qX21hU5)
sargon94 wrote:
I'm not going to bring up arguments again, but I do want to say this in case anyone gets the wrong message: If you want to go into programming as a profession, learn GUIs.


You are making it seem like you NEED to know how to program GUI's in order to program professionally which lets be honest just isn't true (As others have pointed out before me).

First I would like to point out that the software engineering profession is much much more niche then it used to be. What I mean by that is most likely any good sized company you go to will have very specialized groups of programmers that work only on one subject or a small group of subjects (Which could be anything). You usually won't see people jumping all over the codebase working on networking code one day, UI the next and then jumping into some tool development the next.

So not knowing anything about GUI's will not stop you from getting a job. I am sure there are plenty of programmers out there that have no idea how professional grade GUI's work but can create some of the best "Insert subject here" code you have ever seen.

Though as cubbi mentioned a small company you will need to work on a bit of everything. Which brings me to my next point.

Second GUI programming doesn't teach you really anything that you can't learn doing other aspects of programming. It uses the same concepts that are found in many other aspects of programming. I mean can anyone name something that is only found in GUI programming (I am genuinely curious)?

Now am I saying that one shouldn't learn at least the basic architectures of GUI's? No I am not I just saying it is not a MUST like you are making it out to be.
Last edited on
Zereo wrote:
I mean can anyone name something that is only found in GUI programming (I am genuinely curious)?

Model-View-Controller (with all of its variations) comes to mind.
closed account (N36fSL3A)
So basically just learn X11 and WinAPI and you're good?
closed account (3qX21hU5)
Model-View-Controller (with all of its variations) comes to mind.


The same (Or similar) design is very popular in game development. You have the Application Layer (deals with hardware and OS), Game Logic Layer (The games state) and the Game View Layer(s) (Presents the game's state with graphics and sound, ect). I wouldn't say it is the exact same as MVC but it is quite close.

I would also say the abstract concept of MVC could be applied to many different types of programs.
Last edited on
closed account (S6k9GNh0)
No, you don't learn X11. You learn the libraries that sit on top of X11, like Qt or GTK+. I've spent the past three hours pulling my hair out trying to query the Xorg server for basic information such as available monitors using XCB. It's not something you want to deal with directly.
closed account (N36fSL3A)
Meh, alright. But wont that limit what jobs I can get?
closed account (S6k9GNh0)
I doubt anyone is cruel enough to make you mess with X11 directly. At worst, you may have to deal with GLX or RandR which is via XCB or Xlib. But even those have abstractions via Qt or SDL.

EDIT: Seriously, Xlib and XCB are two of the most convoluted APIs I have ever seen. To top it off, it's lacking any critical documentation so you end up doing things "trial and error" style or by looking it up via implementation (which often doesn't help anyways). The design itself reeks of the 80s, and even modern C90 code is more usable and convenient. It's just very unpleasant.
Last edited on
Topic archived. No new replies allowed.
Pages: 12