• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Tim Cooke
  • Liutauras Vilda
  • Jeanne Boyarsky
  • paul wheaton
Sheriffs:
  • Ron McLeod
  • Devaka Cooray
  • Henry Wong
Saloon Keepers:
  • Tim Holloway
  • Stephan van Hulst
  • Carey Brown
  • Tim Moores
  • Mikalai Zaikin
Bartenders:
  • Frits Walraven

Computer Science vs. Software Development

 
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I've been having a conversation with various folks about the gaps between academia and industry. In one thread, the idea was offered that "Computer Science != Software Development." While I can understand what that is supposed to mean, the other side to that statement is the question, "Then why are companies looking to hire Computer Science graduates into Software Development positions?" The answer offered was "Because there are no other degrees. CS/CIS is a catch-all for all computer-related jobs. If you want to get a job in IT/Technology, you go get a degree in CS." I don't completely buy that but in many respects, that does reflect reality or at least the general perception.

Separating CS from Software Development can get tricky though, and downright dangerous perhaps in the worst case scenario. If we are graduating people from our schools who only know about the theoretical aspects of the "science" of computers and software (algorithms, data structures, logic, Big-OH, etc.) but don't know the first thing about the principles, patterns, and practices that go into creating good, quality software, don't know how to refactor, detect code smells, write unit tests, write integration and acceptance tests, follow rules of simple design, good software architecture, good API design, good software development process, and everything else that competent and disciplined software development professionals do, then I fear we're going to end up with so much more messy and messed up software than we as an industry are prepared to handle and fix.

Is Uncle Bob's ominous warning of impending disaster in his "The Future of Programming" presentation (for the warning, forward to 1:09:00, at the tail end of the video; but watch the whole presentation anyway!) something we can afford to get into a Climate Change-esque debate about? Can we afford to debate/discuss this issue until the cows come in while not trying to do anything about it until it's too late?

What should be / can be done to get better alignment between industry and academia? I'm facilitating a workshop later this month, on April 21, in Charleston, South Carolina to try and bring students, educators, and software professionals from industry together to discuss some of these things.

I have a number of ideas for discussion points already but would appreciate any input folks here might have. Thanks.
 
Saloon Keeper
Posts: 15727
368
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The problem lies in thinking that you need scientists to do labor. Universities are for educating scientists, people who will further our body of knowledge. People who want to become programmers should go to "programming school".
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
But how do we tell colleges and universities out there that they need to create curricula for Software Development instead of CS and offer degrees in SD instead of CS? Or was that even the idea?
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Also, is software development really labor? I think I know what you mean by that but I think the idea has to be framed differently.  In the field of medicine, do we consider general practitioners as doing "labor" and only the medical researchers the real "scientists" worthy of the M.D. title/diploma?
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The idea has already been put forward in my other conversations that more focus on Software Engineering topics needs to be added to current Computer/Technology education.
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Stephan van Hulst wrote:Universities are for educating scientists, people who will further our body of knowledge.


I don't know. I think there might be a fallacy in that statement. Most people I know who go to university have a goal of getting a job in an industry that is related to their course of study. Sure, a percentage of students go into research and development but if everyone went to uni with the goal of furthering the body of knowledge in a field of study, then again, why are so many Computer Science grads applying for work as software developers?
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Stephan van Hulst wrote:Universities are for educating scientists, people who will further our body of knowledge.


And are professors who give this kind of example for "appropriate internal documentation" in a department-wide "Documentation Policies" document really advancing the field's/industry's body of knowledge?

Does it really promote good education if you dock students points (up to 50% the highest possible mark!) if they don't follow this style of documentation? I know that I would not recommend this style on my projects.

Is the following reasonable and does it reflect industry practice?

"Documentation is perfect except for two undocumented methods.  Grade of 100 points is reduced to 90."
 
Stephan van Hulst
Saloon Keeper
Posts: 15727
368
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I believe that people who go to a university to learn programming have been misguided. I know it happens a lot over here, people who finish the highest level of secondary school are expected to get a degree at a university afterwards. If you're into programming, then the most logical choice is Computer Science, but many of these people don't realize it's better to get a college degree in IT if that's what you want to do.

Indeed, most of my colleagues (and I too!) have actually dropped out of university as soon as they got a job with a software company.

