Tell me more ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I really don't know if this is the right place to ask this question, but if it isn't, then I guess someone will notify.

Anyway, I am working in a software development farm which is currently using PowerBuilder to develop a mid-size ERP solution. The work environment and company management are so great that it may be the best in the whole country. Only problem is the technology that are currently being used, which is this PowerBuilder.

Now I am a guy who tends to prefer modern development technologies, like DI containers, ORM, TDD, JQuery etc. PowerBuilder is a great tool too, but I couldn' like the application techniques used to build PB applications. These techniques are so inheritance-dependent that many a times these create a great deal of sufferings. I remember two days ago I had to change some processing logic in a core user object and as a result I had to test and re-test all the forms that the application have(apparently, there are almost 20 forms there, each of them with 3-4 kinds of functionalities). Also, learning PB is tough, because online material on this thing is very, very low. I can't afford to read all the documentation that PB provide because I have hard deadlines on the work that I have to do. Another thing with PB is that applications tend to rely on business logic that are implemented on databases which causes debugging to be a nightmare.

As a result, I don't feel motivated enough to work in this IDE/System/Framework (or whatever) anymore. My productivity has greatly decreased, and I am not delivering quality code.

I think I have the following options available to me -

  1. Remain in the current job, keep delivering worse code and let my productivity decrease day by day, taking salaries and bonuses but not delivering quality codes/doing my job the way I should,
  2. Search for a new job.

At this point number 2 seems a good option, but there are also some issues. As I mentioned before, our management may be the best in the country. Our company owner is himself a software developer with 24 years of experience in software development. He is currently our Team Leader and System Analyst. He is by far the greatest manager and boss I have ever seen. He understands developer's mentality very well(as he IS himself a developer). He is also a great, kind and generous guy. Our company is only a start-up company with 10 developers. Among them, only 3-4 people knows about the business logic behind the ERP, and I am one of them. If I switch my current job, it may hamper the development of this product which I really don't want.

I couldn't decide what to do in this situation, so I turned to the community for advice. Thanks guys for all of your suggestions.

share|improve this question
2  
On programmers.SE, and it will be automatically migrated there once the close vote is finished. So no need to repost there. – CodesInChaos Feb 5 '11 at 9:37
1  
That person was me. I think it's a better fit there, as it's not about a specific programming problem. That doesn't mean I think it's a bad question, though. And as CodeInChaos says, it will be automatically migrated there. When that happens, if you don't already have an account there, signing up for one will allow you to regain ownership to your question. – Cody Gray Feb 5 '11 at 9:40
1  
@Sayem : Read the f*cking manual, how hard it seems. There should be an index on it to guide you through it about as fast as typing everything in Google. It will take you two weeks, but add all time you lost Googling around, waiting for answers and hideously trying to get something to work. You would have read the manual twice by now I guess... It's not a loss of time, it can actually help you get your deadlines faster. – Joris Meys Feb 6 '11 at 0:52
1  
@Archangel : What I meant is read it gradually whenever you encounter a problem. I have my manuals next to me, and if I get stuck, first thing I do is browse through the index of those manuals looking for the relevant paragraphs. I don't see a manual as a book you have to read from first to last page, it's more an encyclopedia of knowledge. YMMV – Joris Meys Feb 6 '11 at 10:52
1  
"Another thing with PB is that applications tend to rely on business logic that are implemented on databases" This is a good point not a bad one! People who rely on this stuff on the applications end up with databases that have data integrity problems and are essentially useless stores of incorrect data. – HLGEM Feb 14 '11 at 19:57
show 5 more comments

migrated from stackoverflow.com Feb 5 '11 at 9:45

closed as not constructive by Yannis Rizos Mar 8 '12 at 14:41

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or specific expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, see the FAQ for guidance.

12 Answers

up vote 7 down vote accepted

Your boss took the attitude of, "Worse thing that can happen is I have to build it myself, so we have to do it in a language I understand." Happens to the best of them. He must have hired the rest of you because he wanted good programmers and not just those who can use PB.

You need to consider your other options. Working for people you like and respect is important. Cutting-edge technology is great, but working for an idiot is not. I know you don't like PowerBuilder and feel like you are not doing well, but your boss does and that is important. I don't think it will stay like this forever. After this experience, maybe you can convince him to do the next project in something else. He probably trusts his team a lot more now.

Personally, I would stay and talk to the boss about the future of the company, the technology and how they relate to what you need for your career. Keep your eyes open for a better job (always), but don't give up on this one.

