|
So, from the safety of the Internet...
...
...
... Nope. Still can't do it*.
* Mind, your portfolio of articles here kinda denies the possibility, anyway.
I wanna be a eunuchs developer! Pass me a bread knife!
|
|
|
|
|
What makes a good developer good? First, it's providing value. Oh, the buziness bullshit bingo, it basically means providing solutions for the problems. Second, you need to strike a balance between having tuned your brain down in the 60s and always chasing the new cool kid on the block (JS frameworks, anyone?) Both extremes are dangerous, you need to find a path in between. Third, right tool for the job. Python may, once again, be the cool kid on the block and not even the fashion of the day but pretty much here to stay, but why should I use it? At work, I use Delphi which does everything that Python does and as a matter of fact, it does it better (at least until Python 3 which cleans up a lot of bad decisions in the language design). That's indeed my main motto: The right tool for the job. I recently introduced a couple of C++ features into a C codebase for two reasons:
1. Low cost. The compiler is a C++ compiler already so no changes to the tool chain
2. Wins in maintenance. I will never get the upside of manual memorry management and while my coworkers indeed have tuned out in the 60s, I prefer using the last decades of CS to my advantage.
Low cost, quite the win->Do it immediately. Porting the whole thing to Delphi (or Python) would have been way more costly with more benefit yes, but with quite the high costs of throwing parts away that, while they do look like the jungle, are at least well-tested.
|
|
|
|
|
I like being a Developer,
which to me is "Develop"
not just coding, not just designing, not just maintaining, not just deploying, but bits of many disciplines.
as for learning new stuff, mainly frameworks. What I found with Javascript, is that I started with Bootstrap and some Knockout, but eventually have stripped some things back to JQuery for more pure Javascript.
These frameworks (following applies more to Bootstrap) are tools to remove some of the "mundain" code a lot of common projects require to get started. But if you know how to write a html table in JQuery, there is not much need to port it over to be done in AngularJS, performance might even be worse on larger projects.
or the dozens of minor tweaks that business asks for, that some frameworks just get in the way.
|
|
|
|
|
Only good developers struggle with this question.
Bad developers don't.
|
|
|
|
|
While I ask myself the question, I think your focusing on the wrong aspects of what a good developer is.
I think in terms of are my solutions flexible? Can we easily add in requirements? Does adding in something make the next change easier or harder? (While there are certainly helps with some frameworks, these questions are framework agnostic.)
Also of importance is: Am I a relevant developer? If I need to find another job, will my skills translate? I currently love where I am. But I always want to maintain a place were I can change employers when needed.
|
|
|
|
|
A good developer is one who can solve the problems put to them and do it in a manner that meets the client's expectations as elegantly and as safely as possible. My clients are my main yardstick here (I consider myself a "client" as well because I develop stuff for my use). If they're happy with the solutions I provide for them than I guess I'm "good". I also really enjoy the process of developing code
If you, as a developer, are not constrained by some particular requirement involving your tools then you can choose what to use. My clients don't care what language, framework (or brand of coffee I drink) during my development work, they want their problem solved.
I've been at this for 40 years. Sure, you learn new technologies as necessary to be able to develop to the platform you are writing to at the time. However just because a new framework or tool is made available does not mean you have to learn or use it just because it's the "popular" thing to do. Until and unless your tool set reaches some point where it can't produce due to a major platform change or something then you are under no constraint requiring that you upgrade your tools or your knowledge set.
A lot of developers succumb to what I call the "lemming" effect. Just because their peers (or the market) is telling them they need to be using the latest and greatest framework or IDE or reporting tool they dutifully "follow the crowd". A little independent thought should tell you to evaluate whether making said upgrade would really benefit you as a developer. If not, just continue to be creative with what you have in hand.
I develop primarily for the Windows desktop and some light web applications. The focus of my development is to keep things as butt-simple as possible. It's not easy to keep things simple when you're constantly in upgrade mode.
I'm rambling now ...
|
|
|
|
|
I started "consulting" very early on; saw the inside of many shops.
Usually it was management's "style" that dictated how "good" IT's development efforts were.
|
|
|
|
|
What is the bloody point of commenting when everyone is a fool?
|
|
|
|
|
I was thinking about this very thing when I was reminded that a younger member of my team said that anyone over 54 is incapable of learning new things. So whether or not I'm a good developer, seeing that I'm an old developer now, it's irrelevant - I'm destined to become soylent green.
Tate Antrim
All around nice guy!
|
|
|
|
|
Tate Antrim wrote: I was thinking about this very thing when I was reminded that a younger member of my team said that anyone over 54 is incapable of learning new things. So whether or not I'm a good developer, seeing that I'm an old developer now, it's irrelevant - I'm destined to become soylent green.
Glad you didn't listen to the young smart-ass. Glad I didn't either. I'm about to turn 59 myself, I haven't figured out how to stop learning yet.
If you think hiring a professional is expensive wait until you hire an amateur! - Red Adair.
|
|
|
|
|
I've never considered myself a great developer. Even when I left a big company to start my own, where I was supposed to be the Dev-Guy. But I knew I was capable enough. More importantly, I was willing to do the following:
1. Listen to and really understand the needs of my clients.
2. Focus on how to make the UI work most efficiently for the end user.
3. Research to figure out an (not the!) appropriate technology for the solution.
4. Learn whatever is needed to use this technology - even if this is a completely new framework.
5. Work my backside off to get the solution implemented well.
6. Iterate as many times as required on #2 until it was right.
Personally, I think I am a rockstar at #2 and #5. But a great developer - no.
Leaning on the shoulders of giants, and following these steps, we almost always got the job done - for desktop, web, embedded, and hardware projects. And having been in business for over a decade, I guess we have done a few things right. Most importantly, now when I hire, I look for those who are always willing to work hard, learn, and improve.
modified 5-Dec-16 12:44pm.
|
|
|
|
|
I can count on one hand how many great developers I have worked with in my long career of 44 years (42 in the corporate environments).
I have lost count as to how many people I have worked with who thought they were great developers but in my view weren't. One such developer actually came over to my cubicle one day and stood there for around 20 minutes telling me how great he was as a trading developer.
Though I have been considered during my career to be a "super programmer", I just saw myself as someone who was very good at getting a job done with professional quality (or at least as much as my technical management would allow).
Many developers today seem to feel that they are good if they know all about DevOps and Agile, have worked in such environments, and have gained a knowledge of all the latest tools.
The problem is that all of this does not make a great developer or even a good one. I have worked with such people and have found them to be mostly meh... Yes, they could put an application together and quote the latest technical jargon. And they could one-up themselves quite well. However, could they get a professional quality job completed with coding that was very easy to read and understand. No.
One fellow I worked with who claimed to be highly knowledgeable couldn't understand one of my application's code-bases when it was left to him when I went on vacation.
My source-code was in fact very straight-forward and eschewed all the latest techniques in OOP programming. The application simply didn't call for it. Unfortunately, this poor guy couldn't understand the code without it being completely object-oriented including inheritance (which is a time-bomb simply waiting to go off if it is not implemented properly).
None of us are really great developers since quality code can come in many different varieties, all of which fulfills the requirements it was designed against. This is not a competition, though many make it appear to be.
What makes you "good" is if you can get a variety of tasks done with professional quality within a reasonable time period. DevOps, Agile, and the latest tools, practically all of which merely reinvent existing wheels that already work quite well, are nothing but distractions.
Besides, no one can keep up with all of this hype that is being promoted all over the industry.
I don't use ASP.NET MVC, JavaScript frameworks, fancy CSS, WPF MVVM, or database ORMs. All of it is just doing the same things that were already defined with earlier technologies that still work exceptionally well. Nonetheless, I can still produce a quality application that no one will ever have to complain about, which is exactly what a user wants since they really don't care about all your tools, design patterns, and whatnot. They just want your product to work and work well.
If you do that you are doing just fine...
Steve Naidamast
Sr. Software Engineer
Black Falcon Software, Inc.
blackfalconsoftware@outlook.com
|
|
|
|
|
Excellent post, Steve. My thoughts exactly. I've been at this for 40 years, myself.
|
|
|
|
|
Thank you for your appreciation of my comments.
Its good to see that there are still plenty of people who think they way I do towards all the latest product hype...
Steve Naidamast
Sr. Software Engineer
Black Falcon Software, Inc.
blackfalconsoftware@outlook.com
|
|
|
|
|
When my app generates me the winning lottery number, I will know that I am a great developer.
And I won't have to write another line of code.
|
|
|
|
|
It really doesn't matter. The current administration has doubled the number of H1B's again. you will soon be an unemployed or underpaid developer .
|
|
|
|
|
If you're delivering good quality software solutions to business problems in a timely and budget friendly manner, then you are probably a good developer. That said - how do you become a great developer?
First - develop your communication skills, both written and verbal. If you can't articulate your questions about the problems at hand, in a manner non-peers (or even peers in software development, for that matter) can understand, you're going to have a tough time delivering solutions. Furthermore, people will question your ability to deliver those solutions, if you can't speak about them in an intelligent and clear manner. So cultivate and nurture your speaking and writing skills. Also, for both, a bit of advice: Think before you speak. Pause, think about your answer or question, then communicate it. Don't just blurt out the first thing that comes to your mind as quickly as possible - some people won't understand it, and in many cases, it will be the wrong thing to say.
Second - develop your skills in understanding the business you are creating solutions for. If you don't understand the business, how will you know if the solution is correct for the problem? Furthermore, how will you know if the solution fits the problem at all, or whether there is a more holistic solution at hand - if you don't understand how the parts of the business fit together. Remember, sometimes the best solution to a problem involves the least amount of code. Also, more code means more stuff to break. Always look to simplify the problems and solutions.
Third - simple code is better code. It may not be sexy, it may not show "the world" your coding prowess, but it will be maintainable - both by future you, and other programmers who come after you leave. Strive to make your solutions as simple, and to the point as possible. Your goal should be writing less code. Your goal should also be to refactor old code to use less code (assuming you understand why the old code does what it does - which may or may not always be clear - don't ever remove or change code unless you know exactly what it was originally doing).
Fourth - don't get hung up frameworks or technologies. If you want to stay marketable, stay flexible: Strive to understand the common principles that underlie those frameworks and technologies. In many cases, most of them are reinventing the wheel - sometimes because of the famous "not invented here" syndrome. Don't succumb to the allure of that syndrome, either (at least with an employer - do what you want on your own time): In many cases, your solution will end up being worse than existing solutions, performing more poorly and doing less. Instead, seek solutions that already exist, and try to extend them, or build on top of them.
Fifth - "Good programmers write good code; great programmers steal great code." Learn it, understand it, and live it. Furthermore - always give credit where credit it due. I'm not saying all answers are found on Stack Overflow, but you need to know how to frame a question when searching for an answer, and how to look at those answers you do find in order to understand whether they are valid and can work in your situation - or can be made to work. Cut and paste won't get you very far before it bites you, but sometimes the answer to a difficult problem can be found online with proper searching, understanding the problem, and knowing how to fit the answer pieces together into a final working solution.
Ultimately, never rest on your laurels - keep striving to improve your knowledge. Ideally, study old solutions (for instance, in the field of machine learning, you wouldn't believe how many algorithms and other solutions are based on things created or discovered 40-50 years ago). Never fear to venture outside of your comfort zone - if something seems too difficult to learn, then it is probably the one thing you should try to learn. Pushing yourself on new skills is what will really set your knowledge and imagination free.
Finally - don't be afraid to fail. When you do, pick yourself back up, reassess the situation, and give it another go.
|
|
|
|
|
I had thought about this question for myself a few years back. I, specifically, like the answer by Jon Mckee. Looking at the technology landscape 15 years back and now, there has been so much of change and the way it has evolved. Its practically impossible for any developer to keep up with a lot of these new technologies. And, unfortunately, a lot of companies that use these technologies are run by people who know how to do business & make money very well, but not really much about these technologies. Hence, comes the trend of picking up the popular technology in the market and using it for their requirement. Its a really complex world to be wondering about these things or summarize them in a paragraph for that matter.
My two cents is that one should be really focusing on things that really matter like basics, algorithms, design patterns, cryptography, understanding framework's underlying code. I think a lot of developers out there today learn technology without understanding the underlying concepts & intricacies. For example, there is lot of market for AngularJS, but it is built on JavaScript and how many out there actually bother about understanding it? Its might be easier and quicker to code in Angular but incomplete knowledge will introduce a lot of bugs and problem in the deliverable at later point of time. Developers are being judged based on a race between what is needed and how quickly it can be delivered. The moment one tends to learn these technologies for the sake of keeping up with the race, the developer in them is on the way to a dead end. New technologies and frameworks are going to evolve and get released faster than ever.
|
|
|
|
|
Simple:
According to the Dunning Kruger effect ( Dunning–Kruger effect - Wikipedia[^] ) if you question your depth of knowledge, you are more likely to be good at something.
People who don't know enough to know what they don't know - are usually overconfident.
Conversely - talented people tend to question themselves more - because they know they don't know it all.
|
|
|
|
|
No matter how much you push the envelope...
...it'll still be stationery.
Bonus:
Let's eat, mom.
Let's eat mom.
------------------
Punctuation saves lives!
What do you get when you cross a joke with a rhetorical question?
The metaphorical solid rear-end expulsions have impacted the metaphorical motorized bladed rotating air movement mechanism.
Do questions with multiple question marks annoy you???
|
|
|
|
|
|
Brisingr Aerowing wrote: Punctuation saves lives! ..is a joy forever
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
And I had Leslie yell at me when I posted this joke a month ago. The Lounge[^]
Software rusts. Simon Stephenson, ca 1994. So does this signature. me, 2012
|
|
|
|
|
|
|