I also think you're mistaken in thinking that professors are the type of people who should be teaching people good programming practices.
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Stephan van Hulst wrote:I also think you're mistaken in thinking that professors are the type of people who should be teaching people good programming practices.


Gah! Then we're doomed. Where are the teachers then? I credit my teachers in college with setting me on the right path to become a good programmer.  They didn't teach me everything but they did give a good, solid foundation. I'm sad that you would say such a thing.

And I'm hoping there are more professors out there who would disagree with you than there are who won't.
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
This makes me wonder how widespread the sentiment is that getting a CS degree is just a necessary evil, something you must get to have an edge in finding a job despite the seemingly inutility of a large portion of what you have to learn in such courses. If this is so and more people come to this realization, aren't schools in trouble? Aren't we as an industry in trouble, too? If this were happening in the field of aeronautics and rocket science, would it be acceptable to have people who don't have the formal training to go and design and build airplanes and rockets? Sure, there are plenty of hobbyists out there, but you kind of need qualified engineers to build real rockets that can go into orbit around the earth and beyond, right?

I'm not saying you need a CS degree to be a good programmer—I consider myself a pretty good programmer and I have a BSME with some courses taken in CS; no CS degree though. What are the odds of a company hiring a hobbyist over a CS degree holder though, all other things being equal (skill, aptitude, experience, etc.)? Would it be a toss-up or would the CS grad have a slight advantage? I don't know. I might go with toss-up, to be honest.
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
On that note, where is the dichotomy between Rocket Science and Rocket Development?  If you go to uni to get a degree in Rocket Science, wouldn't you be angling for a job with NASA or SpaceX or something, as an engineer who builds rockets?  Why wouldn't someone going to school to study Computer Science be expected to be able to graduate and find a job doing, what, Computer Development? Building Computers? That's not what Computer Science is about right? It's about computer software. So naturally, people expect to be able to get a job creating computer software after they graduate with a degree in Computer Science?

Is this logical is there a false analogy there? I think those are kind of the lines along which most people think about this though.
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
One thing useful I'm getting out of this is that it seems to me I'm going to have to lay some ground rules to keep the discussion in the workshop under control. I don't want to fall into a rabbit hole debating things like CS != SD.
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Maybe the difference between Computer Science and Software Development/Engineering is similar to the difference between Architecture and Civil Engineering.

They are related fields of study but they focus on different kinds of things. Any other analogies?

I'm not even sure what the right order of the analogy should be:

CS:SD <==> Arch:CE

or

CS:SD <==> CE:Arch

?
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I'm trying to think of similar dichotomies in other fields of study.

If you study and get a degree in ... can you not expect to find a job in the industry ... ?

(logical ones)
Chemistry... as a chemist
Business (accounting) ... as an accountant
Business (management) ... as a manager
Business (finance) ... as a financial officer
Business (operations and logistics) ... as an operations and logistics manager
Civil Engineering ... as a civil engineer?
Mechanical Engg ... as a mechanical engineer?
Rocket Science ... as a rocket scientist?
Math ... as a mathematician
Statistics ... as a statistician
Physics ... as a physicist

(iffy ones)
Computer Science ... as a computer scientist (but NOT as a software developer?)
Music ... as a professional musician? music teacher?
Liberal Arts... liberal artist? Fast food cashier? WalMart greeter? Waiter? (just kidding)

 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Or are aspiring Software Developers supposed to just go to a trade/vocational school? Is software development just a trade/vocation then?

Trade/Vocational school:
Auto Mechanics
Carpenters
Masons/Bricklayers
Tailors/Seamstresses
Plumbers
Electricians
Garage maintenance
Crane operators
Welders
Dental Hygienists (?)
Nurse Associates (?)
Software Developers (?)

Hey, work is work, and good, honest, hard work is divine. I would have no beef with the idea of having to go for a Certificate as a qualified software developer if that's what it takes for me to get a good job as a software developer. But that's not how it works in the real world, at least not right now, I don't think.
 
Saloon Keeper
Posts: 28319
210
Android Eclipse IDE Tomcat Server Redhat Java Linux
  • Likes 1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
There's a distinction in industry between "code monkeys" (or as we called them locally, "code toads") and "software engineers".

Real engineers tend to get bent about that last, but the usual career path for a programmer has been to start by doing rote work, then building up to the point where one starts selecting algorithms and doing creative stuff, including designing new algorithms.

