Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I remember years ago having a senior developer say to me "don't use software patterns they will only make things complicated, you'll regret it in the long run." I scoffed at him, sat down with my books and learned al sorts of things.

After say 5 years I understand what he was saying to me know. Patterns are patterns, they implement themselves when you need them. All you need to know is how not to do it badly. You shouldn't be trying to implement patterns if you don't need them.

I know its a high horse position, because you need to go through a phase of using them to understand why they aren't a miracle cure. o I find the the growth/education of a programmer some what similar to the articles notion.

For reference any younger dev out there that looks at the work senior devs and thinks to themselves "why are they senior? there work is obviously rubbish", you'll probably end up that senior dev one day.

In my experience most senior devs have been like you... perfectionists, aborbsed with the latest greatest etc... and you learn over time all that really matters is delivering on time, code management, and getting burnt by the latest and greatest really sucks.

So you slowly stop writing over engineered code. That often means doing things a basic way, so people in the team aren't left behind that don't understand, understanding your code isn't that critical... whats critical is finishing on time, that optimisation is the last thing you do because it takes to long and you really don't know if what you are writing deserves so much attention (i.e. if it takes off revisit the code, if a choke point starts appearing then optimise). Basically don't waste time on problems which don't exist, don't create stress for yourself/team/management by over engineering solutions.

Next time you wonder why a senior dev seems to be hopeless ask them why they choose to deliver a solution like a beginner and maybe you'll learn something invaluable ;)



Patterns are patterns, they implement themselves when you need them.

That has been my understanding. I consider that the only practical reason to review design patterns is so you can communicate the style of code to another.

After a while as you program you look through the code and see the needed meaning, shaping the code to conform to the meaning better.


Yep I know exactly what you mean. What I find kind of interesting is I would feel nervous having myself from 5 years ago in my team today.

That guy was pretty damned sharp, worked long hours, researched implemented push boundaries, and delivered some stuff I'm still proud of. But he had something to prove, he put meaning into things that didn't want or need meaning. Over engineered everything.

But a calmer/mature more strategic me says I don't need mavericks on business automation software. I'd be watching me like a hawk, because I made mistakes, big ones from time to time (my favourite was a system failure costing €50,000 in lost revenue... all my fault, I was literally told to clear my desk and was marched out the door).

You need those mavericks to push boundaries, its fun to be one, but boy its disconcerting when you have one in your team and all you need t do is deliver is a CRUD application.


I made mistakes, big ones from time to time (my favourite was a system failure costing €50,000 in lost revenue... all my fault, I was literally told to clear my desk and was marched out the door).

I wish we shared more of these tales of mistakes. It seems to me that the current software development environment involves an attitude of shame over mistakes or simple ignorance, to the point that it becomes a political battle simply to get a developer to admit fault. The only place I know that discusses mistakes would be something like the Daily WTF, where snark and condescension are the name of the game (not that I don't enjoy reading it...).


I definitely agree. That particular incident destroyed my confidence for a short while. If it was for a chain of events mainly already having another position lined up it could of had significant impact on my long term confidence.

I become a fan of agile for that reason. I found agile created "chummier" teams. I don't think it made for better project delivery, but I did find having a morning meeting made risks apparent and made people more confident to raise issues before they snow balled, and people didn't blame each other the same way. Discussion/communication is basically everything to successful delivery in my books.

I picked up a neat pseudo meeting trick I use every day now (even in big water fall projects). I go for coffee down the road. It takes like 15 minutes and the benefit well outweighs the negative.

The benefits being a casual discussion abut whats going on where people say things they probably wouldn't normally. Its best to weight till after everyone has done there morning emails, so maybe 30-60 minutes in then the gossip gets going. The amount of spite I have heard spewed about clients/vendors/colleagues you wouldn't hear otherwise is astounding. Its the casualness of the walk and cafe that lets people vent. But you have to get out of the office, you have to get away fro the structure, and away from people that may over hear the criticisms.

Also its not about a team meeting, people won't come and blurt out whats really on there mind if they think its going to get recorded and itemised. Remembering if they have read/replied to there emails before you head out. Then thats mainly whats going to be no there mind, they will bring up the problems because they are at forefront of there thinking. Its all about keeping things casual.

On the other days when things are running smoothly you get to know them more on a personal level, talk about there kids, cats, skiing, what ever. Just casual gossip and of course its team bonding. When you get to know people a little better it makes interacting with them easier, raises issues/problems etc.. isn't going to be such an assault on someone. Even just the effort of inviting someone that doesn't drink coffee goes along way.

Can't recommend it enough.


You've got a +1 from me.

I distinctly remember scoffing at the old stagers for not getting onto the latest and greatest bandwagon.

I certainly hope some of my early bloatware has died it's natural death.

To their credit I was often indulged with my acronym love in the early days by the old stagers. I guess they see it as a process you have to go through, and if they see potential, are willing to let it slide with only a couple of pointers.

Get back to basics. Deliver results. 80/20 analysis on everything that you do. Don't ever insert an abstraction layer until you can explain to someone within 30 seconds where the true business value lies in that layer.


A program I'd written once got chastised by a young developer: he found it oldfashioned, "not of this time". After some asking about what he meant, I found out his main gripe was that the GUI controls like listviews, tabs, buttons etc. didn't look like the 'aero' styled ones you see in Windows Vista and 7٭. When I invited him to reimplement part of the program according to his taste, he made a start but quickly chickened out as he realized how much work had to be done in the background to make the GUI support the user instead of the developer.

٭) The app's controls look simple and grayish like in Windows 2K. No color effects. No translucency. No skinning. This is an app that dozens of people use on a daily basis and it makes an effort to let them do things fast and accurate with the least chance of surprise and/or annoyance. No user of the app has complained to me yet about the lack of eye candy; they do appreciate snappy response times, tho ;-)




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: