Showing posts with label COBOL. Show all posts
Showing posts with label COBOL. Show all posts

Tuesday, 25 November 2025

Tech skillsets: Go deep or go wide? (Part 1/2)

"Jack of all trades, master of none" is a term I've heard all too often when fellow techies describe my stint as a web developer. Back then, I was a generalist dipping my sticky fingers into every new and shiny tech I encountered. In a sense, I'm still that web developer. Just with more money.

Go deep or go wide?

I want to explore the pros and cons of generalizing as opposed to specializing, especially in the context of today's tech landscape. The industry needs both specialists and generalists. That's a simple fact that shouldn't need some nobody tech blogger pointing out, but sometimes people get overly emotional about defending their stance. Want to specialize? Cool, do that. Want to generalize? Also cool, go crazy. But we need to be cognizant of the tradeoffs.

The case for specializing over generalizing

Before every tech and his dog started calling themselves "full-stack developers", specialists seemed to earn a whole lot of money. That was back when I was reading job ads asking for "deep expertise" and extensive work experience in more narrow scopes such as back-end programming and database administration. Some areas, such as COBOL programming, pay a lot for the simple reason that COBOL is still largely in use but COBOL programmers appear to be a dying breed. I've touched a lot of programming languages, but just enough to qualify as a hobbyist in each one. I have a decent frame for comparison between them - a Python lecturer of mine was actually quite entertained at my comparisons of the language to PHP and Ruby - but that often isn't very useful in the professional sense.

Specialists earn big.

The companies whose budgets are large enough to afford to pay for specialists, also tend to use these specialists for projects that are grand in scale. Projects that actually require deep expertise. Projects that add incalculable value to one's CV.

Deep knowledge is also useful for judging the extent of one's resolve and commitment. After all, it takes plenty of both to spend the effort. I personally know someone who specializes in HTML and CSS. It's a very narrow niche and perhaps not very profitable, but undeniably impressive.

Generalists - quite unfairly, I might add - seem to have developed a reputation for being easily distracted. Lacking the necessary discipline and focus required to specialize. I would actually say it takes an extraordinary amount of discipline to avoid going too deeply down one rabbit hole and shutting out everything else, but that's not the general sentiment. Therefore, in some circles, generalists are seen as those who were unable to specialize as opposed to specialists being unable to generalize.

The conventional advice when it comes to tech specialization, is to specialize in one area while simultaneously being decent in a few related areas. For instance, if you're a Data Analytics guru, you may want to specialize in statistical analysis and mathematics, but at the same time get reasonably good with Data Visualization tools and learn a bit of Python. If you're a primarily a Front-end Developer, learning some simple database concepts would be a useful addition to HTML, CSS and JavaScript. Maybe pick up a few frameworks such as ReactJS or VueJS, just to round things out.

I won't argue against that advice, but these days it feels like nothing is ever enough.

Next

We explore the opposite case!

Sunday, 14 April 2024

How worried should software developers be about Devin AI? (Part 1/2)

It's time to talk about a couple things, regarding AI. All of which have to do with some recent occurences in the software industry.

First of all, Devin AI. It's been the talk of the software industry in recent weeks.


Devin AI is the world's "first AI Software Engineer" produced by Cognition AI. It's an automated system that performs like your average web developer - code, trawl the web for solutions, read documentation, test code and produce reports, among a myriad of other tasks. Except that being a machine, it does all these a hundred times faster.

Users feed it prompts in natural language. It then produces codes, tests and documentation, based on those prompts. Sounding good, so far? Astounding, even. Words like "groundbreaking" and "game-changing" have been used. Of course, those same words were used when Bitcoin came on the scene, followed by NFTs, and then the Metaverse. I'm not saying that this development will go the same way, but recent history has made it hard not to be skeptical.

For software developers, Devin AI sounds like a useful tool, or a even a nice virtual member of the team. Something that can take care of the tedious grunt work while you concentrate on better things.

For employers, it looks like huge potential savings in terms of developer wages. Hey, why pay developers if an AI can take care of the bulk of their work? And if we're being honest, we all know a team member or two who could stand to be replaced by AI.

Reports tell us that Devin AI has managed to solve a whopping 14% of software problems it was given. This is not sarcasm; I know it doesn't sound terribly impressive especially since we don't know if those problems were FizzBuzz level or banking application level, but bear in mind that it can only get better from there.

The use of natural language to communicate requirements to Devin AI sounds potentially shaky. Seasoned software devs would probably know the correct terms to use in order to get results, but non-technical users are going to have a rough go of it. If even fellow human beings sometimes find it difficult to effectively communicate due to language and cultural barriers (even when they're using the same language and are from the same culture) I can't imagine it being any easier for AI. Granted, I could simply be suffering from a failure of imagination.

Jensen Huang

At Dubai earlier in February, Nvidia CEO Jensen Huang made waves with a speech, which seem to have raised some hackles in the software development industry.


"I'm going to say something and it's going to sound completely opposite of what people feel. You probably recall over the course of the last ten years, fifteen years, almost everybody who sits on a stage like this would tell you it is vital that your children learn computer science. Everybody should learn how to program and in fact it's almost exactly the opposite. It is our job to create computing technology such that nobody has to program and that the programming language is human. Everybody in the world is now a programmer. This is the miracle. This is the miracle of Artificial Intelligence. For the very first time we have closed the gap. The technology divide has been completely closed and this the reason why so many people can engage Artificial Intelligence. It is the reason why every single government, every single industrial conference, every single company is talking about Artificial Intelligence today, because for the very first time you can imagine everybody in your company being a technologist..."


I'll begin by saying that he certainly seems to be saying things that investors and shareholders are going to find appealing. As to how feasible it all is, well... at the risk of sounding like one of those developer elitists I hate, I'm tempted to dismiss that speech also because he doesn't seem to have any relevant software development process. Speechmakers waxing lyrical about things they don't know about is an unfortunate habit which isn't all that uncommon. But hey, for all I know, this guy could be a coding genius, so let's not go there.

Let's be honest. Software developers can be a tremendous pain in the ass to put up with. We can be temperamental, egoistical (a prime example being all the whining I hear online about the audacity of trying to automate our jobs), and have this utterly annoying air of superiority due to being the technical person in the room. And in cases of non-tech companies with very traditional wage structures, trying to pay us competitively while not compromising those structures can be an almighty struggle. Not gonna lie - I can absolutely see the appeal.

Being able to write apps without having to deal with software developers or do the work of learning to code? Pretty much the layperson's tech wet dream.

Then again, I would put significantly more stock in that speech if Jensen Huang were to put his money where his mouth was. Why stop at removing software developers? Why not replace his entire development team at Nvidia with Artificial Intelligence, to produce more Artificial Intelligence?

All this seems like marketing speak. Because there's no way Huang could have meant it all in earnest. My best guess is, this speech was meant for stakeholders who don't necessarily know any better. Sure, AI will generate code for us. That's not new. You know, whenever I want to make an API endpoint call, I use existing software to generate the code for me, in Python or JavaScript or PHP, because I can't be bothered to remember the entire damn sequence in multiple programming languages. Have I lost my job because I don't have to write that code any more? No, it simply means I can work faster and not get bogged down by minutia. Just because something else wrote the code for me doesn't mean I don't have to verify it. And in order to verify it, I need to be able to understand the code.

I've been learning Japanese kanji. Just for fun, you understand. Take the Japanese kanji below. It means "Sunday".
日曜日


The middle character is one of the more complicated ones I learned in the past year. Can I write it? Have I committed it to memory? No, and no. But do I need to? My phone types it out just fine, and I can recognize it right off the bat. Someone who has only studied Chinese characters (like me, two years ago) would read that entire sequence as "day bright day". But someone who hasn't studied Chinese characters or Japanese kanji wouldn't recognize it at all.

There's the analogy. Software devs looking at computer-generated code have a decent chance of understanding it. People who have had a bit of related training might misunderstand the code. If non-tech people look at code,  they're likely to see only gibberish. 

If AI is supposed to generate code, and no one has learned how to code, no one can understand what AI is doing. Still think people should not learn to code?

However, Huang has a real point when he implies that coding as we know it, is about to change forever. That's because with or without AI, the nature of coding has always evolved. In the 1960s, programmers were using punch cards on mainframes to code. Are we doing that now? Later on, languages like COBOL  came into being. How many of us are still using them now? Now we have frameworks and fancy tools to do most of the heavy lifting. We don't even need to indent our own code anymore - we have linters for that.

Get comfortable with change. It's exactly what our industry produces.

Next

Examining the pros and cons of AI.

Saturday, 25 May 2019

Ten tech languages that may resemble people you know

If you're a developer, or even just a tech hobbyist or IT student, you've probably dabbled in quite a few languages. Ever notice just how human some of these languages seem? By "human", I don't mean "natural language", though that certainly helps. No, I mean, some of these languages may exhibit characteristics that look suspiciously similar to those of your friends, or just people you know.

Let's go through a list of some of the languages I've used...

Editor's Note: This list is not limited to just programming languages. Any tech language is fair game.

1. COBOL

COBOL is the crotchety old ex-military woman who has coffee with you every morning and yammers on incessantly about her bratty grandchildren. It's been half a century since she first started working, but she's a tough old coot and refuses to retire.

COBOL is an old, intimidating lady.
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
PROCEDURE DIVISION.
DISPLAY "Hello world!".
STOP RUN.

She's fairly cantankerous and not very sociable, and if you don't know her well, she can seem very intimidating. She rarely speaks in a whisper - every sentence is loud and abrupt. She's also unabashedly old-school, and to hell with you if you have a problem with that. (And yes, I think of COBOL as a female entirely because of Grace Hopper).

Treat COBOL with respect. She's been around a long time and may even be around long after you're gone. A lot more people would miss COBOL than they would miss you. She's that important. She shouldn't be, but she is.


2. Java

Java is a classy businesswoman. She's so classy she has her own garbage collector. Unfortunately, she's also a bit of a snob and tends to objectify everything. She's also very opinionated and has very fixed ideas as to the correct way of doing things. She absolutely refuses to communicate any other way. She hates comparisons with that tramp JavaScript (see further down the list). Java also thinks of herself as edgy, but she really gets off on popularity just like JavaScript - she's just a lot more coy about it.

Java's a bit of a
pretentious snob.
public class HelloWorld
{
    public static void main(String[] args)
    {
        System.out.println("Hello, World");
    }
}

Keep Java around. She can be useful when you're trying to reach a wider audience because of her popularity - and, her reputation for being proper and "classy" will give you some cred -  though her penchant for doing things the long and pedantic way is a pain in the ass for times you need to keep it simple. Java doesn't do simple. She is something of a pontificator - she never uses a simple one-liner when she can use five lines to bring her point across. Perhaps she thinks this makes her look intelligent, though sadly, she just comes across as really insecure.

3. SQL

You know the library nerd who has read a lot of stuff and is just bursting to share it with you? SQL is that guy. Or "Sequel", as he likes to be called, because it sounds cool.

SQL reads a lot.
SELECT "Hello World!";

SQL is a wealth of knowledge - there's rarely anything he hasn't read about. Problem is, he can be a major windbag. He gets carried away. If you make the fatal mistake of asking him for everything he knows about stuff, you could be there all night because the dude just doesn't know when to stop talking unless he runs out of information. Sometimes the key to getting along with SQL is to filter. The more specific the filter, the better.


4. PHP

PHP is the blue-collar workman who wanders around in battered workboots and stained jeans. He's comfortable to hang out with, but he gets judged hard by fashion snobs and anyone who associates with him gets judged as well. In recent times, he's attempted to spruce up his image by learning new things and wearing new clothes, but they always seem a little ill-fitting on him. Clothes maketh the man, but in his case, everybody can see that beneath all that jazz, he's ultimately the same guy. Props for effort, though!

PHP is a handyman.
echo "Hello World!";

The problem is, PHP was basically an odd-job guy until people started calling on him to do everything. At some point, he got overworked and stopped being able to keep up.

PHP is still a good guy to hang with, but you may outgrow him at some point.

5. BASIC

BASIC is a few years younger than COBOL, but opted to retire much earlier. He's an elderly gent who likes to keep things simple yet flexible. You may remember playing very rudimentary computer games (like chess) with him back in the day.

BASIC is a retiree.
PRINT "Hello World!"

The guy's always glad to see you, and he's still great for teaching kids how to code. Keep him around for nostalgia, if nothing else.

6. Ruby

A young spirited lass who's low-key yet effective. Ruby doesn't call attention to herself or put on airs. Basically, Ruby is a great communicator. Unlike Java or C++, who are just wordy, Ruby is friendly and easygoing and tries hard to use common sense to interpret you so you don't have to jump through hoops to be really explicit with her. This sometimes takes her a while, but the effort doesn't go unnoticed. She's probably the easiest person to get along with, and doesn't judge you.

Ruby's your best friend.
She understands you.
puts "Hello World!"

Everyone needs a friend like Ruby. Content not to hog all your attention and hum along amicably in the background, she's useful in a pinch for undertakings both big and small.

7. HTML / CSS

HTML used to be the fun single guy you could hang out with all night. He was the guy who introduced you to the Internet and all its wonders, your constant companion as you roamed the information highway.

HTML and CSS are a
lovely chic couple.
<h1>Hello World!</h1>

However, ever since he got hitched with CSS, it's exceedingly rare to see them without each other. CSS dresses HTML up nicely - he was frankly a little plain and shabby before she came along - but he's the one who gives her existence meaning. Without HTML, there is no CSS. They're a lovely couple nonetheless.

8. Markdown

HTML has a much younger and poorer cousin. His name is Markdown. He does a lot of the same things as HTML back in the day, but in an even less verbose way.

Markdown is HTML's
younger poorer cousin.
# Hello World!

When you need to do documentation, that's when Markdown really shines. Some see him as HTML-lite, which isn't too far from the truth... but when you need a fast and friendly way of rendering a webpage without too many bells and whistles or just a way to slightly spruce up an otherwise boring text file, Markdown is your guy. He's a simple fellow, but in his limited scope, he gets shit done just fine.

9. JavaScript

What can we say about JavaScript, or JS, as we like to call her? She's a bit of a good-time girl. She's sexy, playful (or "promiscuous" as this guy would say) and isn't choosy about who she hangs with, and she's really casual. You don't have to slowly tease or romance her to make her give up the goods. Treat her as shabbily as you want. She likes it!

JS is an easy girl.
alert("Hello World!");

In her early days, she used to only engage in hot threesomes with HTML and CSS. But she's moved on to greater things now. These days, she's everywhere. She can add color and flash to your shopfront, or she could be the hardworking engine at the back making things work.

At the heart of it all, JS is one hell of a capable woman who can get serious and professional with you, yet cut loose like a wild thing in a different setting. Just don't give her your heart. She'll break it, though she never breaks her promises. (heh heh)

10. C++

C++ is that senior marathoner whom you need to be very explicit with. He's capable of doing some truly awesome stuff, but communicating with him can get a bit hairy at times. He runs fast - astonishingly fast - and when you need real power, C++ is who you call. Despite his advanced age, this guy is speedy and robust.

C++ runs fast, even at his age.
#include <iostream>

int main()
{
    std::cout << "Hello, World!";
    return 0;
}

C++ has few social skills to speak of and is only popular with the really brilliant guys. He has a reputation for being just as wordy as Java. The only difference is that C++, due to having a really specialized job, actually needs to be verbose. C++ rarely run the simple races - that's for lesser mortals like PHP and Ruby.

Disclaimer

Any of these descriptions remind you of people you actually know? That's just a coincidence. But that really hammers home the point, doesn't it; tech languages have very human characteristics, probably as a result of having been written by actual humans and worked on by a huge number of other humans.

std::cout << "Bye, Reader!";
T___T

Friday, 8 March 2019

Women Can Code, Get Used To It (Part 2/2)

Sometimes guys in tech don't handle the presence of women well. They appear to take it as a challenge to their dominance or some crap like that. Their reactions seem to pretty much stem from resentment. "She's hot, sexy and she can code, perhaps even better than me. It's not fair!" Again, developers are people. People come in all shapes and sizes. Thus, developers come in all shapes and sizes. Leave your Prototype Bias behind.

Yes, that could be
a programmer. So what?

Also, who said life was fair in the first place? A female developer can have big boobs, look way hotter than you, get laid more often than you and code better than you. Suck it up, buttercup!

But it's true! Women just aren't as good as men at tech...

Buddy, let me stop you right there. There are plenty of perfectly good hills to die on, so you might want to give this one a pass.

I'm not part of any kind of feminist movement, or some wannabe white knight. I am a software developer, and while I may not be a master of my craft, I understand the history of my own industry enough to say this: women can code; it's an objective fact.

Did you know that the first ever computer algorithm was written by a woman? I shit you not; there's even a programming language named after her.

When's the last time you used an ATM? 95% of these worldwide are still powered by COBOL. Guess who was largely responsible for COBOL's development roughly six decades ago? That's right - a woman. Rear Admiral Grace Hopper, to be exact.

And before the above-mentioned woman asserted her belief that code should be written in something close to English (like all the fancy programming languages you and I use today), people were still dealing with machine language and assembly. Guess what the vast majority of them were? Yep - friggin' women.

So yeah, let's have no more rubbish about how women can't code, OK?

Programming is about logic. And women are creatures of emotion, not logic...

Seriously, arguments like these are not helpful. So are people claiming that women are more detail-oriented and intuitive, and more suited than men for task x and job y. If you're going around saying things like that, you may think you're complimenting women, but in reality you're part of the problem.

Even if it's true that women are more x and men are more y, nobody with any ounce of professional pride wants to compete in terms of gender. If we start hiring based on gender (women for QA and men for programming or whatnot), a great deal of talent will remain untapped. And in a world where the demand for tech talent far outstrips the supply, this is not a good thing.

But there are more men than women in Silicon Valley!

Yes, that's true. Men outnumber women by a ratio of maybe five to one. But understand this - capability has nothing to do with it. Programming isn't some rocket science reserved for the intellectually endowed, though as with all disciplines that require logic and thinking, a high I.Q can't hurt.

Programming?! Ew, no.

No, software development is as much about temperament as it is about anything else. Not everyone wants to code for a living. It takes a certain kind of personality to want to do this professionally. And, for some reason or other, women seem to want the life of a software developer less than men.

Not just men

Sadly enough, that bias is not restricted to men. Women, too, subscribe to the stereotype that other women generally aren't as technically gifted as men. Take this conversation I had with a friend a couple years back.
Her: ...so my colleague developed a whole suite of applications using Excel macros. She learned it all by herself, did her research on the Internet and everything.

Me: Mmm. OK.

Her: She's a girl.


She listed the accomplishments of the colleague above, and when I did not appear impressed enough, tried to compound it with an added accolade - "she's a girl". Now, that's pretty insulting. I understand that my friend didn't mean to be derogatory, and she was genuine in her admiration. However, compliments like these do more harm than good.

Achievements are praiseworthy on their own. Achievements don't magically become extra deserving of praise simply because they were done by "a girl". That is like saying women, by default, are inferior to men, and therefore if they achieve anything, their achievement deserves more admiration. That's sexist and counter-productive. Not to mention condescending!

Conclusion

That's why we shouldn't glorify women in tech. Glorification of the idea that women can code, is giving credence to the Prototype Bias that women can't. I get it, people who do this have (probably) good intentions and are trying to help. But no, they're really not helping.

Because there is nothing to glorify. Women can code. They've been able to code even before I was born, and somehow people seem to have forgotten that when they get all excited over it like it's some new and special phenomenon.

It's not supposed to be special. It's supposed to be normal. It shouldn't be a big deal because it isn't. All of us - men and women - need to stop thinking of tech as a male or female profession. It's a profession, period.

Time to man up, developers!
T___T

Thursday, 28 September 2017

War of the Programming Languages

What's the best language for the web?

Is it Java, the Android OS platform's poster boy?

Is it C#, currently Microsoft's darling?

Is it PHP, Python or Ruby? JavaScript, even?

Your guess is as good as mine. Proponents of any language have, and are still, engaging in vigorous debate (I'm trying to be kind here) as to why their language of choice trumps all other languages. On the web, there are ongoing bitter flame wars between fans of Java and C#. C# vs VB. Python vs PHP. And then there's the whole Object-Oriented Programming vs Functional Programming debate. Open-source vs Proprietory. List goes on forever.

This ought to put to rest the myth that techies are ruled by cold, hard logic. Now, if these were some rabid non-techie fanboys screaming about how superior iOS is to Android, that would be infinitely more forgivable. But these are tech people. Why are techies behaving like children, or worse - laypeople?

Watch any of these debaters. They'll bring out all the flaws of other languages, compare it to the amazing awesomeness of their chosen language, and fanboys of all stripes will have a field day - or a hissy fit. And when that happens, I don't see seasoned professionals. I see a bunch of woefully insecure nerds trying to obtain validation in their choices. Heaping disdain on those who choose to do things differently. Scorn. Hostility, even.

To what end? Does this shit make you guys feel clever, or something? Do techies making choices different from yours, somehow threaten you? Has choice of a programming language or platform suddenly become some kind of religion?

There are no blanket solutions

I've repeated this often, because this bears repeating: There are no blanket solutions. Not in many industries, and certainly not in the web industry. As a developer, the greatest disservice you can do to yourself is to willfully and deliberately close your eyes to the possibilities that other platforms and languages bring to the table, and the power they add to your arsenal. There is no programming or scripting language in the world without flaws. Sure, it's good to know the ins and outs of your tools, especially the environments in which they thrive most. But, using it as a justification to use one language to the exclusion of all else, is an exercise in futility. Especially on the web.

At the end of the day, languages are merely tools. Use the correct tool for the correct occasion. Because, as with the Law of the Instrument, when you only know how to use a hammer, pretty soon everything starts looking like a nail. Don't be that kind of developer.

Everything is a nail.

Everyone has invested time, sweat and tears honing their craft. No one wants to feel like they wasted all that effort on learning to use tools that aren't relevant. But no matter how much we'd love to believe in a tech meritocracy where the most objectively superior platform should be dominant, the fact is that things aren't as cut-and-dry as all that.

Some languages, like JavaScript and PHP, came to prominence back then because there weren't many other options, and they've filled their respective niches so well that uprooting them at this point would be more trouble than they're worth. You can't possibly tell people that your chosen language is absolutely superior and expect them not to snigger. There is no absolutely superior language. No such animal exists. Superiority is completely context-dependant.

Also, bear in mind that at the heart of every programming language, is a philosophy. Certain languages enforce certain practices. Certain languages make it a point not to enforce a damn thing. The kind of person you are determines the kind of languages you gravitate towards. There is nothing wrong with any of that. You like what you like. Your choice is perfectly valid, and let nobody tell you different.

It doesn't matter what you know...

Here's another line I'm fond of repeating: It doesn't matter what you know. What matters is what you can do with what you know. It is not your choice of language which you should be obsessing over.

Take PHP, for example. PHP is the go-to whipping boy of nerds who consider themselves "proper" programmers. PHP to scripting languages, is what Donald Trump is to the Presidency of the United States of America. Want to look enlightened? Want to appear clever? Pick on PHP! It's the perfect target. Point out all its flaws, and bemoan the fact that it's even still in use today. Sure, PHP is a badly designed language. Sure, PHP does object orientation poorly. Sure, PHP is a hodge-podge of features that feel tacked on. And yep, PHP enforces bad programming practices through its laxness.

So what?

You know what uses PHP? Flickr, for one. Yahoo! is another. Wikipedia. Goddamn Facebook!

Yes, I know C#, Java and Python have done pretty well too, but this isn't about what others have done using those tools. It's about what you have done using your chosen tools. Using the language of your choice, what have you created that's even half the significance of Flickr, Yahoo!, Wikipedia and Facebook?

Drawing a blank? You've done nothing to champion your chosen language other than talk about it endlessly on the Internet? Hey, this is just a suggestion, but maybe, just maybe, it would be far more productive to STFU, roll up those sleeves and get cracking!

Time to work.

Bjarne Stroustrup said this in his book The C++ Programming Language, and I think it's particularly apt even today.
"There are only two kinds of languages: the ones people complain about and the ones nobody uses."

Or, how about, say, COBOL? What, you've never heard of it and therefore it must not be important? Junior, COBOL has been around since the 1960s, and at the time of this writing, it's still kicking ass in the banking industry. It does more in a day than you've probably ever done in your hipster kiddy-script writing life, and this is not hyperbole.

All I'm saying is, show some respect. The languages you love to rag on, have earned it.

Enough is enough

Dear developers, you're part of an honored tradition that harkens back to the days of Ada Lovelace and the first algorithm. Passion is fine and all, but this empty one-upmanship is beneath you. Stop arguing. Go forth and create.

guys.chillout();
T___T