There really doesn't seem to be a good analogue in any other profession and it's one reason why no academic or testing program ever seems to be able to credibly certify software people. A goldsmith might start as an apprentice and work up, creating a literal Master Piece to establish a place amongst the masters, but he or she wouldn't normally be expected to come up with an entirely new method of smelting, casting, or alloying as a matter of course.

On the purely academic side, in theory, you earn a Doctorate of Philosophy by submitting an original advancement to the field, but realistically the advancement is often incremental, whereas in technology, major advances are routinely expected. And almost no employer demands or is willing to pay for an actual Ph.D. in Computer Science. Often, even a Masters Degree can retard one's prospects.

I'd also make the distinction between true Science and "Computer Science", because while we tend to call almost all advanced technology "Computer Science", I think that most would be more comfortable defining a "Computer Scientist" as one who does research into computation or the process of software development, a la Djikstra and Knuth.

Getting back to the idea of certification - and I have a vintage copy of the Certified Data Processor's Study Guide in my closet - the field is both too new and too broad to have credible certification. Sure, you can get an RHCE or CCNA, but that's not the same thing as general competency. Yet general competency means things like being fluent with one or more major programming languages, compilers, linkers, and binders, many times (but not always) networking and/or databases, Internet Protocols (sometimes), Security and secure transport/storage, and many other things beside. No "one-size-fits-all" exam could deal properly both with a mainframe COBOL/JCL/CICS expert and a Ruby-on-Rails web expert, much less any of the various disciplines (and library sets) of Java, Ruby, Perl, Python, PHP, etc., etc., etc.

In fact, the real hallmark of a truly competent computer expert is their ability to go from zero-to-60 in an entirely new technology stack quickly. Which would be very hard to test even if corporate HR didn't have this irritating habit of demanding 10 years of experience in 3-year old technologies.

Software Development is a mix of rote work and creativity. It's part craft, part art, and part engineering. And pretty much unique in that respect. Engineers can be artists, but they have a relatively small set of materials to learn and work with, so it's mostly a matter of knowing a relatively small number of rules and applying them. In contrast, an awful lot of programming comes under the heading of "to make a peanut butter and jelly sandwich: first, create the Universe..." We don't have Materials Handbooks, we frequently create our materials from First Principals. We don't have handbooks full of property tables, at best we have Knuth, the GoF and a few other references for proven algorithms and design patterns. And most of what we do ends up completely outside of those boundaries.
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks Tim, a lot of good points, which I'm going to steal borrow

The question arises though: Are schools just graduating a bunch of "code monkeys" from their CS programs? Is that the industry's expectation? I hope not, on both counts. Granted, the hard truth is that there are grads who wouldn't even qualify to be a "code monkey" but there are also very talented kids coming out of school. How much were they helped (or hobbled) by the education system?
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
To anyone following the discussion, this seems to be going in many directions and even possibly digressing but these are all good thoughts that will help me put parameters around the workshop discussion. Thanks for the input so far, guys. Please keep those thoughts coming!

To make an analogy: I want to chum the waters with these ideas and discussions to see what kind of sharks come around sniffing and biting. That will help me build a cage to keep the workshop safe and insulated from getting pulled in directions that might not be so useful.
 
Sheriff
Posts: 28326
96
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Junilu Lacar wrote:This makes me wonder how widespread the sentiment is that getting a CS degree is just a necessary evil, something you must get to have an edge in finding a job despite the seemingly inutility of a large portion of what you have to learn in such courses.



It's very common to take academic course-work in which you have to learn things which are (or appear to be) irrelevant to what you're going to do when you move on to real life. Sometimes it's because the course is recapitulating the history of the field and you're learning things which have been superseded; I'm sure there are lots of examples people could think of.
 
Paul Clapham
Sheriff
Posts: 28326
96
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Stephan van Hulst wrote:People who want to become programmers should go to "programming school".



My nephew did exactly that. Where I live there's a trade school which had a two-year computer programming course. (Don't know if it still does.) So he took that course and got his tech degree. He got a job offer from a US company but then he couldn't get a visa because he didn't have a bachelor degree. But now he's over 40 and has a job as VP of a local software company.
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Interesting, Paul. So it might be reasonable to suggest that colleges and universities think about offering two-year ”Associate in Software Development" programs, kind of like how there are similar two-year courses in Nursing where you get some kind of diploma, just not a BS. However, there does seem to be some negative bias towards these where they are seen as inferior to a bachelor's degree. This, as it did with your nephew, greatly impacts your ability to get a job, as well as the kind of compensation that you get offered / can command.