share|improve this answer
And another thing. He has sufficient knowledge in other languages (J2EE, C#, J2SE, ASP.NET, PHP) too, but for some strange reasons(strange to me, of course), he absolutely loves PB. – HEAVEN'S TEAR Feb 5 '11 at 15:05
Sounds like an interesting person that would be worth spending some time; maybe you should try to schedule some working lunches? – JeffO Feb 5 '11 at 22:16

With such an experienced boss that you clearly look up to, have you considered talking to him about your concerns about the tooling? It may well be that you just need a mentor to show you how to do things efficiently, by knowing the tricks and the things that don't work.

Also, a good craftsman can still do a reasonable job with inadequate tools.

share|improve this answer
3  
Loose a day if StackOverflow doesn't respond immediately?? Don't you have other problems you can work with, while an answer is pending? Frankly I believe the best thing you can do regarding your career is demonstrate that you can be pragmatic and learn the necessary tools and be fast at it too even if you have developed a dislike for the tools. Currently it looks like it is the craftsman blaming the tools and the employer for doing a slow job, sorry. – user1249 Feb 5 '11 at 12:35
1  
@Sayem Ahmed - I have a hard time believing that an experienced developer helped you code over your shoulder for 3 months on a language you never used before and you didn't learn a lot. – JeffO Feb 5 '11 at 14:32
@Jeff: Yes, I learned a lot to complete my job. But not ENOUGH. Why I am saying that? Because recently I have been told to develop a component on PB that will run on IIS and facilitate communication between the PB application and front-end ASP.NET web pages. 3 days have passed, and I am still standing where I was three days ago. That has never happened to me before( I have worked on Java, C#, ASP.NET, PHP, JQuery etc. etc.), and I thing it's pretty bad for me. – HEAVEN'S TEAR Feb 5 '11 at 14:37
1  
@Sayem, I think you should communicate what you've said here to your boss to allow him to compensate for your short-comings as soon as possible. This might save you from some very embarrassing situations closer to the deadline. – user1249 Feb 5 '11 at 14:51
@Ravn Andersen: Thank you, I will certainly do that. – HEAVEN'S TEAR Feb 5 '11 at 14:52
show 1 more comment

If you dive into (learn deeply) a programming language, you will find more fun than you expect.

It seems current company is so nice that you cannot take a risk to leave it. If you stay the company, you have to use PB. You could choose to increase interest on PB. If you are good at something, you will like it.

By the way, something as TDD is sort of development methodology, you could try using them in PB. Sorry I don't use PB so far, cannot say more about PB.

EDIT: Limited PB resource is same to every developers, so if you are better than other PB developers, it's ENOUGH. Deadline is not dead if even you such a qualified PB developer cannot finish it:)

share|improve this answer
Yes, TDD is supported in PB. But the way someone have to implement it is messy. And I am trying to dive deeper into PB, but it is becoming difficult because there isn't much resources available on the internet. Try searching google or posting a PB question on SO, you will understand. The only way to dive deeper into PB is to read the humongous documentations, but it won't help me to complete my work within the deadline, so I don't see it as an option. – HEAVEN'S TEAR Feb 5 '11 at 10:34
TDD in PB??? I'm sorry I really like PB for it's unique capabilities compared to other modern languages such as binding SQL to datawindow immediately, but I would rather shoot myself in the head than try to make TDD happen. – l46kok Dec 5 '12 at 12:37

There must be a reason why the boss decided to use PowerBuilder for that project. Either he is ignorant to more modern technologies, or he has good reasons and maybe you are not using the tool appropriately. If he is ignorant, you could try to convince him to use a state-of-the-art technology or look for another job; in the other case, ask him to show you how to do it better.

share|improve this answer
1  
yes, he had a reason. He wanted to develop a product of for his company that will generate enough revenue so that we can run our business. Since he has more experience in PB, he chose it for development. But I think it has back-fired, because every one of us was completely ignorant of PB when we took this job. He didn't have enough time to train us well. First three months of my employment he was sitting right beside me almost every day to do the work that I was supposed to do. It finished the job in time, but I couldn't learn much. – HEAVEN'S TEAR Feb 5 '11 at 9:56
2  
Doesn't sound like a great manager then. He might be nice an generous, but his manager skills seem lacking. – user281377 Feb 5 '11 at 10:00
No, I think he is a great manager. He just....trusts and relies on us more that he should. – HEAVEN'S TEAR Feb 5 '11 at 14:57

Different languages and tools have different patterns and techniques that they require for effective use. Your boss has been using PB effectively, so he must have patterns and techniques that work well for him. The problem may be that he's not able to tell you how he's able to use PB effectively.

The best way to proceed may be another pair-programming session, but you need to sit at the keyboard instead of your boss, and have him guide you. As you work, make sure you understand the reason behind all of the steps. If there's anything you have questions about, interrupt him. Don't worry about slowing down productivity; that's not the goal of this session. What you want is to transfer as many of the patterns and techniques from his head to yours as possible.

share|improve this answer

Sayem, I feel like I know you because I've communicated with you on StackOverflow before. In fact, I deal with the same situation you deal with, in that everywhere I've gone they have PB. And like you, I've wanted to broaden my language exposure but have struggled to do so.

A Comment about PB

But the issue isn't PB, the issue is legacy PB. I don't know how old your code base is, but in about 100% of the PB apps I've seen, none of them used OO they way they should have. They were all hacked together with procedural language techniques. It's not that you can't do test driven development in PB, it's that the testing hasn't been easily integrated into the IDE and wasn't a part of that product's development foundation. It's understandable, because when PB was made, TDD and even agile techniques hadn't been invented or weren't common yet. PB is not the only tool that has this problem.

However, if I had to build something reasonably fast that needed to hit a database, using PB would not be my excuse for low productivity. Inexperience with PB, or any tool, can be an issue, but not PB. Also, you seem concerned about inheritance, but you'll find inheritance in other languages too. Again, in this case, it seems the inheritance framework that was created wasn't designed with a great deal of forethought, and that's a problem with the way the app is built, not with the OO concept of inheritance.

Where I agree with you is that PB's third-party support lags behind the competition. Like you, I've looked across the hall at .Net development teams that seem to have an endless and mostly free supply of third-party tools at their disposal, from ER frameworks to simple utilities, not to mention about a hundreds books and forums.

How to Change a Tech Stack

Now on to your question. How do you get into a new technology stack? Like some others have said, if your company is dead set on a given technology and has no interest in moving on, you might have to leave.

Leaving

First, build some knowledge on the side. It's hard to move to a different tech if you have no experience. HR drones will look at your resume and see that there isn't any Java or whatever on it, and throw it out. You could also just lie on the resume...some people do that, and if the interviewers aren't technically strong, then you might find a place you can get in.

The other thing is to use your network. I am still doing PB, but switched to a job that was in a new business domain. I am having to learn a lot fast, but not having to struggle with the technology is nice. The product I'm supporting now is moving to .Net and that's a transition path that plays nicely into what I wanted to do. I got this opportunity through a contact that was able to vouch for my diligence and work ethic. I'd probably not have gotten it without that endorsement.

Staying

As Jeff O said in his post, there are some good reasons for staying and one of the big ones is having a good boss. Another is having a good team. That's not to say you couldn't get a good boss and team elsewhere, but they are reasonable reasons to stay.

If you can't get the technology to change and you decide to stay, I can only think of a couple things.

  • Commit to being an expert. It really sounds like you're not motivated but you have to find a way to become motivated. Don't complain that reading the humongous documentation takes time. Find a way to learn it. It could be worse, there might not be any documentation. As you build expertise, your productivity will improve. It'll improve anyway if you commit to staying and keep building experience. And keep refactoring the code, that will bring gradual improvement into the code base that may help with some of your frustrations.
  • If you really just can't stand it, then don't give extra to the company. Do a good job, but in your free time instead of improving your PB skills, do your own projects in the other languages, or get involved in open source.
  • Move to a different position in the company. Management, project management, business analysis, testing, sales engineer. In fact, you seem to have a good rapport with your boss. If you can convince him to let you be the system testing architect, then you can introduce TDD to your company and be a force behind changing the code base to support test harnesses. However, this would be a difficult task and I doubt most business managers would want to invest that kind of time and money into it.

Whether leaving or staying, there will be some extra investment on your part to make changes. One last comment: if you are truly unhappy and feel that the technology is the focal point of this, then go ahead and move on. Given some of the issues with legacy PB code and the dwindling number of new PB projects, I can understand your wanting to make changes. But if you are basing your happiness on a tool, understand that it won't be long before another tool comes along that's better and you might find yourself looking again.

share|improve this answer
But thank you for your answer though. I will certainly keep this in mind. – HEAVEN'S TEAR Feb 5 '11 at 16:12
@Sayem Ahmed. Don't give up. If you already know the technology you want to move to and have experience, then you're ahead of a lot of developers that might be stuck in a language but for the same reasons as you find it difficult to learn a new one. As for the development approach, lots of developers don't understand OO, TDD, etc, but there are many jobs like that supporting an existing app where those things aren't used. In this case, you have to grow it internally or find a place that does use it. It's hard to do it internally if no one else cares for it. – Bernard Dy Feb 5 '11 at 17:32

It may not be an option, but have you explored the possibility of using an alternative IDE for your work? I imagine that whatever minor interoperability problems might arise would be but small penance for you to pay to be able to work in the environment of your choice. By that I mean, you might have to jump through more hoops to check your work into and out of source control, because it isn't integrated with your alternative development environment. But if you otherwise got to spend most of your day in the software of your choice, you would probably be willing to take on the extra work.

For example, I see no reason why a developer working in a shop that primarily used Visual Studio for C++ development wouldn't be able to install Eclipse and use that instead, if she preferred.

I've even heard stories about a few renegade individuals who can't stand the idea of using an IDE for development at all. Lore has it that they write entire, enterprise-level projects in something like Notepad++. I doubt that has much effect on the rest of the team, as long as they produce quality code.

share|improve this answer
The IDE is a problem, and so is the development approach. Only inheritance-dependent development and implementing core business logic on the database have their issues. Just a few days ago I had to test and re-test every form the application have because of a minor change in a core user object, and I think there are still a lot of changes yet to come. – HEAVEN'S TEAR Feb 5 '11 at 9:42
@Sayem: So the issue of more of your team's approach to development sucks, rather than the specific tools that they use? I'm not really sure why you're even thinking of staying at that job, then. Definitely explore other options if you're not happy with the way the team works. Spending all day refactoring and re-testing other people's code isn't that much fun (for most people). – Cody Gray Feb 5 '11 at 9:45
@Cody: Yes, the approach is also messy. But as far as I have learned, PB uses these techniques to develop database-centric applications. So I can't really blame my team for it. The problem is, our boss seems to be in LOVE with PB, and he just can't let it go :-( . – HEAVEN'S TEAR Feb 5 '11 at 9:48
1  
@Cody - Were you answering just in general? To the best of my knowledge (which isn't that great on this topic), you can't develop PowerBuilder in any other IDE. And the problem is really the whole system/framework, NOT just the IDE. – DVK Feb 5 '11 at 9:54
@DVK: You are absolutely right. That is what I am trying to say here. – HEAVEN'S TEAR Feb 5 '11 at 9:57
show 1 more comment

I had this same situation, in which changing the technology used was not an option (dictated by client).

If you feel it hitting your morale, or team morale, and it can't be changed/isn't going to get any better - get out while you can. I wish I had.

share|improve this answer

Our company has been using powerbuilder for two decades. Recently we looked into powerbuilder.net. It might be worth a look.

Plus if you start new projects or internal tools you can try to convince your boss to use the newest technologies.

share|improve this answer

It seems the issue is not whether PB is a good tool or not, but your lack of motivation and mindset. Sometimes as developer you are confronted with things and situations that are not that appealing but as a professional, you need to make the best of the situation.

In my opinion there is always something to learn from each environment and language and PB is no different, for instance they have the concept of data window which until this day, is a very powerful concept. I am not trying to sell PB in any way (even though at one time I worked on the compiler) but as a piece advice you need to start thinking beyond tools and think about the goal. To produce software.

share|improve this answer

I think, you can try to convince your boss to do a pilot project with the latest technology stack you(and may be your other colleagues) are familiar with. If you can make him happy with that project, you may expect to have a shift to that technology later. And as you are having hard deadlines, you may consider to do the pilot project in your own spare time, not in office hours.

share|improve this answer

Lets divide it to 3 problems.
1. Learning Curve
2. Technology
3. Management

Learning Curve
In technology that i known(C++,C#), if you need to resolve non-usual task. You will find yourself in same problem like yours : no info on the web + hard to understand API.

Technology
The PB supporting call from external dll, so each tasks that other language use better then PB, you can call it from dll.

Management
Management that deciding what exactly technology to use, can't be defined as best management in the town :).
Management must want an results, and see your development as black-box.
(Of-course management must decide large scale decisions (in technology too))

share|improve this answer
The concepts are differ by software parts, so you doesn't have any global concept in any (big enough) language library. – Avram Feb 5 '11 at 13:59

Not the answer you're looking for? Browse other questions tagged or ask your own question.