There's a substantial difference in the pay offered to nursing grads who have a two-year associate's degree/diploma versus what four-year BSNs get offered. I can imagine a two-year program with a strong focus in software development principles, practices, techniques, and technology producing graduates who have far more superior talent/ability in programming than many graduates coming out of the four-year programs in CS/CIS we have today. At the same time, I wouldn't be surprised if companies did not consider graduates of those kinds of "trade-focused" programs as deserving of equal or better compensation than their counterparts who have four years of education and a BS or BA degree.

That seems patently unfair and would take some time to overcome in the industry through education of HR departments everywhere. I don't know how practical or even possible that would be though.

Thanks for that input.
 
Bartender
Posts: 1381
39
IBM DB2 Netbeans IDE Spring Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Stephan van Hulst wrote:Universities are for educating scientists, people who will further our body of knowledge.



I disagree. Not all people getting a degree in a  university will actually get further human knowledge, no matter the  field of their studies - engineering, medicine, law and so on. Most of them will just get an higher level on personal knowledge.

People who want to become programmers should go to "programming school".



Well, in this case I'd say: it depends. I can speak of my own experience: I got my Computer Science and Engineering degree fifteen years ago - so the actual scenario may have strongly changed since my times. I studied a lot of math, chemistry, electronic, and many other matters typical of an engineer's background. For sure, I did not learn programming at university. And no professor ever claimed to want to teach anyone programming. They taught students general principles of algorithms, OOP, information theory (I mean, Big O notation, computability and tractability of problem, NP hardness and so on). Despite the fact I enjoyed their teachings, and I have much respect for their knowledge and intelligence, I think that with no exception all of my teachers would be very bad programmers. I learnt programming mainly on my own. And after, when I was hired in a software house, I learnt programming day by day.

I have a solid engineering background, but ultimately that's not what I'm payed for. I'm payed to write code -  there's nothing bad in that, moreover I like programming. But a Computer Science Engineer isn't automatically a good programmer, and good programmers are what companies are searching for, generally speaking at least.  Being an engineer may make the differences only in a few cases, for example when you have to study and apply complex algorithms - in my own experience there were only a couple of occasions were my computer science background helped me a lot, when I had to deal with optimization problems.

I'm proud to be an engineer, but I'm pretty sure that being a CS engineer doesn't give you many professional advantages, at least in Italy. Maybe in your country things run differently. Most of times, I'm told that all the hard work I done to get a CS degree was only a waste of time, "Wikipedia teaches you everything",
"Copy and paste from a programmer's blog" and so on. A colleague once told me something that sounded  like "I'm God at searching on Google, so I saved your five years on studying engineering and got your same results." And guys thinking like him are countless....





 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Thanks, Claude.

I guess I lucked out with my instructors. Most of them had industry experience and from what I can remember, they were not shabby programmers. That was a long time ago though and my standards have since changed but I have to judge them on what I remember and what was considered "best practice" at that time. That time was when Structured Analysis and Design was the order of the day. I went to college in the Philippines but was lucky to have professors who had master's degrees from places like Australia, the United States, and had even spent some time studying in Italy. In my "Introduction to Pascal Programming" class, my first ever programming class, our instructor cited Niklaus Wirth, E.W.Dijkstra, and the "Goto Considered Harmful" paper so there was a strong emphasis on good program structure and organization in the way I was taught. The same instructor also liked to show us messy code and contrast it with more elegant versions. In a way, I guess you could say that I was imprinted with the idea of good code vs. kludgy code right from the start.

I don't see that happening much any more. I have been sorely disappointed with the course materials my son has had in his two Java programming classes at a major university here in the US MidWest. Already halfway through his second course, they are still being asked to write mostly static methods in Java classes that would be better off having a more object-oriented design but are in fact just a collection of globs of procedural code sitting in a syntactically-required "class" bucket.

By the way, I graduated with a Bachelor of Science in Mechanical Engineering degree but have worked as a software developer from the time I graduated in the late 80s. I was a really bad student, completing my first and only bachelor's degree in just under NINE years. But I met my future wife while taking CS courses to stave off my boredom/disinterest in my ME classes and fill the time I had in my schedule because my ME class schedule was so irregular. As it turned out, I was a better CS student than most of the regular CS guys and gals, so I just kept taking more CS classes until I finished up the last of my BSME degree requirements. I actually had two job offers by the time I graduated, one from each of the two large multinational pineapple processing and packing corporations in Mindanao (there are only two and they cover large portions of the north and south parts of the island, respectively), both offers for a Junior Programmer position in their respective MIS departments.
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Switching gears a little bit: Coming back to the workshop that I'm facilitating in a couple of weeks, I'm going to be putting students through exercises that simulate what they'd experience in a technical interview or audition. The exercises are meant to see if students know the kind of things that industry professionals would expect them to know by the time they graduate.  One of the main goals of the workshop is to see what industry folks consider important for graduates to know so that they can hire to their needs and not have to spend so much time and money on training/retraining entry-level hires. This will help identify the gaps that academia might want to address first.

The exercises I have in mind focus mostly on basic coding principles and practices, things that I would expect/like fresh grads to already know:

1. Refactoring - coding exercises that requires mainly Extract Method, Rename, and Composed Method refactoring
2. Refactoring - exercises in getting rid of Redundant Comments code smells by refactoring the code for clarity and expressiveness
3. Unit Testing - exercises to see what gaps there are in the practice of unit testing.
4. Problem Solving - exercises to see what gaps there are in the ability to analyze, recognize appropriate solutions (choosing the correct algorithm or pattern)
5. Program Structure and Organization - exercises to see if students are able to recognize common code/design anti-patterns (Arrow Code, and Singleton with broken double-checked locking, for example)

Any other thoughts, suggestions? My idea is to lay all the exercises out and get industry participants to choose the ones they are most interested in.

What kind of exercises would _you_  give students to see if they know the things you'd really like them to know by the time they graduate?
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Claude Moore wrote:Despite the fact I enjoyed their teachings, and I have much respect for their knowledge and intelligence, I think that with no exception all of my teachers would be very bad programmers. I learnt programming mainly on my own. And after, when I was hired in a software house, I learnt programming day by day.


I find that part about teachers being bad programmers a little disturbing, actually. I also consider myself largely self-taught, despite the solid foundation I got from my instructors in college. I think as software developers, that's just how it is because advances in our field in languages, techniques, and technologies are constantly forcing us to adapt and retool, learning new things becomes a matter of staying relevant and competitive.

However, to expect that people who teach about software would be bad programmers seems like expecting people who teach about medicine to be bad doctors, or people who teach about aviation to be bad pilots. I think we'll find that in any industry, some of the best teachers are the ones who actually have experience in the field and are/were competent professionals. As I already mentioned before, most of my instructors were and I think that has made all the difference for me personally.
 
Claude Moore
Bartender
Posts: 1381
39
IBM DB2 Netbeans IDE Spring Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Junilu Lacar wrote:
Most of them had industry experience and from what I can remember, they were not shabby programmers. That was a long time ago though and my standards have since changed but I have to judge them on what I remember and what was considered "best practice" at that time....



Even in the classes I followed arguments like "best practices", "OOP principles", "software analysis" and so on were treated, and I'm quite sure that my professors too were involved in real IT projects.. but as far as I can remember none of them has ever been a programmer.
Principles of software engineering has been rigorously taught throughout al classes; but they were taught independently from any language (Java, C++). Only a few examples of coding were given. The rest of the story depended on the willing of the single student.. to deep further, or not.


Junilu Lacar wrote:
I don't see that happening much any more. I have been sorely disappointed with the course materials my son has had in his two Java programming classes at a major university here in the US MidWest. Already halfway through his second course, they are still being asked to write mostly static methods in Java classes that would be better off having a more object-oriented design but are in fact just a collection of globs of procedural code sitting in a syntactically-required "class" bucket.


Incredible....

 
Claude Moore
Bartender
Posts: 1381
39
IBM DB2 Netbeans IDE Spring Java
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Junilu Lacar wrote:
I find that part about teachers being bad programmers a little disturbing, actually.


Junilu, to avoid misunderstanding, please let me do an example.
I am (or suppose to be) a good Java programmer. Every day, I write a lot of Java code professionally,and I strive to adopt best practices (learnt on books as well as at university); I know quite a number of tricks with  Eclipse, NetBeans, WebSphere and so on, and a good variety of Java libraries for doing my job. In this sense, I can declare myself a (good) Java programmer.
Now, I studied Node.js and javascript on server side. I know that Node.js is a very fast JS runtime. I know about fluent API approach. I know about Express. I know about risk - and solutions - of the problem of "callbacks hell", and so on. How much experience in real coding Node.js code ? Pratically zero. This makes me a bad programmer with Node.js. I would be able to explain all above concepts. But while I'm autonomous with Java, in the sense that I can write code, classes, I know perfectly its sintax, the same with Node.js simply doesn't apply with me. I'd need to proceed step by step, very slowly. Sure, I'd able to write a good program in Node.js. Principles of programming are the same, no matter the language is... but no company would hire me as experienced Node.js programming.
A professor of mine is an ACM fellow, one of the cleverest guy I ever met. He had a deep knowledge of patterns, OOP, and so on. I'm guessing he never used Eclipse or Visual Studio more than a dozen of times. Simply, because it was not his job ! Following your examples, he was not a guy teaching medicine without knowing a thing about diseases, anathomy and so on. I was a scientist studying diseases, but without patients to visit or cure.



 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I get where you're coming from, Claude. I guess it was just the way you said it, that "with no exception, all my teachers would be very bad programmers."

I think it's reasonable to expect some teachers to have no industry experience but still be good at teaching the things they do. At the same time, there are people who do have good industry experience, are very good at what they do professionally but suck at being teachers. Then you have those gems who are both good teachers and good professionals in the field. I think it's unfortunate the we don't have more of the latter.
 
Paul Clapham
Sheriff
Posts: 28326
96
Eclipse IDE Firefox Browser MySQL Database
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Junilu Lacar wrote:Interesting, Paul. So it might be reasonable to suggest that colleges and universities think about offering two-year ”Associate in Software Development" programs, kind of like how there are similar two-year courses in Nursing where you get some kind of diploma, just not a BS. However, there does seem to be some negative bias towards these where they are seen as inferior to a bachelor's degree. This, as it did with your nephew, greatly impacts your ability to get a job, as well as the kind of compensation that you get offered / can command.



As I understand it, there's a lot of people out of work in the US because they expected to get a job at the local furniture factory or whatever. Those people never expected to have to go to university and their schools didn't force them to prepare for that. And as I understand it there's a lot of organizations which are looking for programmers. And you don't really have to go to university to become a competent programmer. So where's the program which connects those two phenomena?
 
Junilu Lacar
Sheriff
Posts: 17696
300
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator

Paul Clapham wrote:As I understand it, there's a lot of people out of work in the US because they expected to get a job at the local furniture factory or whatever. Those people never expected to have to go to university and their schools didn't force them to prepare for that. And as I understand it there's a lot of organizations which are looking for programmers. And you don't really have to go to university to become a competent programmer. So where's the program which connects those two phenomena?


It's funny that you said that. I just watched a short video of Jaime Dimon, CEO of JPMorgan Chase, saying something to that effect, that he thinks "it is a disgrace" (his exact words) that many kids are not getting the basic education that they need and that many are graduating from schools but are not prepared for work.

Jaime Dimon, CEO, JPMorgan Chase wrote:The outcome is you want the kids finishing school and be trained enough to get a decent job.


I should note that he said that in the context of talking about how many kids in America's inner city schools are not graduating. I assume he meant high schools. The published material that the video was linked to also specifically called out high schools and vocational schools. No mention of colleges and universities.

You can watch the video I'm referring to here: https://www.youtube.com/watch?v=S7GbdD-imSE - The link to the written material is included on that video's description. The reference to high schools and vocational schools is under a section titled "Education is leaving too many behind"
 
Ranch Hand
Posts: 54
1
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I think that they're should be a courses or two added that deals with real world skills. Or at least require students to take some sort of self study where they are forced to have to prepare for the real world. I know if I had to do a self study course like that, I would definitely have had a lot more real skills. Yes, it may add to an already intensive cirriculum, but look at the curriculum of engineering majors, which are probably the lengthiest programs. I think we could extend our curriculum by a few credits. It may take students longer, but in the longer run, we will have graduates that are much more prepared and competent. That's just my idea that I want to inject. Totally original, just thought of it.
 
Create symphonies in seed and soil. For this tiny ad:
Gift giving made easy with the permaculture playing cards
https://coderanch.com/t/777758/Gift-giving-easy-permaculture-playing
reply
    Bookmark Topic Watch Topic
  • New Topic